我如何部署包含版本低于已部署文件的文件的产品升级?

How can I deploy an upgrade of my product which contains a file with version lower than the already deployed file?

我有一个部署文件 MyFile.dll 的 msi 组件。我有一台测试机,我的产品已经在其中部署 MyFile.dll,版本为 09.99.99.99.

现在我正在编写一个重大升级,它将部署新版本的 MyFile.dll,版本为 05.23.76.123。在测试机上执行后,MyFilee.dll被移除...我需要更改或修复才能正确部署它。

如何强制部署 MyFile.dll 而不管其注入的版本号?

PS:这只发生在我们的测试机器上。我们交付给用户的产品具有版本号与发布历史一致的文件。

Windows 安装程序中有几种方法可以做到这一点,但它们都有各自的复杂性。 IMO 我会重建与旧 DLL 相同的源代码,但使用更新的更高版本并保持简单。

降级文件并不是很简单并且存在问题。正如前面所指出的,您可以更改组件 GUID 并让它工作。但是,这实际上取决于您的 RemoveExistingProducts 的排序位置。如果它在删除旧产品并安装新产品的位置进行排序,那么它可能会起作用。

并没有真正直接且有据可查的方法。所有可用的选项都只是 hack。

这只是您的测试环境吗? 如果是,那么您可以在 属性 table 中使用 REINSTALLMODE="amus" 并实现您想要的。 但是,这仅供您测试,不建议向您的最终用户推荐。

此致, 基兰海德

这是完全有可能的。如前所述 here, you may specify the REINSTALLMODE 属性 并将其设置为“amus”或“dmus”,具体取决于您是要始终覆盖文件还是简单地覆盖不同版本的文件:

<Wix ...>
  <Product ...>
    <Property Id="REINSTALLMODE" Value="amus" />

请注意,您在编译安装程序时会收到此警告: warning LGHT1076: ICE40: REINSTALLMODE is defined in the Property table. This may cause difficulties.