从VS安装程序转换后的WiX组件指南

时间:2013-12-10 19:53:07

标签: wix wix3.7

我正在为将替换旧的Visual Studio安装程序的产品创建WiX安装程序,并将提供新的构建版本(从1.0.5升级到1.0.6)。我知道我需要让安装程序计算产品的GUID,并且我需要使产品的升级代码与之前产品迭代中的代码相同。

我需要知道的是如何确定组件的GUID。我发现了以下声明:

  

组件GUID = - 这是应从上一代产品中复制的产品/组件代码。如果这是不可能或不可行的,那么必须告知客户他们应该在安装新版本之前卸载以前的版本。否则,可能存在关于哪些产品代码在PC上拥有哪个文件的冲突。

我认为Guid将来自我在组件中包含的程序集的汇编信息。这是对的吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

不确定从哪里获得该信息,但这不太正确。组件GUID根本与程序集信息无关。

组件GUID只是安装程序中每个资源的唯一标识符(它可以是文件,注册表项,甚至只是一批sql脚本)。如果您有2个以上的安装程序将并排安装并且可以共享某些文件,那么您可以对共享组件使用相同的GUID。然后,Windows安装程序将自动处理依赖项。现实世界的例子可能更容易:

  • ProductA具有ComponentA,ComponentB和ComponentC
  • ProductB具有ComponentC,ComponentD和ComponentE

如果两者都安装,如果GUID相同,则仅安装一次ComponentC。如果未安装InstallerB,则ComponentA保留为ProductA仍然依赖于它,反之亦然,如果ProductA未安装且剩下ProductB。只有当两者都被删除时才会删除ComponentC。

如果在ProductB中更改ComponentC(不更改GUID),则可能会出现并发症,这意味着它将与ProductA不兼容。如果发生这种情况并且升级了ProductB,则会破坏ProductA的安装。有关组件规则和其他会破坏安装的方案的详细信息,请参阅http://msdn.microsoft.com/en-us/library/aa372795(v=vs.85).aspx

处理它们的最简单和最安全的方法是只使用“*”,因为wix会自动为该组件生成一个guid。