1

我们有我们的自定义 setup.exe 程序,它以同步方式启动一系列单独的 MSI。用于启动 msi 的方案和命令是:

msiexcehandle = CreateProcess("msiexec.exe /i  product.msi /qr")
WaitForSingleObject(msiexechandle, INFINITE)

现在我们要执行以下操作 - 当用户在 setup.exe 程序中按下停止按钮时,我们希望完全停止安装。我们可以控制任何尚未启动的产品 msi 的安装,但我们没有找到将某些事件发送到已运行安装(已使用 CreateProcess 启动)的方法。我们希望将 setup.exe 中的 Cancel 事件发送到 msiexec.exe 创建的进度对话框。

请建议一些技术来执行此操作。是否可以从命令行调用运行安装的回滚?

仅供参考,我们使用 Wise 创建我们的 MSI,使用 VS 2008 MFC 创建我们的 setup.exe。

-卡特里

4

1 回答 1

0

正如你所描述的,我认为这是不可能的。我看到的两个选项是 UI 自动化(模拟单击取消按钮),或者与 MsiInstallProduct() 而不是 CreateProcess() 一起使用的外部 UI 处理程序。

请注意,无论哪种情况,您都不能总是立即或根本取消设置。虽然您的设置可能不会这样做,但某些设置会在某些时候禁用取消按钮,因为它们知道它们无法完全回滚。

于 2009-12-28T15:31:14.797 回答