2

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

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

无论注入的版本号如何,如何强制部署 MyFile.dll?

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

4

3 回答 3

1

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

于 2015-06-29T13:01:16.043 回答
1

这是完全可能的。如此处所述,您可以指定REINSTALLMODE属性并将其设置为“amus”或“dmus”,具体取决于您是要始终覆盖文件还是只覆盖具有不同版本的文件:

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

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

于 2016-03-04T10:13:18.850 回答
0

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

没有真正的直接和记录的方式。所有可用的选项都只是技巧。

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

问候, 基兰·赫格德

于 2015-07-07T05:47:45.057 回答