【问题标题】:Deleting files and directories before installation of MSI在安装 MSI 之前删除文件和目录
【发布时间】:2011-06-23 15:24:33
【问题描述】:

多年来,我们的产品都是通过 InstallShield Setup 安装的。今年我将安装更改为 MSI (WiX)。现在 MSI 应该清理目录,该目录保持不变。

我在 MSI 中实施的一个自定义操作以开始卸载旧产品:

 <CustomAction Id="UninstallIS" Property="QtExecCA" Value="&quot;[WindowsFolder]IsUn0407.exe&quot; -f &quot;[ProgramFilesFolder]\company\product\Uninst.isu&quot;" Execute="deferred" />
 <CustomAction Id="QtExecCA" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no" />

删除旧产品后,有一些临时文件和一些子目录因客户端而异,InstallShield 安装程序不知道,所以我会尝试通过 MSI 删除它们。

牢记 UAC,我认为我不能使用命令行命令来执行此操作,“删除文件表”在这里也没有用(对于许多未知文件和许多目录)。

有什么方法可以做到这一点?

感谢您的帮助!

【问题讨论】:

    标签: wix windows-installer custom-action delete-file


    【解决方案1】:

    您可以使用将 Impersonate 标志设置为“no”的延迟自定义操作。这样它将在本地系统帐户下以完全权限运行。

    自定义操作可以使用自定义代码(例如 EXE 或 DLL)或命令行。

    请注意,延迟的自定义操作只能在 InstallExecuteSequence 中的 InstallInitialize 操作之后安排。

    附带说明,请确保彻底测试它。从目标机器中删除文件是非常危险的。你永远不知道最终会删除什么。

    【讨论】:

    • 谢谢 Cosmin,所以我可以像这样添加一个简单的命令行: 这是正确的吗?
    猜你喜欢
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 2014-09-04
    • 2015-03-25
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多