如何让Wix ToolSet创建的MSI卸载时显示完整UI?
解决Wix ToolSet v3.11 MSI卸载时显示完整UI的问题
以下是几种可靠的解决方法,按优先级排序:
方法1:在Wix项目中强制卸载时使用完整UI
这是最根本的解决方式,直接在安装包中定义卸载时的UI级别,无需修改注册表:
- 在你的Wix Product元素中添加属性,强制卸载时启用完整UI:
<Property Id="UNINSTALLUILEVEL" Value="2" />
数值说明:
2对应/qf(完整UI),3对应/qb(基础UI),这里设置为2即可。
- 如果你需要仅在卸载时生效(不影响安装时的UI级别),可以用条件性设置:
<SetProperty Id="UNINSTALLUILEVEL" Value="2" Before="InstallInitialize">REMOVE~="ALL"</SetProperty>
这个配置会在执行完整卸载(REMOVE=ALL)时,自动将UI级别设为完整模式。
方法2:更换Wix内置UI模板
如果你的安装包使用了WixUI_Basic(基础UI模板),卸载时默认会沿用基础UI。可以切换为完整UI模板:
将原UI引用:
<UIRef Id="WixUI_Basic" />
替换为:
<UIRef Id="WixUI_Full" />
这样安装和卸载过程都会使用完整对话框UI。
方法3:修正注册表卸载字符串(备选)
如果修改注册表未生效,可能是路径错误或未同步系统缓存:
找到正确的注册表路径:
- 64位系统下的32位程序:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{你的产品GUID} - 64位程序:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{你的产品GUID}
- 64位系统下的32位程序:
修改两个键值:
- 将
UninstallString改为:msiexec /x {你的产品GUID} /qf - 将
ModifyPath也改为相同内容(部分系统会优先读取这个值)
- 将
修改后重启Windows资源管理器(或注销再登录),确保系统读取新的注册表配置。
注意:此方法依赖系统对注册表的读取逻辑,不如Wix内置配置稳定,仅作为备选方案。
内容的提问来源于stack exchange,提问作者Aleksandar
相关产品推荐
相关产品推荐

