We have several deployment scripts that have to run on both 32-bit and 64-bit environments. Until now, we just modified the script with a “replace all’ command for the 64-bit, which had to use “C:Program Files (x86)” instead of the traditional “C:Program Files” directory.
This was my first attempt:
set BTDFProgFiles="%programfiles(x86)%" if %BTDFProgFiles%=="" set BTDFProgFiles="%programfiles%" echo BTDFProgFiles=%BTDFProgFiles% rem Then run the desired program %BTDFMSBuildPath% "%BTDFProgFiles%ABC.Common%2DeploymentABC.Common.BizTalk.Deployment.btdfproj" /p:%PARMS% /l:FileLogger,Microsoft.Build.Engine;logfile="%BTDFProgFiles%ABC.EC.Common%2DeployResults
Then later, I was finding the quotes weren’t working, so this was the fix:
@ECHO OFF setlocal EnableDelayedExpansion IF (%1) ==() GOTO NOPARM1 IF (%2) ==() GOTO NOPARM2 IF EXIST "%windir%Microsoft.NETFrameworkv3.5MSBuild.exe" ( SET BTDFMSBuildPath="%windir%Microsoft.NETFrameworkv3.5MSBuild.exe" ) ELSE IF EXIST "%windir%Microsoft.NETFrameworkv2.0.50727MSBuild.exe" ( SET BTDFMSBuildPath="%windir%Microsoft.NETFrameworkv2.0.50727MSBuild.exe" ) @echo on set "BTDFProgFiles=%programfiles(x86)%" if "%BTDFProgFiles%"=="" set "BTDFProgFiles=%programfiles%" echo BTDFProgFiles=%BTDFProgFiles% rem Then run the desired program %BTDFMSBuildPath% "%BTDFProgFiles%ABC.Common%2DeploymentABC.Common.BizTalk.Deployment.btdfproj" /p:%PARMS% /l:FileLogger,Microsoft.Build.Engine;logfile="%BTDFProgFiles%ABC.EC.Common%2DeployResultsDeployResults.txt"
NOTE: This was in conjunction with a wrapper script to run a series of BTDF (BizTalk Deployment Framework) scripts to deploy about 8 apps in one script.