Joh*_*ohn 5 icons nsis filepath
我有以下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
Run Code Online (Sandbox Code Playgroud)
安装日志显示以下内容(来自detailprint命令)图标路径:C:\ Program Files(x86)\ Bar\icon.ico
创建快捷方式,但使用可执行文件中的图标.
如果我打开lnk文件或右键单击快捷方式并单击"更改图标...",我收到错误"Windows无法找到文件%ProgramFiles%\ Bar\icon.ico".
如果我浏览到%ProgramFiles%,它会转到c:\ Program Files,而不是详细打印命令中显示的x86版本.图标文件存在,但在x86文件夹中.
似乎NSIS或Windows正在用"%ProgramFiles%"替换"C:\ Program Files(x86)\",它不指向x86版本.
可执行文件的实际路径是正确的,它只是图标链接不正确.
有任何想法吗?
小智 9
该线程的解决方法是在您的图标代码中添加第二个\.我真的不明白为什么这对64位系统有帮助,但它确实......
所以替换:
CreateShortCut "$SMPROGRAMS\$StartMenuGroup\${PRODUCT_NAME}.lnk" "yourapp.exe" "$INSTDIR\${APPLICATION_ICON}"
Run Code Online (Sandbox Code Playgroud)
同
CreateShortCut "$SMPROGRAMS\$StartMenuGroup\${PRODUCT_NAME}.lnk" "yourapp.exe" "$INSTDIR\\${APPLICATION_ICON}"
Run Code Online (Sandbox Code Playgroud)
在APPLICATION_ICON之前添加第二个\后,将再次显示图标
令人困惑,但它有效