多年来,我们的产品通过InstallShield Setup安装。我今年将安装更改为MSI(WiX)。现在MSI应该清理目录,这个目录保持不变。
我实施的MSI中的一个自定义操作,用于开始卸载旧产品:
<CustomAction Id="UninstallIS" Property="QtExecCA" Value=""[WindowsFolder]IsUn0407.exe" -f "[ProgramFilesFolder]\company\product\Uninst.isu"" Execute="deferred" />
<CustomAction Id="QtExecCA" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no" />
删除旧产品后,有一些临时文件和一些不同于客户端的子目录,并且InstallShield安装程序不知道,所以我会尝试通过MSI删除它们。
记住UAC,我认为我不能使用命令行命令来执行此操作,“删除文件表”在这里也没用(对于许多未知文件和许多目录)。
有什么方法可以做到这一点?
感谢您的帮助!
答案 0 :(得分:3)
您可以使用将模拟标记设置为“否”的延迟自定义操作。这样,它将在具有完全权限的本地系统帐户下运行。
自定义操作可以使用自定义代码(例如EXE或DLL)或命令行。
请注意,只有在InstallExecuteSequence中执行 InstallInitialize 操作后才能安排延迟的自定义操作。
作为旁注,请务必仔细测试。从目标计算机删除文件非常危险。你永远不知道你最终会删除什么。