Installation 获取程序文件的路径

Installation 获取程序文件的路径,installation,nsis,Installation,Nsis,在我的NSIS安装程序中,如何始终获取用户程序文件的路径,而不是C:/Program Files(x86)/,而是始终只获取C:/Program Files/ 以下变量$PROGRAMFILES在64位上提供C:/PROGRAMFILES(x86)/,在其他位上提供C:/PROGRAMFILES/。我希望始终获得C:/Program Files/目录的路径。仅64位的应用程序示例,但您可以轻松地将其转换为32+64位:) 如果始终要获取本机程序文件文件夹,请使用$PROGRAMFILES64,但

在我的NSIS安装程序中,如何始终获取用户程序文件的路径,而不是
C:/Program Files(x86)/
,而是始终只获取
C:/Program Files/


以下变量
$PROGRAMFILES
在64位上提供
C:/PROGRAMFILES(x86)/
,在其他位上提供
C:/PROGRAMFILES/
。我希望始终获得C:/Program Files/目录的路径。

仅64位的应用程序示例,但您可以轻松地将其转换为32+64位:)


如果始终要获取本机程序文件文件夹,请使用$PROGRAMFILES64,但这样做通常是错误的,因为不应在其中安装x86二进制文件

如果安装程序同时具有x86和x64二进制文件,则可以使用$PROGRAMFILES64:

!include x64.nsh

InstallDir "$PROGRAMFILES64\MyApp"

Section
SetOutPath $InstDir
${If} ${RunningX64}
  File "x64\myapp.exe"
${Else}
  File "x86\myapp.exe"
${EndIf}
SectionEnd

为什么?如果您的程序是32位的,您应该使用
C:/ProgramFiles(x86)/
${EnableX64FSRedirection}不会更改常量,并且您不应该长时间启用它,只在文件提取期间启用。您是对的。因此,Jake可以使用
$PROGRAMFILES64
/
$PROGRAMFILES32
$PROGRAMFILES
调用特定的程序文件目录。
!include x64.nsh

InstallDir "$PROGRAMFILES64\MyApp"

Section
SetOutPath $InstDir
${If} ${RunningX64}
  File "x64\myapp.exe"
${Else}
  File "x86\myapp.exe"
${EndIf}
SectionEnd