我在installshield 2012春季快递版上工作。 我创建了在vb.net中调用exe的exe自定义动作, exe中有取消按钮。如果用户点击取消按钮错误框在installshield安装程序中弹出(错误代码1722) 我知道为什么会出现此错误,但我不希望用户看到此错误,并且希望取消安装而不向用户显示错误消息。
告诉我是否有人需要更多细节。
答案 0 :(得分:2)
这里有很多事情要发挥作用:
请勿使用EXE自定义操作。它们用完了进程,无法访问MSI句柄并出现各种其他故障点。请参阅:Integration Hurdles for EXE Custom Actions
使用WiX DTF编写托管代码自定义操作,该操作作为标准C ++ Win32 DLL呈现给Windows安装程序。请参阅:WiX and DTF: Using a Custom Action to list available web sites on IIS
您的自定义操作根本不应显示任何UI。应该将消息发布到Windows安装程序以显示在进度控件上。如果您的自定义操作提示用户输入信息,那么这也是错误的。它应该在安装的用户访谈阶段在UI序列中完成。
当您将消息传递到进度对话框时,MSI将为您提供一个返回代码,指示用户已按下取消按钮。然后,您应该使用此按钮中断自定义操作中的处理。然后Windows Installer将回滚并显示Setup Interupted对话框。请参阅:Any tips on getting the cancel button working for a deferred custom action
InstallShield Express是一个非常有限的工具,可能无法直接执行您需要它执行的所有创作。有办法扩展它。请参阅:Augmenting InstallShield using Windows Installer XML - Certificates
我向你展示的是正确和正确的方法。从MSI最佳实践的角度来看,其他任何事情都不是最理想的。