Menu 在InnoSetup中设置“开始”菜单文件夹组的图标

Menu 在InnoSetup中设置“开始”菜单文件夹组的图标,menu,inno-setup,pascalscript,Menu,Inno Setup,Pascalscript,令我惊讶的是,我没有找到解决方案,如何为前面的“开始菜单”应用程序组文件夹设置图标。我正在寻找InnoSetup脚本中的自动解决方案 提前感谢。如果您想将*.ico用作资源,请创建包含以下内容的desktop.ini文件(其中c:\somepath\icon.ico是您图标的路径): 或者,如果要将可执行文件中的图标用作资源(其中c:\somepath\program.exe是可执行文件的路径),请使用如下内容创建desktop.ini文件: 将此desktop.ini文件保存到要应用图标的目录

令我惊讶的是,我没有找到解决方案,如何为前面的“开始菜单”应用程序组文件夹设置图标。我正在寻找InnoSetup脚本中的自动解决方案


提前感谢。

如果您想将
*.ico
用作资源,请创建包含以下内容的
desktop.ini
文件(其中
c:\somepath\icon.ico
是您图标的路径):

或者,如果要将可执行文件中的图标用作资源(其中
c:\somepath\program.exe
是可执行文件的路径),请使用如下内容创建
desktop.ini
文件:

将此
desktop.ini
文件保存到要应用图标的目录中。一个非常重要的注意事项是,您必须设置这个新创建的文件属性HiddenSystem,否则它将无法工作


因此,如果您在安装时将文件包含在安装包中,请仔细检查InnoSetup是否无法清除这些属性。

这似乎有点奇怪,因为(a)大多数应用程序都没有自定义“开始菜单”文件夹图标,因此您的文件夹看起来很不合适,以及(b)有了Windows7的程序锁定和开始菜单搜索,几乎没有人会在一开始就浏览所有程序来查看文件夹。如果是,可以使用
[ini]
部分生成该文件。也可以使用
PathMakeSystemFolder
api使其成为系统文件夹
desktop.ini
将自动设置为正确的属性。@kobik,谢谢!我刚刚描述了需要如何更改图标InnoSetup independent。关于
[ini]
部分,你说得对,我稍后会介绍;)@科比克,不像我想的那么容易;您必须将更改通知shell,并且我的第一个候选对象具有指针参数。与此最接近的函数是
SHGetSetFolderCustomSettings
,它可以创建
desktop.ini
文件,它更复杂,更容易将其放入我最喜欢的外部库中。此外,您还可以传递指针参数。只需将它们声明为
PChar
过程SHChangeNotify(wEventId:Longint;uFlags:UINT;dwItem1、dwItem2:PChar);外部的SHChangeNotify@shell32.dllstdcall'
。将
'
传递为
nil
。这是一个极好的例子。
[.ShellClassInfo]
IconResource=c:\somepath\icon.ico,0
[.ShellClassInfo]
IconResource=c:\somepath\program.exe,0