返回

Inno Setup 图标桌面显示异常:常见问题及解决之道

windows

Inno Setup 图标桌面显示异常:问题及解决方法

引言

Inno Setup 作为一款流行的 Windows 安装程序制作工具,偶尔会出现图标在桌面显示不正确的现象。此问题可能归因于 Windows 的图标缓存,当应用程序图标发生更改时,缓存更新需要时间,导致显示异常。

问题解析

Windows 的图标缓存是一种机制,用来存储应用程序图标的副本。当应用程序图标更改时,缓存更新需要时间。如果缓存损坏或过时,就会导致图标在桌面上显示不正确。

解决方法

1. 使用 Shell_NotifyIcon API

Shell_NotifyIcon API 可以手动刷新图标缓存。Inno Setup 中实现此方法的代码示例如下:

[Code]
const
  SHCNE_ASSOCCHANGED = $08000000;
  SHCNF_IDLIST = $00000000;
  installation = true;

procedure SHChangeNotify(wEventID: Integer; uFlags: Cardinal; dwItem1, dwItem2: Cardinal);
  external '[email protected] stdcall';

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
  begin
    if installation then
    begin
      SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);
    end;
  end;
  if CurStep = ssPostInstall then
  begin
    if installation then
    begin
      SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);
    end;
  end;
  if CurStep = ssDone then
  begin
    if installation then
    begin
      SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);
    end;
  end;
end;


   [setup]
   ChangesAssociations=yes

2. 使用 ie4uinit.exe

ie4uinit.exe 是 Windows 中的一个工具,可以重置图标缓存。可以通过以下命令行运行此工具:

ie4uinit.exe -show

3. 手动删除图标缓存

也可以手动删除图标缓存,具体步骤如下:

  1. 打开文件资源管理器,导航到 %userprofile%\AppData\Local\IconCache.db
  2. 删除 IconCache.db 文件。
  3. 重新启动计算机。

注意

  • 执行上述操作前保存所有打开文件。
  • 问题仍存在,尝试重新生成应用程序并使用不同的图标。

结论

通过上述方法,可以解决 Inno Setup 中图标桌面显示异常的问题。此问题通常是由 Windows 图标缓存引起,刷新或重置缓存可以有效解决。