在安装MSI之前删除文件和目录

时间:2011-06-23 15:24:34

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

多年来,我们的产品通过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,我认为我不能使用命令行命令来执行此操作,“删除文件表”在这里也没用(对于许多未知文件和许多目录)。

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您可以使用将模拟标记设置为“否”的延迟自定义操作。这样,它将在具有完全权限的本地系统帐户下运行。

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

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

作为旁注,请务必仔细测试。从目标计算机删除文件非常危险。你永远不知道你最终会删除什么。

相关问题