WiX安装程序UAC窗口显示旧应用名的名称来源排查
WiX安装包UAC提示显示旧产品名的原因与名称来源说明
UAC弹窗展示的程序名称不直接读取WiX中定义的ProductName属性,其名称读取逻辑和常见异常原因如下:
UAC名称读取优先级
- 最高优先级:读取触发UAC的EXE文件内嵌版本资源中的
FileDescription字段,这是UAC程序名的默认读取来源 - 次优先级:如果EXE无内嵌合法版本资源,直接展示EXE文件的文件名
- 干扰项:Windows对历史触发过UAC的程序存在本地兼容性缓存,旧名称记录会优先于文件实际资源被读取
显示旧名称的常见修复方案
- 检查引导程序配置:如果使用WiX Burn制作EXE引导包,
ProductName是写入内部MSI包的属性,不会自动同步到外层EXE的版本资源,需要在Bundle节点显式配置最新名称,确保构建时写入EXE的FileDescription字段:
<Bundle Name="当前版本完整产品名" Version="x.x.x.x" Manufacturer="厂商名称" UpgradeCode="对应升级GUID"> <!-- 其余Bundle配置项 --> </Bundle>
- 清理UAC与图标缓存:如果是测试机上运行过旧版安装包导致缓存残留,按以下步骤清理:
- 管理员身份打开命令提示符,执行
taskkill /f /im explorer.exe关闭资源管理器 - 执行命令删除缓存文件:
cd /d %localappdata%\Microsoft\Windows\Explorer del iconcache* /a /f /q- 执行
explorer.exe重启资源管理器,或直接重启电脑生效
- 管理员身份打开命令提示符,执行
- 检查数字签名关联:如果安装包做了代码签名,旧签名关联的SmartScreen信誉记录可能返回旧名称,可对新包重新做完整签名,等待系统信誉库更新即可。
问题参考截图:
内容的提问来源于stack exchange,提问作者Sergioet
相关产品推荐
相关产品推荐

