在 NSIS 脚本中设置不同的开始菜单图标?

Setting different Start Menu icon in NSIS script?

是否可以在 NSIS 中为开始菜单快捷方式和桌面快捷方式使用不同的图标?

在桌面上,快捷方式尺寸完美,为 48x48。但是在开始菜单中,图标的大小缩小到我假设的 32x32 并且看起来不稳定。

CreateShortCut "$SMPROGRAMS${NAME}.lnk" \
             "$INSTDIR$(shortcut_name).lnk"
CreateShortCut "$DESKTOP${NAME}.lnk" \
             "$INSTDIR$(shortcut_name).lnk"

非常感谢。

如果您查看 CreateShortcut 的规范,您会发现参数如下。

[/NoWorkingDir] link.lnk target.file [parameters [icon.file [icon_index_number [start_options [keyboard_shortcut [description]]]]]]

由于您没有任何参数,我相信您必须向其传递一个空字符串。所以像这样的事情可能会做到。

CreateShortCut "$SMPROGRAMS${NAME}.lnk" \
    "$INSTDIR\MyApplication.exe" \
    "" \
    "$INSTDIR\MyApplication.exe"`

或者,如果您的主可执行文件中有另一个图标并想使用它,您可以像这样在图标路径后指定一个索引。

CreateShortCut "$SMPROGRAMS${NAME}.lnk" \
    "$INSTDIR\MyApplication.exe" \
    ""\
    "$INSTDIR\MyApplication.exe" 2`

一个 Windows 图标可以包含多个不同大小的图像,您的图标最好包含 16x16、24x24、32x32、48x48、128x128 和 256x256 像素的图像。

桌面和开始菜单上的图标大小取决于系统设置和 DPI。

对于大多数安装程序,您只需使用 CreateShortCut "$SMPROGRAMS${NAME}.lnk" "$INSTDIR\myapp.exe",而 myapp.exe 的资源中会有图标。您还可以使用外部 .ico 文件:CreateShortCut "$SMPROGRAMS${NAME}.lnk" "$INSTDIR\myapp.exe" "" "$INSTDIR\myapp.ico" 0