我有以下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正在将"C:\Program Files ( x86 )\“替换为"%ProgramFiles%",这并不指向x86版本。
可执行文件的实际路径是正确的,只是图标链接不正确。
有什么想法吗?
发布于 2012-08-14 16:25:46
线程的变通方法是在图标代码中添加第二个。我真的不明白为什么这对64位系统有帮助,但它确实有帮助。
因此,请替换:
CreateShortCut "$SMPROGRAMS\$StartMenuGroup\${PRODUCT_NAME}.lnk" "yourapp.exe" "$INSTDIR\${APPLICATION_ICON}"
使用
CreateShortCut "$SMPROGRAMS\$StartMenuGroup\${PRODUCT_NAME}.lnk" "yourapp.exe" "$INSTDIR\\${APPLICATION_ICON}"
在APPLICATION_ICON之前添加第二个\后,该图标将再次显示
令人困惑,但它是有效的
发布于 2012-04-25 22:47:38
发布于 2012-08-14 16:30:05
从path禁用
所有的工作都是通过系统插件完成的。为什么要复杂化...
https://stackoverflow.com/questions/10324004
复制