【问题标题】:On WIX how do I copy a file from an older installation when re-installing在 WIX 上,重新安装时如何从旧安装中复制文件
【发布时间】:2013-02-20 17:02:18
【问题描述】:

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

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

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

我该怎么做?

【问题讨论】:

    标签: c# wix


    【解决方案1】:

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

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

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

    这当然不能解决您当前的问题,因为它只会在备份卸载相关文件的版本分发后才能开始工作 - 但在过去 3 年里它对我来说效果很好。

    HTH

    【讨论】:

    • 如果我能知道以前的安装文件夹是什么,我想我可以使用文件标签中的源属性来做到这一点
    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2020-01-15
    • 1970-01-01
    相关资源
    最近更新 更多