| @echo off | 
 | setlocal | 
 | if .%1==. goto :usage | 
 | echo. | 
 | echo. | 
 |  | 
 | echo Checking if output files are writeable... | 
 | SET WRITEABLE_FILE_ERROR=0 | 
 | CALL :CheckWritable "%~dp0..\prebuilt\gwt-dev-plugin-x86.msi" | 
 | CALL :CheckWritable "%~dp0..\prebuilt\gwt-dev-plugin-x64.msi" | 
 | CALL :CheckWritable "%~dp0oophm.wxs" | 
 | IF "%WRITEABLE_FILE_ERROR%"=="1" GOTO :DONE | 
 |  | 
 | SET BINARY_DIR=%~dp0..\prebuilt\Win32 | 
 | SET BINARY_FILE=oophm.dll | 
 |  | 
 | IF NOT EXIST %BINARY_DIR%\%BINARY_FILE% ( | 
 |     echo. | 
 | 	echo ERROR - Could not find oophm binary under %BINARY_DIR% | 
 | 	echo         Verify that the build succeeded before trying to create the installer. | 
 | 	echo. | 
 | 	goto :eof | 
 | ) | 
 |  | 
 | echo. | 
 | echo 'heating' binary %BINARY_FILE% under %BINARY_DIR% ... | 
 | echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 | %~dp0wix\heat.exe file %BINARY_DIR%\%BINARY_FILE% -v -nologo -gg -g1 -dr INSTALLDIR -generate components -directoryid ff -cg oophmDll -out %~dp0oophm.wxs -var var.binDir | 
 | %~dp0wix\sed.exe --in-place=xml "s/Source=\"\$(var\.binDir)\\Win32\\oophm.dll\"/Source=\"\$(var\.binDir)\\oophm.dll\"/g" %~dp0oophm.wxs | 
 | %~dp0wix\sed.exe --in-place=xml "s/Directory Id=\"dir315E0C50682DFB472927FE1254A22F6A\" Name=\"Win32\"/Directory Id=\"dir315E0C50682DFB472927FE1254A22F6A\" Name=\"$(var.platform)\"/g" %~dp0oophm.wxs | 
 | %~dp0wix\sed.exe --in-place=xml "s/<Component /<Component Win64=\"$(var.win64Flag)\" /g" %~dp0oophm.wxs | 
 | %~dp0wix\sed.exe --in-place=xml "s/<Wix xmlns=\"http:\/\/schemas.microsoft.com\/wix\/2006\/wi\">/<Wix xmlns=\"http:\/\/schemas.microsoft.com\/wix\/2006\/wi\">\n\t<\?if $(var.platform)=x64 \?>\n\t<\?define win64Flag=\"yes\" \?>\n\t<\?else \?>\n\t<\?define win64Flag=\"no\" \?>\n\t<\?endif \?>/g" %~dp0oophm.wxs | 
 | %~dp0wix\sed.exe --in-place=xml "s/Root=\"HKCR\"/Root=\"HKMU\"/g" %~dp0oophm.wxs | 
 |  | 
 | echo. | 
 | echo building 32 bit installer... | 
 | echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 | echo. | 
 | %~dp0wix\candle -nologo -arch x86 -dversion=%1 -dplatform=Win32 -dbinDir=%~dp0\..\prebuilt\Win32\ -dbinary=oophm.dll %~dp0\installer.wxs.xml %~dp0\oophm.wxs | 
 | %~dp0wix\light.exe -nologo oophm.wixobj installer.wxs.wixobj -o ..\prebuilt\gwt-dev-plugin-x86.msi -spdb | 
 |  | 
 | echo. | 
 | echo building 64 bit installer... | 
 | echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 | echo. | 
 | %~dp0wix\candle -nologo -arch x64 -dversion=%1 -dplatform=x64 -dbinDir=%~dp0\..\prebuilt\x64\  -dbinary=oophm.dll %~dp0\installer.wxs.xml %~dp0\oophm.wxs | 
 | %~dp0wix\light.exe -nologo oophm.wixobj installer.wxs.wixobj -o ..\prebuilt\gwt-dev-plugin-x64.msi -spdb | 
 |  | 
 | echo. | 
 | echo Done. | 
 | echo. | 
 | goto :eof | 
 |  | 
 | :CheckWritable | 
 | ECHO Checking if %1 is writable... | 
 | SET RW= | 
 | DIR /A:-R %1 1>NUL 2>NUL | 
 | if %ERRORLEVEL% LEQ 0 GOTO :EOF | 
 | ECHO. | 
 | ECHO     ERROR: file %1 must be writeable before executing this script. | 
 | ECHO            make sure you checked the file for editing. | 
 | ECHO. | 
 | SET WRITEABLE_FILE_ERROR=1 | 
 | ECHO %WRITEABLE_FILE_ERROR% | 
 | GOTO :eof | 
 |  | 
 | :usage | 
 | echo. | 
 | echo   usage: build ^<version^>  | 
 | echo      where: ^<version^> has the syntax major.minor.build  | 
 | echo. | 
 | echo        example: build 1.1.3123 | 
 |  | 
 | :done | 
 | echo. | 
 | echo. | 
 |  | 
 | endlocal | 
 |  |