Automatic account creation is now enabled. Captcha authentication required for account creation and editing unless you are trusted here.
ICE38
From WiX Wiki at MindCapers
Problem description
Attempting to compile and link a Wix project produces a message similar to the following.
'''ICE38''': Component ''<dirname>'' installs to user profile. It must use a registry key under HKCU as its KeyPath, not a file.
Explanation
Depending on the value of the ALLUSERS property, the installation target folder may be in a per-machine or a per-user location. Since the run-time value of ALLUSERS cannot be anticipated, validation must be prepared for both cases.
Per-user locations may be virtualised by roaming profiles; application files may be absent altogether. Giving a potentially per-user component a per-user KeyPath (such as a registry value in HKCU) causes automated repair for new users who lack the files. This causes deployment of the files by automated repair when the application has been installed per-machine, a potentially sub-optimal user experience but safe in all cases.
Wix provides a way to change this behaviour by specifying component KeyPath using a registry value with a Root of HKMU. This special symbol resolves to HKLM or HKCU depending on the value of ALLUSERS, producing optimal behaviour in both cases. However, limitations of the ICE validation mechanism mean that this approach fails Vista Logo certification.
Microsoft is unlikely to change ICE validation in this respect, because the current behaviour is widely exploited by network administrators to perform automated rollouts: they simply install the application per-machine with the installer package in a network accessible location, and allow automated repair to deploy files on demand.
Solution
Add the following code to your directory creation section. The <RegistryValue> element fixes ICE38. You may have your shortcut definition within this component or place, such as a fragment. You also need to add a ComponentRef element to your Feature section.
<Directory Id='ProgramMenuFolder' Name='ProgramMenuFolder'>
<Directory Id='IDProgramGroup' Name='Company'>
<Component Id='IDProgramGroup' Guid='insert valid Guid here'>
<RemoveFolder Id='IDProgramGroup' On='uninstall'/>
<RegistryValue Root='HKCU' Key='SOFTWARE\Company\MyApp'
Type='string' Value='Hello World'
KeyPath='yes' />
</Component>
</Directory>
</Directory>

