次の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% を参照すると、detailsprint コマンドで表示される x86 バージョンではなく、c:\Program Files に移動します。アイコン ファイルは存在しますが、x86 フォルダーにあります。
NSIS または Windows が "C:\Program Files (x86)\" を "%ProgramFiles%" に置き換えているようですが、これは x86 バージョンを指していません。
実行可能ファイルへの実際のパスは正しいです。正しくないのはアイコン リンクだけです。
何か案は?