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