WiX设置中的DRY和Component ID具有多个平台和配置

时间:2013-11-08 11:22:45

标签: wix

背景:

我正在为具有三个配置/ SKU(基本,标准,企业,比如说)和两个平台(x86,x64)的应用程序进行设置。不同的配置使用不同的升级代码。

这为您提供了六种不同配置的矩阵。我们目前为每个配置都有单独的wxs脚本,但是当手动将文件添加到设置中时,几乎不可能记住在所有这些文件中都能正确执行等等。大多数文件是共享的(按名称而不是内容)所以那里是所有六个安装程序包中的文件SomeNamespace.SomeLibrary.dll,但所有六个都可能不同(通过平台,有时也通过配置)。

所以我的第一个问题是:如何避免必须保留几个大而几乎相同的设置脚本?

第二个问题:组件ID:

如果我设法通过自定义收集器或模板创建的片段重复使用大量wxs脚本,我该如何处理组件ID?我可以为组件使用生成的(*)GUID,假设产品之间没有共享组件,我只使用MajorUpgrade吗?组件ID生成的另一个选项是使用heat,或者手动创建确定性哈希,例如SHA1(相对安装路径+配置+平台)`。

在大型多配置多平台WiX项目的某处是否有一个很好的例子?

1 个答案:

答案 0 :(得分:0)

那么,您是否了解为什么最好为您的设置中的每个文件分配单独的组件ID?

以下是了解正在发生的事情的链接:

What is the wix 'KeyPath' attribute?

Wix: one file per component or several files per component?

Wix: Using KeyPath on Components, Directories, Files, Registry, etc, etc

至于你的问题,我会说让每个文件都有自己的组件标识符是有意义的(并且将它们分成单独的产品不会改变它)。

ComponentSearch甚至不需要ProductCode来搜索特定的组件 - 想想如果你安装了两个产品会发生什么,并且它们对某个组件都有相同的GUIDS - 它会爆炸。