如何在“程序和功能”中自定义卸载对话框

时间:2016-09-07 19:10:47

标签: wix

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

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

2 个答案:

答案 0 :(得分:2)

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

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>

答案 1 :(得分:1)

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