Stuart Breckenridge

Signing Emails with Outlook 2013 on Windows 10

For outgoing email I always sign with a digital signature. After installing Windows 10 and Office 2013 I added my certificate, but every time I attempted to send an email I got an error which stated:

“A required action was not successful because of an unspecified error.”

The Windows Error Department

Not even slightly helpful. I tried everything: from running as administrator to installing Outlook 2015 on the Mac and testing the certificate there. It was only an issue with Outlook 2013 on Windows 10.

It turns out the fix is pretty strange:

  1. With Outlook not running, fire up Command Prompt as an administrator.
  2. Type sfc /scannow1, and hit Enter.
  3. Wait till this completes…
  4. Open Outlook and send signed emails.
  1. System File Checker is a utility in Windows that allows users to scan for corruptions in Windows system files and restore corrupted files. ↩︎

— Supported by —

FATCA Metadata for Windows

Metadata Screenshot

I’ve been playing around with C# and Visual Studio recently and my test project was to build an app—in this case a Windows form—that took user data, validated it, and then created a correctly formatted XML file that could be used as part of annual FATCA submissions. As part of this learning process two technologies stood out as really impressive: XDocument and ClickOnce Deployment.

The XML file I wanted to create was pretty simple:

<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2014 rel. 2 (>
<FATCAIDESSenderFileMetadata xmlns="urn:fatca:idessenderfilemetadata" xmlns:xsi="">

Creating this on a Mac using a technology I’m familiar with—NSXMLDocument—is simple, if overly verbose:

func generateXMLFile() -> NSXMLDocument
    // Header
    let xmlFile = NSXMLDocument()
    xmlFile.version = "1.0"
    xmlFile.characterEncoding = "UTF-8"
    xmlFile.standalone = true
    xmlFile.addChild(NSXMLNode.commentWithStringValue("FATCA Report") as! NSXMLNode)
    // Root Element
    xmlFile.setRootElement(NSXMLElement(name: "FATCAIDESSenderFileMetadata"))
    xmlFile.rootElement()?.addNamespace(NSXMLNode.namespaceWithName("", stringValue: "urn:fatca:idessenderfilemetadata") as! NSXMLNode)
    xmlFile.rootElement()?.addNamespace(NSXMLNode.namespaceWithName("xsi", stringValue: "") as! NSXMLNode)
    // Child Elements
    xmlFile.rootElement()?.addChild(NSXMLElement.elementWithName("FATCAEntitySenderId", stringValue: "000000.00000.TA.840") as! NSXMLNode)
    xmlFile.rootElement()?.addChild(NSXMLElement.elementWithName("FATCAEntityReceiverId", stringValue: "000000.00000.TA.124") as! NSXMLNode)
    xmlFile.rootElement()?.addChild(NSXMLElement.elementWithName("FATCAEntCommunicationTypeCd", stringValue: "NTF") as! NSXMLNode)
    xmlFile.rootElement()?.addChild(NSXMLElement.elementWithName("SenderFileId", stringValue: "000000.00000.TA.840_Payload.xml") as! NSXMLNode)
    xmlFile.rootElement()?.addChild(NSXMLElement.elementWithName("FileFormatCd", stringValue: "XML") as! NSXMLNode)
    xmlFile.rootElement()?.addChild(NSXMLElement.elementWithName("BinaryEncodingSchemeCd", stringValue: "NONE") as! NSXMLNode)
    xmlFile.rootElement()?.addChild(NSXMLElement.elementWithName("FileCreateTs", stringValue: "2015-06-30T00:00:00Z") as! NSXMLNode)
    xmlFile.rootElement()?.addChild(NSXMLElement.elementWithName("TaxYear", stringValue: "2014") as! NSXMLNode)
    xmlFile.rootElement()?.addChild(NSXMLElement.elementWithName("FileRevisionInd", stringValue: "false") as! NSXMLNode)
    return xmlFile

Now, compare that to XDocument:

XDocument generateXMLFile()
			XNamespace metaNS = "uri:fatca:idessenderfilemetadata"
            XDocument xmlFile = new XDocument(
                new XComment("FATCA Report"),
            new XElement(metaNS + "FATCAIDESSenderFileMetadata",
				new XAttribute(XNamespace.Xmlns + "xsi", ""),
                new XElement(metaNS + "FATCAEntitySenderId", "000000.00000.TA.840"),
                new XElement(metaNS + "FATCAEntityReceiverId", "000000.00000.TA.124"),
                new XElement(metaNS + "FATCAEntCommunicationTypeCd", "NTF"),
                new XElement(metaNS + "SenderFileId", "000000.00000.TA.840_Payload.xml"),
                new XElement(metaNS + "FileFormatCd","XML"),
                new XElement(metaNS + "BinaryEncodingSchemeCd","NONE"),
                new XElement(metaNS + "FileCreateTs", "2015-06-30T00:00:00Z"),
                new XElement(metaNS + "TaxYear", "2014"),
                new XElement(metaNS + "FileRevisionInd", "false"),
            xmlFile.Declaration =  new XDeclaration("1.0", "utf-8", "true");
			return xmlFile;

XDocument, in comparison to NSXMLDocument, is both simpler and more concise. However, I think Swift itself also contributes to the complexity with constant forced as! conversions for each element. It’s generally very untidy.

With the app built, I started looking at how it could be deployed and immediately came across ClickOnce. ClickOnce is an easy to use deployment technology that lets you publish self-updating applications. For this app, I’ve chosen to deploy via my website. It can be installed via the link at the end of this article. Despite ClickOnce ease of use, the issue I’ve found is with Windows SmartScreen which prevents the app being installed until it’s built up enough reputation. This is somewhat annoying considering the app is code signed (see the note at the end of this post).

The app is open source and available on GitHub. Or you can simply install it by clicking the button below.

Install Now User Guide

Code Signing: You may see installation warnings; however, as long as you see my name in the Publisher section (below), you can be almost sure that the code hasn’t been tampered with.

Gears of War is Still a Mad World

…nearly nine years after the launch of Gears of War, Microsoft’s created an homage to the 2006 Mad World trailer with its launch trailer for Ultimate Edition, due out on Xbox One later this month. It’s not exactly the same as the (superior) original, with different footage used throughout. But the trailer’s going for the same melancholy effect.

Wesley Yin-Poole

There are so many remasters being released for this generation of consoles that it’s becoming somewhat irritating. That said, the trailer for Gears of War: Ultimate Edition is still very good (though it’s ruined by the Xbox plug at the end).

Star Wars-Themed Lands Coming to Walt Disney World and Disneyland Resorts

“I am thrilled to announce the next chapter in the long and exciting history between Disney Parks and Star Wars,” said Iger. “We are creating a jaw-dropping new world that represents our largest single themed land expansion ever. These new lands at Disneyland and Walt Disney World will transport guests to a whole new Star Wars planet, including an epic Star Wars adventure that puts you in the middle of a climactic battle between the First Order and the Resistance.”

Bob Iger

This is worth the 28 hour (minimum) flight from Singapore to San Diego.

Boot Camp Now Supports Windows 10

Boot Camp 6 also includes support for several Mac features within Windows 10, including USB 3, USB-C, Thunderbolt, built-in SD and SDXC card slots, built-in or external Apple SuperDrives, and the Apple keyboard, mouse and trackpad.

Husain Sumra

I’m interested to see if the new version of Boot Camp—version 6—resolves the issues I’m having with installing any version of Windows on my 3TB Fusion Drive: it continually places the Boot Camp partition outside the 2TB boundary supported by Windows (see this issue).1

I have, however, been running Windows 10 on my MacBook Pro under the previous version of Boot Camp without issue. While it’s certainly a solid release, I think streaming games from Xbox One is my favourite feature.

  1. I have a support ticket open with Apple and they've suggested some of the weirdest things (e.g. remove the Windows USB install media after you've formatted the Boot Camp partition to NTFS).

    </li> </ol></div>