123 lines
3.9 KiB
Batchfile
123 lines
3.9 KiB
Batchfile
@setlocal
|
|
@echo off
|
|
|
|
rem INITIALIZE COMMAND LINE PARAM VARIABLES
|
|
SET APP_NAME=%1
|
|
SET APP_NAMESPACE=%3
|
|
SET APP_ROOT_DIR=%2
|
|
set APP_NAME=%APP_NAME:"=%
|
|
set APP_ROOT_DIR=%APP_ROOT_DIR:"=%
|
|
set APP_NAMESPACE=%APP_NAMESPACE:"=%
|
|
|
|
rem VALIDATE COMMAND LINE PARAMETERS
|
|
(
|
|
rem REQUIRES THREE PARAMETERS
|
|
if "%3"=="" (
|
|
goto :SYNTAX
|
|
)
|
|
|
|
rem THERE IS A FOURTH PARAMETER
|
|
if not "%4"=="" (
|
|
rem IF IT IS usevbc, THEN IT IS OK
|
|
if "%4"=="usevbc" (
|
|
set USE_VBC=%4
|
|
) else (
|
|
goto :SYNTAX
|
|
)
|
|
)
|
|
|
|
REM echo " %* " | find /v " -? " | find /v " /? " | find /i /v " -help " | find /i /v " /help " | find " %* " > NUL
|
|
if errorlevel 1 goto :SYNTAX
|
|
)
|
|
|
|
rem INITIALIZE HARDCODED VARIABLES (I.E. CONSTANTS)
|
|
rem IF WE REQUEST TO COMPILE USING VBC, TRY USING ONLY VBC
|
|
if "%USE_VBC%"=="usevbc" (
|
|
if Exist "%windir%\Microsoft.NET\Framework\v1.1.4322\vbc.exe" (
|
|
SET VBC_DIR=%windir%\Microsoft.NET\Framework\v1.1.4322
|
|
) else (
|
|
if Exist "%windir%\Microsoft.NET\Framework\v1.0.3705\vbc.exe" (
|
|
set VBC_DIR=%windir%\Microsoft.NET\Framework\v1.0.3705
|
|
) else (
|
|
goto :SYNTAX
|
|
)
|
|
)
|
|
) else (
|
|
rem TRY USING VS.NET 2003 (.NET FRAMEWORK 1.1)
|
|
if Exist "%ProgramFiles%\Microsoft Visual Studio .NET 2003\Common7\IDE\devenv.com" (
|
|
set DEVENV_DIR=%ProgramFiles%\Microsoft Visual Studio .NET 2003\Common7\IDE
|
|
) else (
|
|
rem TRY USING VS.NET 2002 (.NET FRAMEWORK 1.0)
|
|
if Exist "%ProgramFiles%\Microsoft Visual Studio .NET\Common7\IDE\devenv.com" (
|
|
set DEVENV_DIR=%ProgramFiles%\Microsoft Visual Studio .NET\Common7\IDE
|
|
) else (
|
|
rem TRY USING VBC .NET FRAMEWORK 1.1
|
|
if Exist "%windir%\Microsoft.NET\Framework\v1.1.4322\vbc.exe" (
|
|
SET VBC_DIR=%windir%\Microsoft.NET\Framework\v1.1.4322
|
|
) else (
|
|
rem TRY USING VBC .NET FRAMEWORK 1.0
|
|
if Exist "%windir%\Microsoft.NET\Framework\v1.0.3705\vbc.exe" (
|
|
set VBC_DIR=%windir%\Microsoft.NET\Framework\v1.0.3705
|
|
) else (
|
|
goto :SYNTAX
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
rem INITIALIZE DERIVED VARIABLES
|
|
SET APP_BIN_DIR=%APP_ROOT_DIR%\bin
|
|
SET APP_DLL=%APP_BIN_DIR%\%APP_NAME%.dll
|
|
SET APP_PDB=%APP_BIN_DIR%\%APP_NAME%.pdb
|
|
|
|
rem MODIFY ENVIRONMENT VARIABLES
|
|
SET PATH=%PATH%;%VBC_DIR%;%DEVENV_DIR%
|
|
SET LIB=%LIB%;%APP_BIN_DIR%
|
|
|
|
rem CHECK WHETHER ANY OF THE APP'S FOLDERS CONTAIN VB FILES
|
|
(
|
|
for /R "%APP_ROOT_DIR%" %%F in (*.vb) do (
|
|
goto :HASVB
|
|
)
|
|
rem COMPILATION OF %APP_NAME%.DLL SKIPPED: APP HAS NO VB FILES
|
|
exit /b 0
|
|
)
|
|
|
|
:HASVB
|
|
|
|
rem MAKE THE APP'S EXISTING DLL AND PDB FILES (IF ANY) WRITABLE
|
|
(
|
|
attrib -r "%APP_DLL%" > NUL
|
|
if exist "%APP_PDB%" (
|
|
attrib -r "%APP_PDB%" > NUL
|
|
)
|
|
)
|
|
|
|
rem COMPILE APPLICATION
|
|
(
|
|
if Not "%DEVENV_DIR%" == "" (
|
|
rem COMPILING APPLICATION %APP_NAME% Using Visual Studio.Net
|
|
cd /d "%APP_ROOT_DIR%"
|
|
devenv.com %APP_NAME%.vbproj /build release
|
|
) else (
|
|
rem COMPILE ALL FILES WITH .VB EXTENSIONS IN THE APP'S ROOT FOLDER (AND ANY SUBFOLDERS)
|
|
vbc @"%APP_ROOT_DIR%\CompileApplication.rsp" /out:"%APP_DLL%" /recurse:"%APP_ROOT_DIR%\*.vb" /rootnamespace:%APP_NAMESPACE%
|
|
)
|
|
) || (
|
|
echo UNABLE TO COMPILE %APP_NAME%.DLL
|
|
exit /b 3
|
|
)
|
|
|
|
goto :EOF
|
|
:SYNTAX
|
|
echo.
|
|
echo Usage: CompileApplication AppName AppDirectory AppNameSpace
|
|
echo Example1: CompileApplication MyApp C:\MyApp ParentNS.ChildNS
|
|
echo Example2: CompileApplication MyApp "C:\My App" ParentNS.ChildNS
|
|
echo.
|
|
echo AppName The application name.
|
|
echo AppDirectory The application directory.
|
|
echo AppNameSpace The application name space.
|
|
exit /b 0
|
|
goto :EOF
|