【问题标题】:installshield custom action cancel event from exe来自 exe 的 installshield 自定义操作取消事件
【发布时间】:2012-08-29 11:05:49
【问题描述】:

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

如果有人需要更多细节,请告诉我。

【问题讨论】:

    标签: installshield custom-action


    【解决方案1】:

    这里有很多东西在起作用:

    1. 不要使用 EXE 自定义操作。他们用完了进程,无法访问 MSI 句柄,并且有各种其他故障点。见:Integration Hurdles for EXE Custom Actions

    2. 改用 WiX DTF 编写托管代码自定义操作,该操作作为标准 C++ Win32 DLL 呈现给 Windows 安装程序。见:WiX and DTF: Using a Custom Action to list available web sites on IIS

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

    4. 当您将消息传递到进度对话框时,MSI 会给您一个返回代码,表明用户已按下取消按钮。然后,您应该使用此按钮来中断自定义操作中的处理。然后 Windows 安装程序将回滚并显示“安装中断”对话框。见:Any tips on getting the cancel button working for a deferred custom action

    5. InstallShield Express 是一个非常有限的工具,可能无法直接完成您需要它完成的所有创作。有一些方法可以扩展它。见:Augmenting InstallShield using Windows Installer XML - Certificates

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

    【讨论】:

    • 因为,我是新手,我不明白你写的很多东西,但我正在查看你的链接。你告诉过 exe 不是调用自定义操作的好方法,但我的项目有一个 exe,它可以执行一些数据库设置内容,并且用户将与哪个用户进行交互,所以别无选择。谢谢
    • 这只是一个借口。你总是可以选择做正确的事。第一步是了解它的外观。 InstallShield Professional 具有处理 SQL 文件的能力,这可能是您配置数据库所需要的。那么您根本不需要任何自定义操作。
    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 2017-08-28
    • 2015-04-26
    • 2018-04-07
    • 1970-01-01
    相关资源
    最近更新 更多