Windows 7上的桌面快捷方式图标错误(Inno Setup)

swi*_*der 21 icons inno-setup windows-7 desktop-shortcut

我用Inno Setup创建了一个安装程序.用于桌面快捷方式和开始菜单的图标嵌入在应用程序可执行文件中.

最初创建安装程序时,我没有设计团队的最终产品图标.当我完成安装程序时,我使用了临时图标.

一切都按原样运作,直到我更改了最后一个图标.现在桌面快捷方式和开始菜单图标始终显示旧图标,即使图标正确无处不在.

这是脚本的Icon声明部分.

[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; WorkingDir: {app}
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}; IconFilename: {app}\Icons\stop.ico
Name: {commondesktop}\{#MyAppVersionName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon; WorkingDir: {app}
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:(这是一个Windows 7系统)

如果我查看快捷方式属性,并选择"更改图标",我会看到正确的图标.重新选择它没有任何效果.我也尝试过选择一个不相关的图标然后重新选择正确的...仍然显示旧图标.

我遵循建议删除IconCache.db并重新启动机器,但这也没有效果.

世界上哪里有旧图标?安装程序中没有任何地方.

想法有人吗?

swi*_*der 31

看来这确实与IconCache.db文件有关.我只能猜测某些事情没有以正确的顺序完成(尽管我不止一次尝试过不同的程序).

以下是我手动执行重置的方法:

  • 单击开始按钮>按住Ctrl+ Shift和右键单击"开始"菜单中的空白区域.
  • 选择"退出资源管理器".
  • 按住Ctrl+ Shift+ Esc键以打开任务管理器.
  • 选择"文件">"新任务".
  • 键入:cmd(并按Enter).这将打开命令提示符.
  • 输入:( cd /d %userprofile%\AppData\Local并按Enter)
  • 输入:( attrib –h IconCache.db并按Enter)
  • 输入:( del IconCache.db并按Enter)
  • 输入:( start explorer并按Enter)

现在一切都呈现出来.

  • 这是Windows中的一个错误(Win7和Vista也是如此).当整个EXE发生变化(而不仅仅是图标)时,即使重新启动,图标缓存也不会注意到.另一个搞砸是如果你在exe存在之前创建快捷方式,那么shell会缓存一个通用图标并永远使用它,直到你手动强制愚蠢的事情来重建缓存. (6认同)

MTC*_*ter 10

正如在swirlywonder的回答中,这个批处理脚本应该自动化该过程:

重建图标,cache.bat

@echo off
taskkill /IM explorer.exe /F
cd /d %userprofile%\AppData\Local
del IconCache.db /a
start explorer.exe
Run Code Online (Sandbox Code Playgroud)