【问题标题】:How to customize the uninstall dialog in Programs and Features如何在程序和功能中自定义卸载对话框
【发布时间】:2017-02-09 04:52:52
【问题描述】:

我正在开发一个 Wix 项目,该项目需要询问用户是否要在卸载时删除数据库。我在 UI 中为 Wix 项目添加了对话框和控件。当我单击 MSI 时,会显示用于卸载的自定义对话框,但当我通过从程序和功能卸载时单击它时不会显示。

我需要做什么才能从“程序和功能卸载”中显示相同的自定义卸载对话框?

【问题讨论】:

    标签: wix


    【解决方案1】:

    或者,您可以通过自定义操作使用一个不错的功能,该操作告诉会话显示各种对话类型:

    Record record = new Record();
    record.FormatString = string.Format("Would you like to remove program-generated data?");
    
    MessageResult value = session.Message(InstallMessage.User | (InstallMessage)MessageBoxButtons.YesNo, record);
    
    if (value == MessageResult.Yes)
    {
         // Remove program-generated data
    }
    

    请参阅此处了解我提出此解决方案的地方:http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/UI-on-uninstall-td7593560.html#a7593572

    请参阅此处了解您可以提供的各种对话框:https://msdn.microsoft.com/en-us/library/windows/desktop/aa371672(v=vs.85).aspx

    要仅在卸载时使用此自定义操作,请按如下方式安排:

    <CustomAction Id="ShowDialog" BinaryKey='CustomActionsBinary' DllEntry='ShowDialogRemoveFiles' 
                  Execute='immediate' Return='check' Impersonate='no'/>
    
    <Binary Id='CustomActionsBinary' SourceFile='CustomActions.CA.dll'/>
    
    <InstallExecuteSequence>
      <Custom Action='ShowDialog' Before='InstallFinalize'>REMOVE</Custom>
    </InstallExecuteSequence>
    

    【讨论】:

      【解决方案2】:

      卸载按钮不显示 MSI 的用户界面。因此,控制卸载 UI 的唯一选择是通过设置 ARPNOREMOVE 来禁止卸载按钮,从而要求用户启动维护。

      【讨论】:

      • 是的,这样会强制显示维护页面。但是,它也会禁用“删除”按钮。所以我们需要重新定义维护对话框。见link here
      • 是的,你在这里对抗 MSI。请注意,如果您想阻止知识渊博的用户以这种方式卸载(仅限进度),您必须检测并阻止它。但这会阻止静默卸载,所以我不推荐它。
      • ARP 不假设它正在启动 Windows Installer 服务程序 (msiexec); Msiexec 并不关心它是通过 ARP 启动的。 Windows Installer 创建密钥是希望它有用。如果您不喜欢它默认创建的那个,您可以 隐藏它并添加您自己的整个键和一组值。对于一个不同的 UninstallString 来说,这是很多工作。
      • @Tom:一半同意。您的观点是正确的,但 ARP 确实知道它是一个 Windows Installer 程序包,并且不会尊重主键的 UninstallString 的更新。
      猜你喜欢
      • 2014-04-29
      • 2015-10-26
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      相关资源
      最近更新 更多