Inno Setup配置后unisXXX.exe卸载程序自定义图标未生效问题咨询
问题原因
- 你对
UninstallIconFile配置的理解有误,该指令并未在Inno Setup 5.0.0之后被废弃,只有当你设置了Uninstallable=no关闭卸载功能时它才会失效。你将其注释后,编译阶段不会把自定义图标嵌入到卸载程序的基础模板里,初始安装释放的unis000.exe自然使用内置的默认图标。 - 你配置的
UninstallDisplayIcon仅作用于控制面板的卸载项图标,和卸载程序本体的嵌入式图标无关;[Icons]段给卸载快捷方式配置的图标仅修改快捷方式的显示效果,也不会修改卸载程序exe本身的图标。 - 版本更新场景下卸载程序图标正常的原因是:旧版本卸载完成后,安装程序会在后续流程重新生成卸载程序,此时安装程序运行时已经加载了你指定的图标资源,会临时将其嵌入到新生成的
unis001.exe里,所以看起来效果正常。
解决方案
- 取消
UninstallIconFile行的注释,保留如下配置即可:
UninstallIconFile={#AppSource}\foobar\app.ico
配置完成后重新编译安装包,编译阶段就会把指定图标直接嵌入到卸载程序模板里,不管是初始安装还是更新场景生成的卸载程序都会自带自定义图标。
- 如果修改后还是显示默认图标,大概率是Windows系统图标缓存导致的,可以在安装完成后手动刷新图标缓存,或者在[Code]段的
ssPostInstall阶段加入调用SHChangeNotify刷新系统图标缓存的逻辑即可。
内容的提问来源于stack exchange,提问作者user8087992
相关产品推荐
相关产品推荐

