Inno Setup安装程序图标在控制面板或设置中不显示。

31
我有一个Inno Setup项目。一切都很好,但是我在“控制面板->程序->程序和功能”或“设置->应用->已安装的应用程序”中看不到应用程序图标。但是在其他地方我可以看到图标。
脚本文件确实包含以下内容:
[Setup]
SetupIconFile={#MySetupImageIco}

有没有其他东西我需要设置才能在“程序和功能”控制面板小程序中显示应用程序图标?我正在对Windows 8.1进行测试。
我应该补充一下,最终用户安装程序在多个位置显示图标,不仅仅是在控制面板区域,其他图标实例都正常。我从一个愚蠢用户的角度来看。每个图标的视觉实例可能与那个SetupIconFile变量关联,也可能不关联。控制面板小程序是否使用了不同的变量呢?

我应该补充说明的是,最终用户安装程序在多个位置显示图标,而不仅仅是在控制面板区域,其他图标实例也都正常。我从一个愚蠢的用户角度出发。每个图标的视觉实例可能与那个SetupIconFile变量相关联,也可能不相关联。控制面板小程序是否使用了不同的变量呢? - Sarah Weinberger
5个回答

57

解决方案是:

添加

[Setup]
UninstallDisplayIcon={app}\{#MyAppExeName}

指定实际的ico文件没有起作用,但这个条目起了作用。

我测试过Windows 8/8.1。在Windows 7中,没有这行代码也可以工作。


我遇到了一个问题,控制面板显示通用图标,我想要更改它。我已经使用了 SetupIconFile=MyIcon.ico,现在安装输出显示了图标,但是同样的图标没有显示在控制面板中,这个方法可以解决这个问题吗? - zar
我不确定你的问题。我刚在Windows 10的控制面板程序和功能中检查了我的应用程序,我确实看到了ICO图像。我建议在Oracle的Virtual Box上创建一个干净的安装操作系统,然后再试一次。 - Sarah Weinberger
5
UninstallDisplayIcon 所指定的路径将原封不动地保存到目标计算机的卸载注册表键中。因此,它必须指向目标计算机上存在的文件。它不像 SetupIconFile 那样嵌入到安装程序中。因此,如果需要, UninstallDisplayIcon 可以指向 .ico 文件,但是 .ico 文件需要明确地部署到目标计算机上(例如使用 [Files] 部分)。 - Martin Prikryl

15

1
但是您想要拥有您的应用程序图标,而不是通用的设置图标。 - Martin Prikryl
1
@MartinPrikryl,它确切地添加了您的应用程序图标。也许对于复杂的情况(多个图标,单独的应用程序作为修复/卸载等),它的工作方式不同,但对于典型用例来说,它非常方便(并且可以作为工具过程的一部分生成)。 - Yury Schkatula
6
好的,我明白了,如果你设置了“SetupIconFile”,它就会起作用。 - Martin Prikryl
3
我最喜欢这个选项,因为我设置了“SetupIconFile”。 - KurzedMetal

2
在Windows 11中,您可以直接使用图标文件本身。
使用UninstallDisplayIcon=C:\Path\to\ico\file即可实现。

对我来说有效。

1
如同我对@Sarah回答的评论所说。 - Martin Prikryl

-1

添加

应该是

UninstallDisplayIcon= {app}ForwardSlash{#MyAppExeName}

我已经对其进行了最新版本的Windows 10测试。


我刚刚检查了我的代码,你关于斜杠的说法是正确的。不过我不确定 "forwardSlash" 是否等同于 ""。 我一直在使用反斜杠,但没有注意到缺少斜杠。我在编辑之前检查了上面的答案,并发现我添加了一个反斜杠,但是斜线没有显示出来,所以我将其更改为正斜杠。 - Sarah Weinberger
这是无稽之谈,当然是反斜杠。这是一个Windows路径。(虽然一如既往地,你也可以使用正斜杠,Windows也能识别,但那不正确)。 - Martin Prikryl

-3

我在使用你的#MyAppExeName解决方案时遇到了问题,因为我使用了OutputBaseFilename指令。更加优雅的解决方案是:

UninstallDisplayIcon={srcexe}

4
不要这样做。当用户删除原始安装程序文件({srcexe}解析出的内容)时,它会立即损坏。 - Martin Prikryl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接