2

我正在使用 installshield 2012 春季特快版。我创建了调用在 vb.net 中开发的 exe 的 exe 自定义操作,该 exe 中有取消按钮。如果用户单击取消按钮在 installshield 设置中弹出错误框(错误代码 1722),我知道为什么会出现此错误,但我不希望用户看到此错误并希望取消安装而不向用户显示错误消息。

告诉我是否有人需要更多细节。

4

1 回答 1

2

这里有很多事情在起作用:

  1. 不要使用 EXE 自定义操作。他们用完了进程,无法访问 MSI 句柄,并且有各种其他故障点。请参阅:EXE 自定义操作的集成障碍

  2. 改用 WiX DTF 编写托管代码自定义操作,该操作作为标准 C++ Win32 DLL 呈现给 Windows 安装程序。请参阅:WiX 和 DTF:使用自定义操作列出 IIS 上的可用网站

  3. 您的自定义操作根本不应该呈现任何 UI。它应该将消息发布到 Windows 安装程序以显示在进度 dailog 上。如果您的自定义操作提示用户输入信息,这也是错误的。它应该在安装的用户访谈阶段在 UI 序列中完成。

  4. 当您将消息传递到进度对话框时,MSI 将为您提供一个返回代码,表明用户已按下取消按钮。然后,您应该使用此按钮来中断自定义操作中的处理。然后 Windows 安装程序将回滚并显示“安装中断”对话框。请参阅:有关使取消按钮适用于延迟自定义操作的任何提示

  5. InstallShield Express 是一个非常有限的工具,可能无法直接完成您需要它完成的所有创作。有一些方法可以扩展它。请参阅:使用 Windows Installer XML 增强 InstallShield - 证书

我向您展示的是正确和正确的方法。从 MSI 最佳实践的角度来看,其他任何事情都不是最理想的。

于 2012-08-29T11:32:41.730 回答