I’m writing a installer for windows using nsis. This installer contains a web application which is run on top of xampp, so xampp is also installed as a service with this application. But xamp gives an issue when it installed in 64bit machine on Windows 7. This is due to the directory path issue in C:\Program Files (x86) as mentioned here.
XAMPP Error Solution? I have that installed on my Windows XP Dual Boot Machine
But currently the automatic installation path is set as follows in the installer.
C:\Program Files (x86)\myapplication
The installer script just have the following macro to add the directory chooser page.
!insertmacro MUI_PAGE_DIRECTORY
As a solution what I’m going to do are following actions.
- Change the default directory to c:\Program Files
- If the user choose the x86 folder give an error message to choose another directory.
For that I need to get the install directory path by
$INSTDIR
and
- check whether there is a sub string of x86 with that path
- if so give the error messages.
- Change the default path to c:\Program Files
Since I’m not much familiar with nsis I’m unable to write this program.
Can someone help me on this issue?
On a win7/64, the 64 bits program files can be get from a 32 bit application via the
%ProgramW6432%environment variable.You could try to get it with
ReadEnvStr:c:\program files(if not configured elsewhere)Here is a snippet that test it :
In your case, it could do :
Edit: For the point to refuse
Program Files (x86)you could use the.onVerifyInstDircallback method that was given by Anders for another question, it will check the choosen directory as it is selected by the user and before changing the page :Here, I use another environment variable to get the (x86) variant of program files.