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

时间:2013-02-20 08:29:31

标签: c# wix

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

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

根据我的理解,重新安装后会删除整个旧版本。 这是我想要保留的行为,但我也想从中复制特定文件 旧版本。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

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

一种解决方法是通过创建引导程序来修改现有的MSI(我不知道这是否适用!) - 请参阅此问题的答案:How to execute Custom Action before RemoveExistingProducts with After="InstallValidate" in WiX

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

这当然不能解决您的直接问题,因为只有在分发卸载相关文件的版本发布后才能开始工作 - 但它在过去的3年里对我有用。

HTH