Inno setup Inno安装-如何在没有单独图标文件的情况下更改卸载程序快捷方式的图标?

Inno setup Inno安装-如何在没有单独图标文件的情况下更改卸载程序快捷方式的图标?,inno-setup,desktop-shortcut,startmenu,windows-shortcut,Inno Setup,Desktop Shortcut,Startmenu,Windows Shortcut,是否可以在“开始”菜单中更改卸载程序快捷方式的图标,而不存储单独的图标文件(到应用程序文件夹) 我看到了这一点,但我无法实现它 我的代码: [Icons] Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe} Windows shell快捷方式的图标可以由外部图标文件(您不需要的)或快捷方式指向的文件设置。因此,您必须修改卸载程序的图标 您必须在编译时修改卸载程序图标 您不能在安装时执行此操作,因

是否可以在“开始”菜单中更改卸载程序快捷方式的图标,而不存储单独的图标文件(到应用程序文件夹)

我看到了这一点,但我无法实现它

我的代码:

[Icons]
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}

Windows shell快捷方式的图标可以由外部图标文件(您不需要的)或快捷方式指向的文件设置。因此,您必须修改卸载程序的图标


您必须在编译时修改卸载程序图标

您不能在安装时执行此操作,因为卸载程序包含自己的校验和。如果您修改卸载程序,它将拒绝启动,并声称它已损坏。除非您了解如何同时修复卸载程序中存储的校验和


但是Inno安装程序不允许在编译时修改卸载程序图标

你能做的就是滥用“回调”。设置为
SignTool
的命令甚至可以处理卸载程序。实际上,它可以用卸载程序做任何事情,而不仅仅是“签名”。但在任何情况下都必须对其进行“签名”(Inno安装程序会显式检查可执行文件是否在“工具”完成后进行签名)

您可以通过将
SignTool
设置为批处理文件(或其他脚本)来实现,该批处理文件最终将运行实际的
SignTool.exe
,但在此之前,它将修改图标(例如,使用命令行)

有关修改卸载程序并对其签名的此类批处理文件的示例,请参阅

所以这是可行的,只要你做代码签名(你无论如何都应该做)。你需要一个代码签名证书



免责声明:将快捷方式添加到卸载程序的“开始”菜单违反Windows准则(创建“开始”菜单组至少违反Windows 8及以上版本的Windows准则)。

可以通过外部图标文件(您不想要的)或快捷方式指向的文件设置Windows shell快捷方式的图标。因此,您必须修改卸载程序的图标


您必须在编译时修改卸载程序图标

您不能在安装时执行此操作,因为卸载程序包含自己的校验和。如果您修改卸载程序,它将拒绝启动,并声称它已损坏。除非您了解如何同时修复卸载程序中存储的校验和


但是Inno安装程序不允许在编译时修改卸载程序图标

你能做的就是滥用“回调”。设置为
SignTool
的命令甚至可以处理卸载程序。实际上,它可以用卸载程序做任何事情,而不仅仅是“签名”。但在任何情况下都必须对其进行“签名”(Inno安装程序会显式检查可执行文件是否在“工具”完成后进行签名)

您可以通过将
SignTool
设置为批处理文件(或其他脚本)来实现,该批处理文件最终将运行实际的
SignTool.exe
,但在此之前,它将修改图标(例如,使用命令行)

有关修改卸载程序并对其签名的此类批处理文件的示例,请参阅

所以这是可行的,只要你做代码签名(你无论如何都应该做)。你需要一个代码签名证书



免责声明:向“开始”菜单中添加卸载程序的快捷方式违反Windows准则(并且创建“开始”菜单组至少违反Windows 8及以上版本的Windows准则)。

您可以使用
IconFilename:“{app}\Icon.ico”设置图标
对于程序和应用程序,您可以在[Setup]部分使用
UninstallDisplayIcon={app}\Icon.ico
@MartinPrikryl我不想将图标文件添加到我完全理解的应用程序文件夹中。您可以使用
IconFilename:“{app}\Icon.ico”设置图标
对于程序和应用程序,您可以在[Setup]部分使用
UninstallDisplayIcon={app}\Icon.ico
@MartinPrikryl设置图标。我不想将图标文件添加到应用程序文件夹,我完全理解。