【问题标题】:Setting up an icon for start menu folder group in InnoSetup在 InnoSetup 中为开始菜单文件夹组设置图标
【发布时间】:2012-02-10 12:31:37
【问题描述】:

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

提前谢谢你。

【问题讨论】:

  • 要求似乎有点奇怪,因为 (a) 大多数应用程序不会自定义其开始菜单文件夹图标,因此您的应用程序看起来很不合适,并且 (b)使用 Windows 7 的程序固定和开始菜单搜索,几乎没有人会首先浏览所有程序以查看该文件夹。

标签: menu inno-setup pascalscript


【解决方案1】:

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

[.ShellClassInfo]
IconResource=c:\somepath\icon.ico,0

如果您想将可执行文件中的图标用作资源(其中c:\somepath\program.exe 是您的可执行文件的路径),或者创建具有类似内容的desktop.ini 文件:

[.ShellClassInfo]
IconResource=c:\somepath\program.exe,0

将此desktop.ini 文件保存到要应用图标的目录中。一个非常重要的注意事项,你必须设置这个新创建的文件属性隐藏和系统,否则它就赢了不行!

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

【讨论】:

  • +1 我没有意识到这是 OP 想要的。如果是,您可以使用[ini] 部分来生成该文件。
  • 您也可以使用PathMakeSystemFolder api 使其成为系统文件夹。 desktop.ini 将自动设置为适当的属性。
  • @kobik,谢谢!我刚刚描述了独立更改图标 InnoSetup 所需的内容。关于[ini] 部分,您是对的,稍后我将包括the implementation ;)
  • @kobik,没我想的那么容易;您必须将更改通知 shell,SHChangeNotify 我的第一个候选人有指针参数。与此最接近的函数SHGetSetFolderCustomSettings 可以创建desktop.ini 文件,它更复杂,更容易将其放入我最喜欢的外部库中。
  • 也可以传递指针参数。只需将它们声明为PChar:procedure SHChangeNotify(wEventId: Longint; uFlags: UINT; dwItem1, dwItem2: PChar); external 'SHChangeNotify@shell32.dll stdcall'。将'' 传递为nil。这是一个很好的example。
猜你喜欢
  • 2014-03-09
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多