在WIX上,重新安装时如何从旧安装中复制文件

本文关键字:安装 文件 复制 WIX 重新安装 | 更新日期: 2023-09-27 18:00:09

我有一个使用WIX安装的产品。这是我的安装顺序:

<InstallExecuteSequence>
   <RemoveExistingProducts Before="InstallInitialize" />
</InstallExecuteSequence>

据我所知,在重新安装时会删除整个旧版本。这是我想保留的行为,但我也想从旧版本。

我该怎么做?

在WIX上,重新安装时如何从旧安装中复制文件

要从新MSI的部署中执行您想要的操作几乎是不可能的,因为您无法在RemoveExistingProducts之前执行需要提升权限的自定义操作(如果您没有像prgram文件那样安装在UAC控制的文件夹中,这可能会起作用,但我从未尝试过)。

一个解决方法是通过创建引导程序来修改现有的MSI(我不知道这是否有效!)-请参阅这个问题的答案:如何在RemoveExistingProducts之前执行自定义操作,After="InstallValidate";在WiX 中

当我过去编写安装程序时,我编写了一个自定义操作,在卸载时将文件复制到临时文件夹中(升级时,新的MSI会调用以前版本的MSI的卸载),然后在安装新的MSI时检查并清除此文件夹(升级部分)。如果你只是卸载(而不是升级),这种方法确实会留下很多文件,但由于我只对配置文件感兴趣——这实际上效果很好,因为如果客户退货,我不会丢失他们所有的配置。

当然,这并不能解决您的直接问题,因为这只有在卸载时备份相关文件的版本发布后才能开始工作——但在过去的3年里,它对我来说一直很好。

HTH