我们的产品多年来都是通过 InstallShield 安装程序安装的。我今年将安装更改为 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,我认为我不能使用命令行命令来执行此操作,而且“删除文件表”在这里没有用处(对于许多未知文件和许多目录)。
有什么可能的方法来做到这一点?
感谢您的帮助!
最佳答案
您可以使用将模拟标记设置为“否”的延迟自定义操作。这样它将在具有完全权限的本地系统帐户下运行。
自定义操作可以使用自定义代码(例如 EXE 或 DLL)或命令行。
请注意,延迟的自定义操作只能在 InstallExecuteSequence 中的 InstallInitialize 操作之后安排。
顺便说一句,请确保对其进行彻底测试。从目标机器上删除文件是非常危险的。你永远不知道你最终会删除什么。
关于wix - 安装 MSI 之前删除文件和目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6456549/