1

我正在使用 WiXHeat.exe来收集文件目录并创建.wxs文件。

其中一个文件依赖于Microsoft.DirectX.Direct3D.dll. 而 Heat 在“根”注册表下注册了所有其余的依赖项,例如:

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

Direct3D 正在“用户”注册表下注册。

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

导致以下错误:

ICE57:组件“x”具有每个用户和每个机器的数据以及每个机器的 KeyPath

我该如何解决这个问题?

4

1 回答 1

1

Heat 重新映射注册表,在它收集的所有文件上运行 self reg,然后收集所有写入的注册表项。可能您的组件之一是在自我注册期间编写此密钥。您可以 1) 抑制注册表收集 (-sreg) 2) 修改正在写入此密钥的任何组件以不这样做 3) 编写 xsl 以删除收集的密钥。

此外,您应该考虑捆绑 direct-x 设置,而不是重新分发各个 DLL。

于 2013-12-31T19:21:32.720 回答