I need to be able to run this batch fine on both x86 and x64 machines to check if a program has been installed correctly .
We have an app that installs in x86 in the standard program files directory, and when installed in x64 it installs in the x86 program files directory.
Currently it reports false
, displays the echo that the app is installed and the echo that the app is not installed when run on x86 and x64.
if /i "%processor_architecture%"=="x86" GOTO X86DC
if /i "%processor_architecture%"=="X64" GOTO X64DC
:X86DC
if exist "C:\Program Files\installeddir\app.exe" ( echo ***App is Installed Successfully*** )
if not exist "C:\Program Files\installeddir\app.exe" ( echo ***App is not installed *** )
:X64DC
if exist "C:\Program Files(x86)\installeddir\app.exe" ( echo ***App is Installed Successfully*** )
if not exist "C:\Program Files(x86)\installeddir\app.exe" ( echo ***App is not installed*** )
Best Answer
Wouldn't something like this be clearer? Also eliminates the issue of making assumptions about the processor_architecture variable pointed out by @MBu above.
Another alternative that just now occurs to me would be for your installation program or batch file to write a key to the registry with the installation location (can be done with reg.exe, a standard Windows utility). I'd be happy to flesh that solution out a bit more if you're interested.