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工具箱