我应该何时更改或不更改WIX中的组件GUID? The Microsoft SDK information is confusing。
Glytzhkof编辑:为了澄清,该问题涉及何时应为MSI组件更改组件GUID。组件可以通过以下方面进行更改:更改目标路径,向/从同一组件添加或删除文件,添加注册表数据等...这会导致所谓的组件引用问题,即{{3在MSI。
答案 0 :(得分:47)
MSI的整体概念是两者之间存在 1:1映射 组件GUID (唯一标识符)和绝对路径 (安装位置/密钥路径)。完整路径,包括文件名if 任何。请参阅下面的更新,了解新的Wix功能,以便自动进行处理 有这个。
我使用一些简单规则来处理过于复杂和荒谬的组件规则:
SampleDriver.cat
, SampleDriver.inf
< / strong>, SampleDriver.sys
, SampleDriver.cer
。它们必须全部匹配作为部署的“单位”。一些样本:
更新:只要目标路径保持不变,WIX现在就具有auto-generate component GUID新功能calculates a GUID。我没有说实话,但很多人似乎没有问题地使用它,Rob Mensching (Wix author) states it is safe for normal use。作为一个概念,我强烈推荐这个,因为它具有一些自动魔法,并且可以保护您免受某些复杂性的影响。
另请注意you can leave out a lot of source attributes from your Wix xml file并依赖于Wix默认值而不是硬编码值。
答案 1 :(得分:17)
您永远不会更改Component / @ Guid。您也永远不会更改Component中的资源集(File,RegistryKey,Shortcut,TypeLib等)。拥有新资源时,必须使用新的@Guid创建新的Component。真正棘手的部分是新组件与旧组件没有重叠(想想文件路径,或注册表键路径,或类型库等)。
这些基本上是组件规则,请查看:http://robmensching.com/blog/posts/2003/10/18/Component-Rules-101。
答案 2 :(得分:0)
有关组件规则的详细说明,请查看WiX Tutorial, The Files Inside。基本上,它表示您永远不会更改组件的GUID,因为这意味着孤立旧组件并创建新组件。