【问题标题】:Wrong desktop shortcut icon on Windows 7 (Inno Setup)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] 声明添加到主题描述中。

标签: windows-7 icons inno-setup desktop-shortcut


【解决方案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

【讨论】:

    猜你喜欢
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多