Wix 注册表文件的热采集工具组件ID重复

Wix 注册表文件的热采集工具组件ID重复,wix,wix3.5,wix3.6,heat,Wix,Wix3.5,Wix3.6,Heat,我正在为多个注册表文件(45)运行Heat Harvest tool,我通过一个循环生成wxs文件 除了生成相同的组件Id的3个文件外,它工作正常 heat reg MyReg.reg -cg compoentGroup -gg -o MyReg.reg.wxs heat reg MyReg1.reg -cg compoentGroup1 -gg -o MyReg1.reg.wxs heat reg MyReg2.reg -cg compoentGroup2 -gg -o MyReg2.reg.

我正在为多个注册表文件(45)运行Heat Harvest tool,我通过一个循环生成wxs文件

除了生成相同的组件Id的3个文件外,它工作正常

heat reg MyReg.reg -cg compoentGroup -gg -o MyReg.reg.wxs
heat reg MyReg1.reg -cg compoentGroup1 -gg -o MyReg1.reg.wxs
heat reg MyReg2.reg -cg compoentGroup2 -gg -o MyReg2.reg.wxs
生成与相同的组件Id

<Component Id="cmp0278C3EF60DDFA362D50D5DD0254BCB9" Directory="TARGETDIR" Guid="{EED2941A-01BD-4CE5-97BF-75F19B6605A6}" KeyPath="yes">

虽然Guid是唯一的


我想知道如何才能避免这种情况或其他类似的方法。

组件/@Id应该基于所包含注册表项的完整“路径”。因此,如果您的.reg文件中有两个注册表项(可能有不同的值,也可能没有不同的值),那么您将得到重复的
Component/@Id
属性。这一点很重要,因为在两个不同的组件中使用相同的注册表项也会破坏性能


最后一件小事。在加热时使用
-gg
开关时要小心。每次运行该工具时,它都会为组件生成新的guid。一旦这些组件发货,这是不允许的,因为这同样违反了组件规则。我建议改用
-ag
开关,让自动GUID机制正确管理您的GUID。

组件/@Id应该基于所包含注册表项的完整“路径”。因此,如果您的.reg文件中有两个注册表项(可能有不同的值,也可能没有不同的值),那么您将得到重复的
Component/@Id
属性。这一点很重要,因为在两个不同的组件中使用相同的注册表项也会破坏性能


最后一件小事。在加热时使用
-gg
开关时要小心。每次运行该工具时,它都会为组件生成新的guid。一旦这些组件发货,这是不允许的,因为这同样违反了组件规则。我建议改用
-ag
开关,让自动GUID机制正确管理您的GUID。

我面临的问题是3个reg文件具有重复的密钥,这导致使用heat工具的组件Id相同


reg文件中的键应该是唯一的,这样才能工作。

我遇到的问题是,其中3个reg文件具有重复的键,这导致了与heat工具相同的组件Id


reg文件中的密钥应该是唯一的,这样才能工作。

请忽略此问题。我发现问题所在我得到重复组件Id的地方是这些reg文件正在创建相同的密钥。我认为如果这能帮助其他人,你应该回答这个问题。请忽略这个问题。我发现问题所在我得到重复组件Id的地方是这些reg文件正在创建相同的密钥。我认为如果可以帮助其他人,您应该回答这个问题。我之前尝试过-ag选项;它给了我错误LGHT0203。示例
我也不确定如何解决这个问题。您希望
注册表xxx
元素是
键路径
而不是
组件
。可能是heat生成的输出中存在问题。我尝试过Wix 3.5、Wix 3.6和Wix 3.7 heat.exe的行为是相同的。我之前尝试过-ag选项;它给了我错误LGHT0203。示例
我也不确定如何解决这个问题。您希望
注册表xxx
元素是
键路径
而不是
组件
。可能是heat生成的输出有问题。我尝试过Wix 3.5、Wix 3.6和Wix 3.7 heat.exe的行为是相同的。