Question

I'm using WiX Heat.exe in order to harvest a directory of files and create a .wxs file.

One of the files has a dependency on Microsoft.DirectX.Direct3D.dll. While Heat registered all the rest of the dependencies under the "Root" registry, for example:

<RegistryValue Root="HKCR" Key="..." Name="..." Value="..." Type="string" Action="write" />

Direct3D is being registered under the "User" registry.

<RegistryValue Root="HKCU" Key="Software\Microsoft\Direct3D\MostRecentApplication" Name="Name" Value="heat.exe" Type="string" Action="write" />

Which cause the following error:

ICE57: Component 'x' has both per-user and per-machine data with a per-machine KeyPath

How do I solve this?

Was it helpful?

Solution

Heat remaps the registry, runs self reg on all the files it is harvesting, then collects all the registry keys written. Likely one of your components is writing this key during self-reg. You can either 1) suppress registry harvesting (-sreg) 2) modify whichever component is writing this key to not do so 3) write an xsl to remove the harvested key.

Additionally, you should consider bundling direct-x setup instead of redistributing the individual DLLs.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top