InstrallShield Basic MSI 卸载不显示带有完成按钮的对话框

Posted

技术标签:

【中文标题】InstrallShield Basic MSI 卸载不显示带有完成按钮的对话框【英文标题】:InstrallShield Basic MSI uninstall does not display a dialog with Finish button 【发布时间】:2018-09-30 14:15:14 【问题描述】:

我使用 InstallShield 2018 并创建了一个“基本 MSI”项目。 卸载产品时,它会确认我是否要继续卸载,并在确认后开始卸载。但随后它就消失了,没有在最后显示一个对话框,您可以在其中单击“完成”按钮。

因此,用户不知道卸载是否完成或被中止或其他什么。

在我的 IS 2018 'InstallScript MSI' 项目中,最后会显示带有完成按钮的对话框,这很好,因为用户知道卸载已完成。

请指教。 谢谢。

【问题讨论】:

这是标准的 Windows 安装程序/程序和功能行为。 【参考方案1】:

感谢 Stein 的回复和详细信息。

我们已禁用 ARP 中的更改/修改按钮。我们只想公开“删除”按钮,让用户只能卸载而不能修改或修复。

所以似乎看不到带有完成按钮的对话框或其他 UI 对话框,因为使用“删除”按钮时跳过了 InstallUISequence?

【讨论】:

我想你需要修改Change / Modify对话框来实现你想要的——只隐藏你不想要的按钮to show - leaving the Remove`按钮。然后您重新启用更改/修改对话框并禁用直接删除按钮。但是,用户仍然可以通过命令行进行修改或修复操作——因此这并不妨碍此类安装模式可以运行。我不会求助于显示来自InstallExecuteSequence 的对话框。尽管在技术上可行,但它是一个设计错误,可能会给您的企业用户(静默部署)带来问题。【参考方案2】:

基本 UI 模式:当从 添加/删除小程序 (appwiz.cpl) 调用卸载时,它将在 中运行基本 GUI 模式 (UILevel = 3)。这将跳过 MSI 中的 InstallUISequence,因此不会显示设置向导对话框,而只会显示进度和错误消息。更多关于UILevel的信息。

ARPNOREMOVE:至于你能做些什么。过去,我在属性表中将ARPNOREMOVE Property 设置为1,以防止使用基本UI 模式删除设置。相反,用户必须单击 ARP 小程序中的修改。这将确保安装程序将使用完整的 GUI 运行,并且您可以从显示的修改对话框(安装向导对话框)中依次调用删除。

在旧版本的 Installshield 中,您可以在 General Information => Add / Remove Programs => Disable Remove Button => Yes 下进行设置。您还可以使用直接编辑器视图直接进入属性表 - 您也可以使用属性管理器视图。在所有情况下,您都将值 1 分配给 ARPNOREMOVE 属性。

自定义操作:有些人添加自定义操作以直接从 InstallExecuteSequence 显示安装卸载完成对话框(或者更确切地说是消息框),但这非常糟糕的设计。这个序列应该完全没有 GUI 元素,以便正确支持静默安装/卸载。


静默安装:不久前,我写了一篇关于静默安装稍有不同方面的答案。链接到它以获取有关设置 GUI 的更多详细信息:Uninstall from Control Panel is different from Remove from .msi。

【讨论】:

以上是关于InstrallShield Basic MSI 卸载不显示带有完成按钮的对话框的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio添加Visual Basic Power Packs工具箱

[Go语言]基础介绍

MSI-X 之有别于MSI

msi文件如何安装?谢谢

如何使用 WIX 使用单个 MSI 包安装两个 MSI 包?

通过MSI属性指定MSI转换