This is not a question, but rather an answer.
One part of the issue is available here: How to install program shortcuts for all users?
Quote:
"... How do I let the installer create a shortcut under the All Users profile, so that everyone on the machine has the shortcut?"
Another - here: Wix create non advertised shortcut for all users / per machine
Quote:
"... In the tutorials I've seen use a registry value for the keypath of a shortcut. The problem is they use HKCU as the root ..."
The main difficulty in creating an uninstall shortcut.
The solution is based on Rob Menching's blog post How to create an uninstall shortcut (and pass all the ICE validation).
<!-- Script from Rob Menching's blog post -->
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="PUT-GUID-HERE"
UpgradeCode="PUT-GUID-HERE"
Name="TestUinstallShortcut"
Language="1033"
Version="1.0.0"
Manufacturer="Microsoft Corporation">
<Package InstallerVersion="200"
Compressed="yes"
InstallScope="perMachine" />
<Media Id="1" />
<Directory Id="TARGETDIR"
Name="SourceDir">
<Directory Id="ProgramMenuFolder">
<Directory Id="ShortcutFolder"
Name="My Application">
<Component Id="UninstallShortcutComponent"
Guid="PUT-GUID-HERE">
<RegistryKey Root="HKCU"
Key="Software\[UpgradeCode]">
<RegistryValue Value="RobMen Was Here."
Type="string"
KeyPath="yes" />
</RegistryKey>
<Shortcut Id="UninstallProduct"
Name="Uninstall My Application"
Target="[System64Folder]msiexec.exe"
Arguments="/x [ProductCode]"
Directory="ShortcutFolder"
Description="Uninstalls My Application" />
<RemoveFolder Id="RemoveShorcutFolder"
On="uninstall" />
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id="TestUninstallShortcut"
Title="Test Uninstall Shortcut Feature"
Level="1">
<ComponentRef Id="UninstallShortcutComponent" />
</Feature>
<CustomAction Id="LaunchApp"
Directory="TARGETDIR"
ExeCommand="[System64Folder]reg.exe Delete HKCU\Software\[UpgradeCode] /f" />
<InstallExecuteSequence>
<Custom Action="LaunchApp"
After="InstallFinalize">(NOT Installed) OR UPGRADINGPRODUCTCODE</Custom>
</InstallExecuteSequence>
</Product>
</Wix>
In this example:
In the item "Package" added InstallScope ="perMachine"
Changed the registry key to "Software\[UpgradeCode]"
Added CustomAction LaunchApp
to remove the unwanted registry key.
Tested on WinXP 32bit and Win7 64bit.