First, the CLSID you are using is different than the original example source. Perhaps you edited it to make it your own. Make sure you are using the same value as the attribute on the FileContextMenuExt
class.
WiX's heat.exe doesn't seem to support the codebase element. Perhaps the assumption is that since you are registering the COM assembly machine-wide, you would also put it in the machine-wide assembly location (i.e., the GAC). If you do, codebase won't be required.
heat file ...
will generate everything except the Codebase element but you've entered that by hand, I see. You also have the other required registration entry, *\shellex\ContextMenuHandlers
. It's an application-specific element so it can't be generated. But, you also entered that by hand.
Finally, the installer and explorer.exe have to have the same "bit-ness." Otherwise, the installer might make registry entries for the 32-bit explorer.exe where the 64-bit explorer.exe won't see them. To deploy the product, you'll have to have an x86 and an X64 build of the installer. You can explicitly set the Platform for the package in the Wix/Product/Package
element.
Other than that, your Product.wxs
"works on my machine."