我正在为我们的产品创建MSI。我希望产品能够并排安装。这样我就可以先安装1.0.0,以后可以添加1.0.1,这样两个版本都安装好了。
我正在使用 WiX 创建 msi,并且想知道如何在 Wix 中完成此操作?例如
- 我需要为所有组件创建新的 Guid吗?
- 我如何将版本信息添加到 wix或者我应该完全重命名我的产品?
- 如何创建项目,以便发布新版本需要对 wix项目进行最少的更改?
问候,马丁
我正在为我们的产品创建MSI。我希望产品能够并排安装。这样我就可以先安装1.0.0,以后可以添加1.0.1,这样两个版本都安装好了。
我正在使用 WiX 创建 msi,并且想知道如何在 Wix 中完成此操作?例如
问候,马丁
您应该能够只更改顶级产品代码和升级代码 GUID 以使您的两个产品完全不相关,并使用 Productversion 来识别版本。您可以在产品之间共享组件指南(这就是合并模块的工作方式),这样您的安装程序(组件定义)的内容就不需要调整并且仍然可以共享。
您面临的主要挑战将是确保两个分离的产品不会相互干扰,例如通过具有相同的默认安装文件夹、开始菜单条目和相同的添加/删除程序条目。您可以通过在 ProductName 属性中包含产品版本号来实现这一点,这在您的安装 UI 中可能看起来有点技术性,但并非闻所未闻。
关于你的第一个问题:不,你不需要。
但为什么?
在我的并行场景中,我很难理解 Windows 安装程序规则。您确实需要了解组件规则(包括何时需要对它们进行制动)和关键路径的概念。WiX 并没有抽象出这些方面。
这个答案确实已经突出了可能的干扰。让我们考虑几个例子。
不直接支持两个版本共享的资源。一个突出的例子是使用 ProgID 使用文件扩展名,如下所示。
如果您更改 GUID(在使用“*”GUID 时也会发生),则在卸载任一版本时将删除扩展。
如果您不更改 GUID,将保留扩展名,但指向最近安装的版本。您可以将此选项作为两个魔鬼中的较小者,至少支持用户以安装它们的相同顺序卸载版本的场景。
这里有一个陷阱:扩展需要是组件的关键路径。这使得 ProgID 元素的使用在并行场景中存在问题,因为如果您没有将 ProgID 元素放在与引用文件相同的组件中,您将收到 ICE69 警告。此外,它是 WiX 的一个实现细节,它生成的哪个注册表项将是关键路径。