3
votes

I am using wix to create a per-user installer. I have some experience with wix and windows installer, but only for per-machine installer, so I am currently discovering the pain of ICE38: Component xx installs to user profile. It must use a registry key under HKCU as its KeyPath, not a file.

At first I ignored the warning: every file was in its own component, but I didn't add a RegistryValue in the component so every file raised an ICE38. The files are properly copied to the user profile, and removed on uninstall.

However it feels awkward to get a warning for every file of the installer and just ignore it. Adding a RegistryValue element under each component makes ICE happy, but it is cumbersome as I have 50+ files and heat does not seem to be able to generate those automatically (please correct me if I'm wrong). Moreover, I do not understand why a file cannot be a KeyPath in a per-user installation, and adding a registry value for every file copied to the user profile seems really weird.

What problems can occur if I do not have a registry value as my components' KeyPath? If the registry value is required, is there a tool in the wix toolset for generating them?

1

1 Answers

4
votes

The ICE tests are static tests, and they don't know if the install is ultimately going to be per user or per system. The issues are really in per system installs when the product is installed by one user then used by another and you may get missing resources for that user. If you know that you're always going to be per user then it's not a big deal - suppress the error.