【发布时间】:2017-02-09 04:52:52
【问题描述】:
我正在开发一个 Wix 项目,该项目需要询问用户是否要在卸载时删除数据库。我在 UI 中为 Wix 项目添加了对话框和控件。当我单击 MSI 时,会显示用于卸载的自定义对话框,但当我通过从程序和功能卸载时单击它时不会显示。
我需要做什么才能从“程序和功能卸载”中显示相同的自定义卸载对话框?
【问题讨论】:
标签: wix
我正在开发一个 Wix 项目,该项目需要询问用户是否要在卸载时删除数据库。我在 UI 中为 Wix 项目添加了对话框和控件。当我单击 MSI 时,会显示用于卸载的自定义对话框,但当我通过从程序和功能卸载时单击它时不会显示。
我需要做什么才能从“程序和功能卸载”中显示相同的自定义卸载对话框?
【问题讨论】:
标签: wix
或者,您可以通过自定义操作使用一个不错的功能,该操作告诉会话显示各种对话类型:
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>
【讨论】:
卸载按钮不显示 MSI 的用户界面。因此,控制卸载 UI 的唯一选择是通过设置 ARPNOREMOVE 来禁止卸载按钮,从而要求用户启动维护。
【讨论】: