Tengo el siguiente código NSISNSIS CreateShortcut insiste en usar% Archivos de programa% para la ruta de icono
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
El registro de instalación muestra el siguiente (con el comando detailprint) Ruta icono: C: \ Archivos de programa (x86) \ Barra \ icono.ico
Se crea el acceso directo, pero con el icono del ejecutable.
Si abro el archivo lnk o hago clic derecho en el acceso directo y hago clic en "Cambiar icono ...", aparece el error "Windows no puede encontrar el archivo% ProgramFiles% \ Bar \ icon.ico".
Si busco% ProgramFiles%, me lleva a c: \ Archivos de programa, no a la versión x86 como se muestra en el comando detailsprint. El archivo de icono existe, pero en la carpeta x86.
Parece que NSIS o Windows está reemplazando "C: \ Archivos de programa (x86) \" con "% ProgramFiles%", que no apunta a la versión x86.
La ruta real al ejecutable es correcta, es solo el enlace del icono que es incorrecto.
¿Alguna idea?