2009-12-28 39 views
1

我们有我们的自定义setup.exe程序,它以同步方式启动一系列个性化MSI。计划和命令的使用来启动MSI是:从外部程序管理msi

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

现在,我们要做到以下几点 - 当用户在pressess setup.exe程序停止按钮,然后我们想完全停止安装。我们可以控制尚未启动的任何产品msi的安装,但我们没有找到将某个事件发送到已经运行的安装(已经使用CreateProcess启动)的方法。我们想从setup.exe发送Cancel事件到msiexec.exe创建的进度对话框。

请建议一些技术来执行此操作。是否有可能从命令行调用正在运行的安装回滚?仅供参考,我们使用Wise创建我们的MSI和VS 2008 MFC来创建我们的setup.exe。

-Kartlee

回答

0

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

请注意,无论哪种情况,您都不能始终立即取消设置或取消设置。虽然你的设置可能不这样做,但某些设置会在某些点禁用取消按钮,因为他们知道它们不能干净地回滚。