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

Posted

技术标签:

【中文标题】Windows 7 上错误的桌面快捷方式图标(Inno Setup)【英文标题】:Wrong desktop shortcut icon on Windows 7 (Inno Setup) 【发布时间】:2011-05-22 23:26:55 【问题描述】:

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

最初创建安装程序时,我没有设计团队提供的最终产品图标。我在完成安装程序时使用了一个临时图标。

在我更改最后一个图标之前,一切正常。现在桌面快捷方式和开始菜单图标总是显示旧图标,即使其他地方的图标都是正确的。

这是脚本的图标声明部分。

[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

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

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

我已按照建议删除 IconCache.db 并重新启动机器,但这也没有效果。

这个旧图标是从哪里来的?它不在安装程序中。

有什么想法吗?

【问题讨论】:

您的问题的编写方式让我相信这一切都发生在一台单独的 Windows 7 计算机上。您是否尝试过使用新图标重建 Inno Setup 文件并在 第二 计算机上运行它?这仍然显示旧图标吗? 我已经在“原始”Windows XP 和 Windows 7 机器上安装了这个应用程序。两者都正确呈现图标。什么可能会在我的机器上缓存旧图标?它只是拒绝死亡...... 发布安装程序脚本的 [图标] 部分,也许这会有所帮助。您的可执行文件是否仅包含您要使用的图标(即不是您不想要的临时图标)? 是的,如果在另外两台机器上安装后显示正确的图标,则问题与 Inno Setup 无关。它必须是你机器上的东西,并且有 96% 的可能性与缓存有关。 没有临时图标不再存在于应用程序或安装程序中的任何位置。我已将 [Icons] 声明添加到主题描述中。 【参考方案1】:

看来这确实与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 会缓存一个通用图标并永远使用它,直到你手动强制愚蠢的东西重建缓存。 这似乎是一个非常糟糕的错误......尤其是在两个主要版本中仍然存在。 @Leo:我想我同意你的观点,因为我以前见过这个。您是否就此提交了错误报告(或者您是否知道已提交的任何错误报告)? @Cody Gray:我放弃了向微软提交错误报告。完全浪费时间,IMO。 :\ +1 谢谢!我已经在这上面浪费了足够多的时间,你让我浪费了更多的时间。我正在卸载并重新安装,但图标没有显示...【参考方案2】:

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

rebuild-icon-cache.bat

@echo off
taskkill /IM explorer.exe /F
cd /d %userprofile%\AppData\Local
del IconCache.db /a
start explorer.exe

【讨论】:

以上是关于Windows 7 上错误的桌面快捷方式图标(Inno Setup)的主要内容,如果未能解决你的问题,请参考以下文章

为啥桌面上的图标都变成了网络快捷方式,怎样恢复原状

如何创建桌面快捷图标

如何在桌面建立资源管理器的快捷方式图标

Windows10下自定义桌面快捷方式图标--以Spyder为例

Windows10下自定义桌面快捷方式图标--以Spyder为例

如何去掉桌面图标的快捷箭头?