我正在为我们的产品创建一个MSI安装包,希望该产品能够实现并行安装。这样我就可以先安装1.0.0版本,然后再添加1.0.1版本,以便两个版本都被安装。
我正在使用WiX创建msi,并想知道如何在Wix中实现此操作?例如:
- 我是否需要为所有组件创建新的Guid?
- 我应该如何将版本信息添加到Wix或者是否应该完全重命名我的产品?
- 我该如何创建项目,以便发布新版本需要在Wix项目中进行最小限度的更改?
问候, Martijn
我正在为我们的产品创建一个MSI安装包,希望该产品能够实现并行安装。这样我就可以先安装1.0.0版本,然后再添加1.0.1版本,以便两个版本都被安装。
我正在使用WiX创建msi,并想知道如何在Wix中实现此操作?例如:
问候, Martijn
您应该只需要更改顶层productcode和UpgradeCode GUIDs来使您的两个产品完全无关,并使用Productversion标识版本。您可以在产品之间共享组件guid(这就是合并模块的工作原理),以便安装程序的实质部分(组件定义)无需调整即可共享。
您主要的挑战将是确保这两个解耦的产品不会互相干扰,例如具有相同的默认安装文件夹、开始菜单条目和相同的添加/删除程序条目。您可以通过在ProductName属性中包含产品版本号来实现这一点,在您的安装UI中可能看起来有些技术性,但这并非罕见。
两个版本共享的资源不受直接支持。一个著名的例子是使用ProgIDs来使用文件扩展名,如此处所示。
如果更改GUID(使用“*”GUID时也会发生),则卸载任一版本时将删除扩展名。
如果不更改GUID,则扩展名将保留,但指向最近安装的版本。您可以选择这个选项作为两个恶魔中较小的那个,至少支持用户按照安装顺序卸载版本的情况。
这里有一个陷阱:扩展名需要成为组件的关键路径。这使得在并排场景中使用ProgID元素变得棘手,因为如果您不将ProgID元素放在引用文件的相同组件中,则会收到ICE69警告。此外,WiX的实现细节决定了它生成哪个注册表条目将成为关键路径。