2014-02-07 50 views
0

我有一个捆绑了多个MSI的WiX托管引导程序应用程序(使用C#/ WPF自定义用户界面)。用户跑到哪里要安装的第一个MSI后,我的MBA称为维克斯基地BootstrapperApplication.Engine.Apply()造成BootstrapperApplication.Error触发事件,这种信息的情况:如何检测系统上现有的“已暂停”安装?

ErrorType: WindowsInstaller 
ErrorCode: 1704 
ErrorMessage: An installation for Intel(R) Smart Connect Technology is currently suspended. You must undo the changes made by that installation to continue. Do you want to undo those changes? 

,而不是当它发生时处理这个错误,我d更喜欢检查机器上是否存在此条件(“另一个MSI”的“当前挂起”安装),并阻止用户启动安装程序的“应用”操作。

如何检测系统上现有的“当前挂起”安装,最好使用WiX DTF库?


更新:标志Christopher Painter's answer,即使我无法找到任何文件来支持它,我无法重现的场景我自己。我也发现这个问题"WIX Detect Pending Reboot",这也可能是相关的,但再次有一些有用的官方文件。

回答

0

您不应该需要DTF MSI互操作。只需检查下面的注册表项:

HKLM \软件\微软\的Windows \ CurrentVersion \ Installer程序\ INPROGRESS

+1

是否有任何MSI文件,说明这个REG关键?例如,我可以确定哪些安装程序被暂停,因此我可以告诉最终用户? –

+0

不是我所知道的。在__MsiPromptForCD互斥体帮助主题中有一个引用,但它的存在并未在SDK中的其他任何位置定义。我的理解是,在该键下方会有一个条目指示您挂起的安装。我必须在虚拟机上进行测试才能知道。 –

相关问题