我有以下 NSIS 代码
Function CreateDesktopSC
;Creates Desktop Shortcut
SetShellVarContext current
SetOutPath "$DOCUMENTS\Foo\"
SetShellVarContext all
detailprint "Icon path: $INSTDIR\Bar\icon.ico"
CreateShortCut "$DESKTOP\${productName}.lnk" "$INSTDIR\Bar\binary.exe" "" "$INSTDIR\Bar\icon.ico" 0
FunctionEnd
安装日志显示以下内容(来自 detailprint 命令)图标路径:C:\Program Files (x86)\Bar\icon.ico
快捷方式已创建,但带有可执行文件中的图标。
如果我打开 lnk 文件或右键单击快捷方式并单击“更改图标 ...”,则会收到错误消息“Windows 找不到文件 %ProgramFiles%\Bar\icon.ico。”
如果我浏览到 %ProgramFiles%,它会将我带到 c:\Program Files,而不是 detailsprint 命令中显示的 x86 版本。图标文件存在,但在 x86 文件夹中。
似乎 NSIS 或 windows 正在用“%ProgramFiles%”替换“C:\Program Files (x86)\”,这并不指向 x86 版本。
可执行文件的实际路径是正确的,只是图标链接不正确。
有任何想法吗?