我正在使用nsis编写Windows安装程序。此安装程序包含一个在xampp之上运行的Web应用程序,因此xampp也作为此应用程序的服务安装。但是xamp在Windows 7上安装在64位机器上会出现问题。这是由于此处提到的C:\ Program Files(x86)中的目录路径问题。
XAMPP Error Solution? I have that installed on my Windows XP Dual Boot Machine
但目前安装程序中的自动安装路径设置如下。
C:\Program Files (x86)\myapplication
安装程序脚本只有以下宏来添加目录选择器页面。
!insertmacro MUI_PAGE_DIRECTORY
作为一种解决方案,我要做的就是采取行动。
为此,我需要通过
获取安装目录路径$INSTDIR
和
由于我对nsis不太熟悉,我无法编写这个程序。
有人可以帮我解决这个问题吗?
答案 0 :(得分:8)
NSIS提供$ PROGRAMFILES32和$ PROGRAMFILES64:
InstallDir "$PROGRAMFILES64\myapp"
答案 1 :(得分:3)
在win7 / 64上,可以通过%ProgramW6432%
环境变量从32位应用程序获取64位程序文件。
您可以尝试使用ReadEnvStr
:
c:\program files
(如果未在其他地方配置)以下是测试它的代码段:
ReadEnvStr $0 ProgramW6432
StrCmp $0 "" 0 +3
MessageBox MB_OK "it is a 32b system"
goto +2
MessageBox MB_OK "it is a 64b system"
在你的情况下,它可以做:
ReadEnvStr $0 ProgramW6432
StrCmp $0 "" +2 0
StrCpy $INSTDIR $0
修改:对于要拒绝Program Files (x86)
的点,您可以使用Anders为another question提供的.onVerifyInstDir
回调方法,它会检查选择用户在更改页面之前选择的目录:
Function .onVerifyInstDir
ReadEnvStr $0 "ProgramFiles(x86)"
StrCmp $0 $INSTDIR 0 PathGood
MessageBox MB_OK "directory not valid for installation"
Abort
PathGood:
FunctionEnd
在这里,我使用另一个环境变量来获取程序文件的(x86)变体。