Windows installer 从外部程序管理msi

Windows installer 从外部程序管理msi,windows-installer,msinfo32,Windows Installer,Msinfo32,我们有我们的自定义setup.exe程序,它以同步方式启动一系列独立的MSI。用于启动msi的方案和命令为: msiexcehandle = CreateProcess("msiexec.exe /i product.msi /qr") WaitForSingleObject(msiexechandle, INFINITE) 现在我们要执行以下操作-当用户按setup.exe程序中的停止按钮时,我们希望完全停止安装。我们可以控制尚未启动的任何产品msi的安装,但我们没有找到将某些事件发送到已

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

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

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

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


-卡特勒

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

请注意,在任何一种情况下,您都不能立即或根本取消安装。虽然您的设置可能不这样做,但某些设置会在某些点禁用“取消”按钮,因为它们知道无法完全回滚