在卸载期间显示来自 C# 自定义操作的 WiX 对话框

Posted

技术标签:

【中文标题】在卸载期间显示来自 C# 自定义操作的 WiX 对话框【英文标题】:Showing WiX dialog from a C# custom action during uninstall 【发布时间】:2013-01-14 15:52:03 【问题描述】:

在从快捷方式运行的卸载序列和使用基本 UI 添加/删除程序的过程中,我无法显示对话框。它似乎跳过了在修改和安装过程中显示的 InstallUISequence:

<!--Displays uninstall options before uninstall progress dialog WixUI_InstallMode = "Remove"-->
<InstallUISequence>
    <Show Dialog="UninstallDialog" Before="ProgressDlg">WixUI_InstallMode = "Remove"</Show>
</InstallUISequence>

但是,重要的是我在基本卸载过程中也运行此对话框。是否可以从 InstallExecuteSequence 运行的 C# 自定义操作显示在 WiX 中定义的对话框?如果是这样,我将如何去做?有教程吗?我想显示的对话框如下所示:

<!--Dialog used to obtain uninstall options from user-->
<Dialog Id="UninstallDialog" Width="120" Height="100" Title="Options">
    <Control Id="DelDatabaseCheckBox" Type="CheckBox"
             X="15" Y="10" Width="90" Height="17" Property="DELDATABASE"
             CheckBoxValue="1" Text="Delete Database"/>

    <Control Id="DelSettingsCheckBox" Type="CheckBox"
             X="15" Y="30" Width="90" Height="17" Property="DELSETTINGS"
             CheckBoxValue="1" Text="Delete Settings"/>

    <Control Id="DelErrorLogCheckBox" Type="CheckBox"
             X="15" Y="50" Width="90" Height="17" Property="DELERRORLOG"
             CheckBoxValue="1" Text="Delete Error Log"/>

    <Control Id="ConfirmUninstall" Type="PushButton" X="22" Y="75" Width="70" Height="17" Text="Ok">
        <Publish Event="EndDialog" Value="Return">1</Publish>
    </Control>
</Dialog>

【问题讨论】:

***.com/questions/4838526/…的可能重复 不,我完全理解它本身不会显示 UI。我提到了这一点。这就是为什么我想强制它在我开发的 c# customaction 期间显示,因为我确定它在卸载期间运行它。是否有一些命令可以用于会话来执行此操作? 【参考方案1】:

您正在尝试做的是反模式。而是禁用 Remove 按钮并强制用户通过 Change |删除故事。您可以在那里显示本机 MSI UI。

【讨论】:

1msdn.microsoft.com/en-us/library/windows/desktop/… 但问题在于它还禁用了 GUI 中的删除按钮。 就我个人而言,我更喜欢这样的解决方案,当双击添加/删除按钮时,它只会导致 msiexec /i 序列开始运行。这将打开配置屏幕,允许用户选择在 GUI 中添加/删除 “而是禁用删除按钮”正是我在回答中所说的。 Microsoft 将删除按钮设计为 /QB LIMITUI 操作。

以上是关于在卸载期间显示来自 C# 自定义操作的 WiX 对话框的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 wix 在卸载时编写注册表项

WiX - 带有安装和卸载(或回滚)参数的多个自定义操作

WiX:如何在升级期间显示 EULA 协议 UI?

无法将我的 WiX 自定义操作安排到 msi

Wix 自定义卸载操作 - 如何在 msi 删除文件之前运行

如何防止 wix 自定义引导程序卸载 UI 在升级过程中显示