Installer For DevExpress VCL FullSource
Installer For DevExpress VCL FullSource
Installer For DevExpress VCL FullSource
****************************************************************************
*
* DevExpress VCL FullSource - Installer for D7-DXE6
*
* Tasks:
*
1) Compiling VCL packages (32bit and 64bit)
*
- Searching for installed TeeChart Version and modifying DPK-files
*
- Searching for installed FireDAC/AnyDAC Version
*
2) Installing packages into IDE
*
3) Updating Search Path and Browsing Path
*
*****************************************************************************
set "TestMode=OFF"
set starttime=%time%
set "varEcho="
set "varLogFile= >nul 2>&1"
if "%TestMode%"=="ON" (
set "varEcho=echo"
set "varLogFile= >> "%~dp0Log_TestMode.txt""
echo TestMode - LogFile > "%~dp0Log_TestMode.txt"
)
rem ---------------------------------------------------------rem Administrative permissions required
rem ---------------------------------------------------------net session >nul 2>&1
if %errorLevel% == 0 (
rem Success: Administrative permissions confirmed.
) else (
echo ERROR: Administrative permissions required.
echo.
echo INFO: Run batch-file again as ADMIN ...
echo.
pause
goto end
)
xcopy "%~dp0%%a\Sources\*.res"
xcopy "%~dp0%%a\Sources\*.dfm"
xcopy "%~dp0%%a\Sources\*.inc"
)
pause
:end
exit
rem
==================================================================================
rem
F U N C T I O N S
rem
==================================================================================
:func_install
set p1=%1_
set "str=D7_D2007_D2010_DXE_DXE2_DXE3_DXE4_DXE5_DXE6_"
if "x!str:%p1%=!"=="x%str%" (
echo.
echo ERROR: %1 not supported
echo.
Choose !str:~0,-1!
echo.
echo INFO: BAT file will be terminated now ...
echo.
pause
exit
)
CALL :func_HKCU BDSHKCU %1
CALL :func_rootdir ROOTDIR reg QUERY !BDSHKCU! /v RootDir
if not exist "!ROOTDIR!\Bin\dcc32.exe" (
echo ERROR: Compiler
echo
"!ROOTDIR!\Bin\dcc32.exe"
echo
NOT found
echo.
echo INFO: BAT file will be terminated now ...
echo.
pause
exit
)
set /a nCount=0
set /a nProgress=0
call :progress 0 >nul 2>&1
CALL :func_64Bit Is64BitSupport %1
CALL :func_Suffix SUFFIX %1
CALL :func_BDSCommonDir BDSCOMMONDIR %1
set
set
set
set
"BPLDir=!BDSCOMMONDIR!\Bpl"
"DCPDir=!BDSCOMMONDIR!\Dcp"
"RKeySearch32=!BDSHKCU!\Library"
"RKeySearch64="
set "D2010_OR_HIGHER=YES"
set "Edition=%1"
set "LIBSubDir32=!Edition!"
set "LIBSubDir64="
if "!Is64BitSupport!"=="YES" (
set "RKeySearch32=!BDSHKCU!\Library\Win32"
set "RKeySearch64=!BDSHKCU!\Library\Win64"
set "LIBSubDir32=!Edition!\Win32"
set "LIBSubDir64=!Edition!\Win64"
)
if "!Edition!"=="D7" (
set "DCPDir=!INSTALLDIR!\Library\D7"
set "D2010_OR_HIGHER=NO"
)
if "!Edition!"=="D2007" set "D2010_OR_HIGHER=NO"
call
call
call
call
call
call
call
call
call
call
call
call
call
echo
call
call
echo
call
call
call
echo
call
call
if !major_vers! GEQ 14 (
if "!D2010_OR_HIGHER!"=="YES" (
echo
...ExpressSpreadSheet
call :comp32 dxSpreadSheet ExpressSpreadSheet
call :comp32 dcldxSpreadSheet ExpressSpreadSheet
)
echo
...ExpressSpreadSheet [deprecated]
call :comp32 cxSpreadSheet ExpressSpreadSheet_[deprecated]
call :comp32 dclcxSpreadSheet ExpressSpreadSheet_[deprecated]
) ELSE (
echo
...ExpressSpreadSheet
call :comp32 cxSpreadSheet ExpressSpreadSheet
call :comp32 dclcxSpreadSheet ExpressSpreadSheet
)
echo
...ExpressMemData
call :comp32 dxmds ExpressMemData
call :comp32 dcldxmds ExpressMemData
echo
...ExpressDBTree Suite
call :comp32 dxdbtr ExpressDBTree_Suite
call :comp32 dcldxdbtr ExpressDBTree_Suite
call :comp32 dxtrmd ExpressDBTree_Suite
call :comp32 dcldxtrmd ExpressDBTree_Suite
echo
...ExpressFlowChart
call :comp32 dxFlowChart ExpressFlowChart
call :comp32 dcldxFlowChart ExpressFlowChart
echo
...ExpressQuantumTreeList
call :comp32 cxTreeList ExpressQuantumTreeList
call :comp32 cxTreeListdxBarPopupMenu ExpressQuantumTreeList
call :comp32 dclcxTreeListdxBarPopupMenu ExpressQuantumTreeList
call :comp32 dclcxTreeList ExpressQuantumTreeList
echo
...ExpressBars II
call :comp32 dxRibbonCustomizationForm ExpressBars
call :comp32 dcldxRibbonCustomizationForm ExpressBars
echo
...ExpressQuantumGrid
call :comp32 cxGrid ExpressQuantumGrid
call :comp32 dclcxGrid ExpressQuantumGrid
call :comp32 dclcxGridWizard ExpressQuantumGrid
echo
...ExpressVerticalGrid
call :comp32 cxVerticalGrid ExpressVerticalGrid
call :comp32 dclcxVerticalGrid ExpressVerticalGrid
echo
...ExpressOrgChart
call :comp32 dxOrgC ExpressOrgChart
call :comp32 dxDBOr ExpressOrgChart
call
call
call
echo
call
call
call
call
call
call
call
call
echo
call
call
call
call
call
call
echo
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
%INSTALLDIR%\ExpressDBTree Suite\Sources;%INSTALLDIR%\ExpressLibrary\Sources;
%INSTALLDIR%\ExpressSkins Library\Sources;%INSTALLDIR%\ExpressPageControl\Sources;
%INSTALLDIR%\ExpressSpreadSheet\Sources;%INSTALLDIR%\ExpressSpreadSheet
(deprecated)\Sources;%INSTALLDIR%\ExpressFlowChart\Sources;%INSTALLDIR
%\ExpressNavBar\Sources;%INSTALLDIR%\ExpressOrgChart\Sources;%INSTALLDIR
%\ExpressDocking Library\Sources;%INSTALLDIR%\ExpressBars\Sources;%INSTALLDIR
%\ExpressEditors Library\Sources;%INSTALLDIR%\ExpressSpellChecker\Sources;
%INSTALLDIR%\ExpressLayout Control\Sources;%INSTALLDIR%\ExpressPrinting
System\Sources;%INSTALLDIR%\ExpressExport Library\Sources;%INSTALLDIR
%\ExpressScheduler\Sources;%INSTALLDIR%\ExpressVerticalGrid\Sources;%INSTALLDIR
%\ExpressPivotGrid\Sources;%INSTALLDIR%\ExpressQuantumTreeList\Sources;%INSTALLDIR
%\ExpressQuantumGrid\Sources;%INSTALLDIR%\ExpressTile Control\Sources;%INSTALLDIR
%\ExpressWizard Control\Sources;%INSTALLDIR%\ExpressGauge Control\Sources;
%INSTALLDIR%\ExpressMap Control\Sources" /f %varLogFile%
:Label_2
echo.
echo.
call :progress 100 >nul 2>&1
echo Installation for DevExpress VCL v!DXVers! (%1) finished ...
echo.
goto:EOF
rem
==================================================================================
:comp32
set p1=%1
set p2=%2
set p2=%p2:_= %
set p2=%p2:[=(%
set p2=%p2:]=)%
rem ExpressSpreadSheet (deprecated) ... p3 otherwise ) gets lost in %2 comp64 %1 %2
... comp64 %1 !p3!
set p3=!p2: =_!
set ROOTLIB="!ROOTDIR!\lib"
set "NAMESPACES="
if "!Is64BitSupport!"=="YES" (
set ROOTLIB="!ROOTDIR!\lib\win32\release"
set "NAMESPACES=NSWinApi;System;System.Win;Vcl;Vcl.Imaging;Data;Data.Win;Bde;Xml;Vcl.Shell;VclTee;IB
X"
)
if NOT "!TEEPATH32!"=="" set ROOTLIB=!ROOTLIB!;"!TEEPATH32!"
if NOT "!ANYPATH32!"=="" set ROOTLIB=!ROOTLIB!;"!ANYPATH32!"
if not exist "%~dp0!p2!\Packages\%1!SUFFIX!.dpk" goto :Label_3
%varEcho% "%DCC32%" -R"%~dp0!p2!\Sources" -B -W -$C- -$D- -$L- -$O+ -$W- -$Y- -LE"!
BPLDir!" -LN"!DCPDir!" -N0"%~dp0Library\!LIBSubDir32!" -I"%~dp0Common";"%~dp0!
p2!\Sources";"%~dp0ExpressCore Library\Sources"; !NAMESPACES! -U"%~dp0Library\!
LIBSubDir32!";"%~dp0!p2!\Sources";!ROOTLIB! "%~dp0!p2!\Packages\%1!SUFFIX!.dpk"
%varLogFile%
if NOT "!TestMode!"=="ON" (
if errorlevel 1 (
echo *** COMPILE ERROR: %1!SUFFIX!.dpk - 32bit
if !nError! EQU 0 (
echo Compile Errors > Log_Errors.txt
echo. >> Log_Errors.txt
)
echo
*** COMPILE ERROR: %1!SUFFIX!.dpk - 32bit >> Log_Errors.txt
"%DCC32%" -R"%~dp0!p2!\Sources" -B -W -$C- -$D- -$L- -$O+ -$W- -$Y- -LE"!
BPLDir!" -LN"!DCPDir!" -N0"%~dp0Library\!LIBSubDir32!" -I"%~dp0Common";"%~dp0!
p2!\Sources";"%~dp0ExpressCore Library\Sources"; !NAMESPACES! -U"%~dp0Library\!
LIBSubDir32!";"%~dp0!p2!\Sources";!ROOTLIB!
Log_Errors.txt
set /a nError = !nError! + 1
echo. >> Log_Errors.txt
echo. >> Log_Errors.txt
)
)
"%~dp0!p2!\Packages\%1!SUFFIX!.dpk"
>>
:Label_3
set /a nCount = %nCount% + 1
Set /a remain = %nCount% %% 16
if %remain%==0 (
set /a nProgress = !nProgress! + 5
if NOT !nProgress! GTR 98 call :progress !nProgress! >nul 2>&1
)
if "!Is64BitSupport!"=="YES" (
if exist "!DCC64!" (
set "prae=!p1:~0,3!"
set "prae7=!p1:~0,7!"
if NOT "!prae!"=="dcl" (
if NOT "!prae7!"=="cxBDEAd" call :comp64 %1 !p3!
)
)
)
GOTO :EOF
rem
==================================================================================
:comp64
set p2=%2
set p2=%p2:_= %
set ROOTLIB="!ROOTDIR!\lib\win64\release"
if NOT "!TEEPATH64!"=="" set ROOTLIB=!ROOTLIB!;"!TEEPATH64!"
if NOT "!ANYPATH64!"=="" set ROOTLIB=!ROOTLIB!;"!ANYPATH64!"
if not exist "%~dp0!p2!\Packages\%1!SUFFIX!.dpk" goto :Label_4
%varEcho% "%DCC64%" -R"%~dp0!p2!\Sources" -B -W- -$C- -$D- -$L- -$O+ -$W- -$Y- -LE"!
BPLDir!\Win64" -LN"!DCPDir!\Win64" -N0"%~dp0Library\!LIBSubDir64!"
-I"%~dp0Common";"%~dp0!p2!\Sources";"%~dp0ExpressCore Library\Sources"
-NSWinApi;System;System.Win;Vcl;Vcl.Imaging;Data;Data.Win;Bde;Xml;Vcl.Shell;VclTee;I
BX -U"%~dp0Library\!LIBSubDir64!";"%~dp0!p2!\Sources";!ROOTLIB! "%~dp0!
p2!\Packages\%1!SUFFIX!.dpk"
%varLogFile%
if NOT "%TestMode%"=="ON" (
if errorlevel 1 (
echo *** COMPILE ERROR: %1!SUFFIX!.dpk - 64bit
if !nError! EQU 0 (
echo Compile Errors > Log_Errors.txt
echo. >> Log_Errors.txt
)
echo
*** COMPILE ERROR: %1!SUFFIX!.dpk - 64bit >> Log_Errors.txt
"%DCC64%" -R"%~dp0!p2!\Sources" -B -W- -$C- -$D- -$L- -$O+ -$W- -$Y- -LE"!
BPLDir!\Win64" -LN"!DCPDir!\Win64" -N0"%~dp0Library\!LIBSubDir64!"
-I"%~dp0Common";"%~dp0!p2!\Sources";"%~dp0ExpressCore Library\Sources"
-NSWinApi;System;System.Win;Vcl;Vcl.Imaging;Data;Data.Win;Bde;Xml;Vcl.Shell;VclTee;I
BX -U"%~dp0Library\!LIBSubDir64!";"%~dp0!p2!\Sources";!ROOTLIB! "%~dp0!
p2!\Packages\%1!SUFFIX!.dpk" >> Log_Errors.txt
set /a nError = !nError! + 1
echo. >> Log_Errors.txt
echo. >> Log_Errors.txt
)
)
:Label_4
set /a nCount = %nCount% + 1
Set /a remain = %nCount% %% 16
if %remain%==0 (
set /a nProgress = !nProgress! + 5
if NOT !nProgress! GTR 98 call :progress !nProgress! >nul 2>&1
)
GOTO :EOF
rem
==================================================================================
:InstIDE
if NOT exist "!BPLDir!\%1!SUFFIX!.bpl" (
if "!TestMode!"=="OFF" goto :Label_5
)
%varEcho% REG ADD "!BDSHKCU!\Known Packages" /v "!BPLDir!\%1!SUFFIX!.bpl"
/d
%2 /f %varLogFile%
:Label_5
REG DELETE "!BDSHKCU!\Disabled Packages" /v "!BPLDir!\%1!SUFFIX!.bpl" /f >nul 2>&1
REG DELETE "!BDSHKCU!\Package Cache\%1!SUFFIX!.bpl" /f >nul 2>&1
GOTO :EOF
rem
==================================================================================
:func_rootdir
set hlp=%2 %3 %4 %5 %6
for /f "tokens=* skip=2" %%a in ('!hlp!') do (
set "dmy=%%a"
set "dmy=!dmy:~21!
set "lastChar=!dmy:~-1!"
if "!lastChar!"=="\" set "dmy=!dmy:~0,-1!"
set "%1=!dmy!"
)
GOTO :EOF
rem
==================================================================================
:func_path
set hlp=%2 %3 %4 %5
for /f "tokens=* skip=2" %%a in ('%2 %3 %4 /v %5') do (
for /f "tokens=1,2,3,4* delims= " %%k in ('echo %%a') do (
if NOT "%%o"=="" (
set "olddata25=%%n %%o") ELSE (
set "olddata25=%%n"
)
)
)
set "%1=%olddata25%"
GOTO :EOF
rem
==================================================================================
:progress
SETLOCAL ENABLEDELAYEDEXPANSION
SET ProgressPercent=%1
rem if NOT "%ProgressPercent%"=="0" (
SET /A NumBars=%ProgressPercent%/2
SET /A NumSpaces=50-%NumBars%
SET Meter=
FOR /L %%A IN (%NumBars%,-1,1) DO SET Meter=!Meter!I
FOR /L %%A IN (%NumSpaces%,-1,1) DO SET Meter=!Meter!
TITLE Progress: [%Meter%] %ProgressPercent%%%
rem )
ENDLOCAL
GOTO :EOF
rem
==================================================================================
:TEE_Modify
set INIFILE="%~dpn1.tmp"
set DPKFile=%1
set DPKFile=!DPKFile:~0,-5!"
if exist %INIFILE% del %INIFILE% >nul 2>&1
for /f "tokens=* delims=" %%a in (%~s1) do (
set Line=%%a
set Line=!Line:tee,=tee%mytee%,!
set Line=!Line:tee;=tee%mytee%;!
set Line=!Line:teedb,=teedb%mytee%,!
set Line=!Line:teedb;=teedb%mytee%;!
set dmy=!Line!
for /l %%a in (1,1,100) do (
if "!dmy:~-1!"==" " set dmy=!dmy:~0,-1!
)
if NOT "!dmy!"=="" echo !Line!>>%INIFILE%
)
copy %INIFILE% %DPKFile% /Y
del %INIFILE% >nul 2>&1
exit /b
>nul 2>&1
rem
==================================================================================
:func_BDSCommonDir
if "%2"=="D7" (
CALL :func_HKCU RK1 D7
CALL :func_rootdir RDIR7 reg QUERY !RK1! /v RootDir
)
set "RS1=%RDIR7%\Projects"
set "RS2=%PUBLIC%\Documents\RAD Studio"
set "RS3=%PUBLIC%\Documents\Embarcadero\Studio"
set "NS=D7-%RS1%;D2007-%RS2%\5.0;D2010-%RS2%\7.0;DXE-%RS2%\8.0;DXE2-%RS2%\9.0;DXE3%RS2%\10.0;DXE4-%RS2%\11.0;DXE5-%RS2%\12.0;DXE6-%RS3%\14.0"
set v=%2
CALL SET v=%%NS:*%v%-=%%
SET v=%v:;=&rem.%
set %1=%v%
GOTO :EOF
rem
==================================================================================
:func_HKCU
set "RS1=HKCU\Software\Borland"
set "RS2=HKCU\Software\CodeGear"
set "RS3=HKCU\Software\Embarcadero\BDS"
set "NS=D7-%RS1%\Delphi\7.0;D2007-%RS1%\BDS\5.0;D2010-%RS2%\BDS\7.0;DXE%RS3%\8.0;DXE2-%RS3%\9.0;DXE3-%RS3%\10.0;DXE4-%RS3%\11.0;DXE5-%RS3%\12.0;DXE6%RS3%\14.0"
set v=%2
CALL SET v=%%NS:*%v%-=%%
SET v=%v:;=&rem.%
set %1=%v%
GOTO :EOF
rem
==================================================================================
:func_64Bit
set "NS=D7-NO;D2007-NO;D2010-NO;DXE-NO;DXE2-YES;DXE3-YES;DXE4-YES;DXE5-YES;DXE6-YES"
set v=%2
CALL SET v=%%NS:*%v%-=%%
SET v=%v:;=&rem.%
set %1=%v%
GOTO :EOF
rem
==================================================================================
:func_Suffix
set "NS=D7-D7;D2007-RS11;D2010-RS14;DXE-RS15;DXE2-RS16;DXE3-RS17;DXE4-RS18;DXE5RS19;DXE6-RS20"
set v=%2
CALL SET v=%%NS:*%v%-=%%
SET v=%v:;=&rem.%
set %1=%v%
GOTO :EOF
rem
==================================================================================
:Search_Path
set hlp=%2
set hlp=%hlp:_= %
set hlp=!hlp:~1,-1!
set "rck1="
set "rck2="
for /f "tokens=* skip=2" %%a in ('!hlp!') do (
Set "string=%%a"
call :Instr "!string!" "%4" pos
if NOT "!pos!"=="0" (
if "%4"=="\DclTeePro" (
call :Instr "!string!" ".bpl" pos2
set /a pos1 = !pos!+10
set /a pos2 = !pos2!-1
set /a pos3 = !pos2!-!pos1!+1
CALL :Substring version "!string!" !pos1! !pos3!
set "rck2=!version!"
)
set /a pos1=1
set /a pos3=!pos!-1
Set "string=%%a"
CALL :Substring tpath "!string!" !pos1! !pos3!
rem ===============================================================
:Instr
setlocal enableextensions enabledelayedexpansion
echo %1|findstr %2>nul
if %errorlevel% EQU 1 (endlocal & set %3=0& goto :EOF)
set rest_=%1
set /a instr_=0
:_loop
set rest_=%rest_:~1%
echo !rest_!|findstr %2>nul
if %errorlevel% EQU 1 (endlocal & set %3=%instr_%& goto :EOF)
set /a instr_ +=1
goto _loop
rem
==================================================================================
:Substring
::Substring(retVal,string,startIndex,length)
:: extracts the substring from string starting at startIndex for the specified
length
SET string=%2%
SET startIndex=%3%
SET length=%4%
if "%4" == "0" goto :noLength
CALL SET _substring=%%string:~%startIndex%,%length%%%
goto :substringResult
:noLength
CALL SET _substring=%%string:~%startIndex%%%
:substringResult
set "%~1=%_substring%"
GOTO :EOF
rem
==================================================================================
:GetDXVersion
rem dxBuildNumber: Cardinal = 20130205;
for /f "tokens=* delims=" %%a in (%~s1) do (
set "line1=%%a"
set "line2=!line1!"
set "line2=!line2:dxBuildNumber:=!"
if NOT "!line1!"=="!line2!" (
for /f "tokens=1,2,3 delims==;" %%r in ('echo !line1!') do (
set p1=%%s
set "p1=!p1: =!"
set "dmy1=!p1:~2,2!"
set "dmy2=!p1:~4,2!"
set "dmy2=!dmy2:0=!"
set "dmy3=!p1:~6,2!"
set "lastDigit=!p1:~-1!"
if NOT "!lastDigit!"=="0" set "dmy3=!dmy3:0=!"
set %2=!dmy1!.!dmy2!.!dmy3!
)
)
)
exit /b
How to:
1. Unzip sourcecode to an installdir of your choice
2. In Install.bat: Set parameter at line 88:
D7, D2007, D2010, DXE, DXE2, DXE3, DXE4, DXE5 or DXE6
Default parameter is DXE6:
Code:
CALL :func_install DXE6
3.
Notes:
1. It is possible to install DevExpress VCL to D7-DXE6 at once as follows:
Code:
CALL
CALL
CALL
CALL
CALL
CALL
CALL
CALL
CALL
:func_install
:func_install
:func_install
:func_install
:func_install
:func_install
:func_install
:func_install
:func_install
D7
D2007
D2010
DXE
DXE2
DXE3
DXE4
DXE5
DXE6
Cleaning Up installdir
rem
rem
rem
rem
rem
rem
rem
rem
*
* Tasks:
*
1) Cleaning Up installdir
*
2) Uninstalling packages from IDE
*
3) Cleaning Up BPL and DCP folders
*
4) Cleaning Up Search Path and Browsing Path
*
***********************************************************
set starttime=%time%
rem ---------------------------------------------------------rem Administrative permissions required. Detecting permissions
rem ---------------------------------------------------------net session >nul 2>&1
if %errorLevel% == 0 (
rem Success: Administrative permissions confirmed.
) else (
echo ERROR: Administrative permissions required.
echo.
echo INFO: Run batch-file again as ADMIN ...
echo.
pause
goto end
)
%~d0
cd %~p0
rem ----------------------------------------rem BAT file must be executed in <installdir>
rem ----------------------------------------if not exist "%~dp0ExpressQuantumGrid\Sources\cxGrid.pas" (
echo ERROR: Current directory is not installdir
echo.
echo INFO: Run batch-file in installdir ...
echo.
pause
goto end
)
set "cFile=%~dp0ExpressCore Library\Sources\Dxcore.pas
call :GetDXVersion "%cFile%" DXVers
TITLE UnInstalling DevExpress VCL v!DXVers!
set /a major_vers=!DXVers:~0,2!
rem
rem
rem
set
set
-----------------Setting installdir
-----------------"INSTALLDIR=%~dp0"
"INSTALLDIR=%INSTALLDIR:~0,-1%"
rem
====================================================================================
=
rem
F U N C T I O N S
rem
====================================================================================
=
:func_uninstall
echo ============================================
echo Uninstalling DevExpress VCL v!DXVers! (%1)
echo ============================================
echo.
CALL :func_HKCU BDSHKCU %1
CALL :func_rootdir ROOTDIR reg QUERY !BDSHKCU! /v RootDir
CALL :func_64Bit Is64BitSupport %1
CALL :func_Suffix SUFFIX %1
CALL :func_BDSCommonDir BDSCOMMONDIR %1
set "BPLDir=!BDSCOMMONDIR!\Bpl"
set "DCPDir=!BDSCOMMONDIR!\Dcp"
set "Edition=%1"
if "!Edition!"=="D7" (
set "DCPDir=!INSTALLDIR!\Lib\D7"
)
set
set
set
set
"RKeySearch32=!BDSHKCU!\Library"
"RKeySearch64="
"LIBSubDir32=!Edition!"
"LIBSubDir64="
if "!Is64BitSupport!"=="YES" (
set "RKeySearch32=!BDSHKCU!\Library\Win32"
set "RKeySearch64=!BDSHKCU!\Library\Win64"
set "LIBSubDir32=!Edition!\Win32"
set "LIBSubDir64=!Edition!\Win64"
)
rem -----------------------rem Cleaning Up <installdir>
rem -----------------------Set "CleanInfo=1. Cleaning Up installdir: Library\!LIBSubDir32!"
if "!Is64BitSupport!"=="YES" Set CleanInfo=!CleanInfo! and Library\!LIBSubDir64!
echo !CleanInfo!
rd "%~dp0Library\%1" /Q /S >nul 2>&1
rem Delete directory Library if empty
for /F %%a in ('dir /S/B "%~dp0Library\*" ^| find /V /C "::"') do (if %%a EQU 0 rd
"%~dp0Library" /Q >nul 2>&1)
rem -----------------------------rem UnInstalling Packages from IDE
rem -----------------------------echo 2. UnInstalling Packages from IDE
call :DelIDE dcldxCore
call :DelIDE dclcxLibrary
call :DelIDE dxSkinBlack
call :DelIDE dxSkinBlueprint
call :DelIDE dxSkinBlue
call :DelIDE dxSkinCaramel
call :DelIDE dxSkinCoffee
call :DelIDE dxSkinDarkRoom
call :DelIDE dxSkinDarkSide
call :DelIDE dxSkinDevExpressDarkStyle
call :DelIDE dxSkinDevExpressStyle
call :DelIDE dxSkinFoggy
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
dxSkinGlassOceans
dxSkinHighContrast
dxSkiniMaginary
dxSkinLilian
dxSkinLiquidSky
dxSkinLondonLiquidSky
dxSkinMcSkin
dxSkinMetropolisDark
dxSkinMetropolis
dxSkinMoneyTwins
dxSkinOffice2007Black
dxSkinOffice2007Blue
dxSkinOffice2007Green
dxSkinOffice2007Pink
dxSkinOffice2007Silver
dxSkinOffice2010Black
dxSkinOffice2010Blue
dxSkinOffice2010Silver
dxSkinOffice2013DarkGray
dxSkinOffice2013LightGray
dxSkinOffice2013White
dxSkinPumpkin
dxSkinSevenClassic
dxSkinSeven
dxSkinSharpPlus
dxSkinSharp
dxSkinSilver
dxSkinSpringTime
dxSkinStardust
dxSkinSummer2008
dxSkinTheAsphaltWorld
dxSkinValentine
dxSkinVS2010
dxSkinWhiteprint
dxSkinXmas2008Blue
dcldxFlowChart
dcldxOrgC
dxSkinscxPCPainter
dxSkinsdxNavBarPainter
dclcxPageControl
dcldxBarExtDBItems
dcldxdbtr
dcldxNavBar
dcldxSkinsCore
dxSkinsdxBarPainter
dclcxPageControldxBarPopupMenu
dcldxBar
dcldxDBOr
dcldxDocking
dcldxMapControl
dcldxSkinsDesignHelper
dxSkinsdxDLPainter
dxSkinsdxRibbonPainter
dclcxEditors
dcldxBarExtItems
dcldxIconLibrary
dcldxRibbon
dcldxSpellChecker
dcldxSpreadSheet
dcldxTabbedMDI
dcldxTileControl
dcldxPSCore
dcldxSkinscxEditorsHelper
dcldxSkinscxPCPainter
dcldxSkinsdxNavBarPainter
dclcxBarEditItem
dcldxLayoutControl
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
call
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
:DelIDE
dcldxPSLnks
dcldxPSTeeChart
dcldxPScxCommon
dcldxPSdxLCLnk
dcldxPSdxOCLnk
dcldxPScxExtCommon
dcldxPSDBTeeChart
dcldxPSdxDBTVLnk
dcldxPSdxFCLnk
dcldxPSdxSpreadSheetLnk
dcldxSkinsdxBarsPainters
dcldxPSdxDBOCLnk
dcldxPSPrVwAdv
dcldxSkinsdxRibbonPainters
dcldxPSPrVwRibbon
dcldxGaugeControl
dcldxmds
dcldxWizardControl
dcldxtrmd
dcldxServerMode
dcldxBarDBNav
dclcxEditorFieldLink
dxSkinscxSchedulerPainter
dclcxScheduler
dclcxVerticalGrid
dclcxPivotGrid
dclcxTreeListdxBarPopupMenu
dclcxTreeList
dclcxPivotGridOLAP
dcldxSkinscxSchedulerPainter
dclcxGrid
dclcxSchedulerGrid
dclcxSchedulerTreeBrowser
dclcxPivotGridChart
dclcxSchedulerRibbonStyleEventEditor
dcldxPScxSchedulerLnk
dcldxPScxTLLnk
dcldxPScxVGridLnk
dclcxGridWizard
dcldxPScxGridLnk
dcldxPScxPivotGridLnk
dcldxADOServerMode
dcldxDBXServerMode
dcldxFireDACServerMode
dcldxRibbonCustomizationForm
dcldxPScxSSLnk
dclcxSpreadSheet
/d "!
rem
==================================================================================
:func_rootdir
set hlp=%2 %3 %4 %5 %6
for /f "tokens=* skip=2" %%a in ('!hlp!') do (
set "dmy=%%a"
set "dmy=!dmy:~21!
set "lastChar=!dmy:~-1!"
if "!lastChar!"=="\" set "dmy=!dmy:~0,-1!"
set "%1=!dmy!"
)
GOTO :EOF
rem
==================================================================================
:func_BDSCommonDir
if "%2"=="D7" (
CALL :func_HKCU RK1 D7
CALL :func_rootdir RDIR7 reg QUERY !RK1! /v RootDir
)
set "RS1=%RDIR7%\Projects"
set "RS2=%PUBLIC%\Documents\RAD Studio"
set "RS3=%PUBLIC%\Documents\Embarcadero\Studio"
set "NS=D7-%RS1%;D2007-%RS2%\5.0;D2010-%RS2%\7.0;DXE-%RS2%\8.0;DXE2-%RS2%\9.0;DXE3%RS2%\10.0;DXE4-%RS2%\11.0;DXE5-%RS2%\12.0;DXE6-%RS3%\14.0"
set v=%2
CALL SET v=%%NS:*%v%-=%%
SET v=%v:;=&rem.%
set %1=%v%
GOTO :EOF
rem
==================================================================================
:func_HKCU
set "RS1=HKCU\Software\Borland"
set "RS2=HKCU\Software\CodeGear"
set "RS3=HKCU\Software\Embarcadero\BDS"
set "NS=D7-%RS1%\Delphi\7.0;D2007-%RS1%\BDS\5.0;D2010-%RS2%\BDS\7.0;DXE%RS3%\8.0;DXE2-%RS3%\9.0;DXE3-%RS3%\10.0;DXE4-%RS3%\11.0;DXE5-%RS3%\12.0;DXE6%RS3%\14.0"
set v=%2
CALL SET v=%%NS:*%v%-=%%
SET v=%v:;=&rem.%
set %1=%v%
GOTO :EOF
rem
==================================================================================
:func_64Bit
set "NS=D7-NO;D2007-NO;D2010-NO;DXE-NO;DXE2-YES;DXE3-YES;DXE4-YES;DXE5-YES;DXE6-YES"
set v=%2
CALL SET v=%%NS:*%v%-=%%
SET v=%v:;=&rem.%
set %1=%v%
GOTO :EOF
rem
==================================================================================
:func_Suffix
set "NS=D7-D7;D2007-RS11;D2010-RS14;DXE-RS15;DXE2-RS16;DXE3-RS17;DXE4-RS18;DXE5RS19;DXE6-RS20"
set v=%2
CALL SET v=%%NS:*%v%-=%%
SET v=%v:;=&rem.%
set %1=%v%
GOTO :EOF
rem
==================================================================================
:func_deletefiles
set "fldr=%1"
set "fldr=!fldr:"=!"
for /f "eol=r tokens=*" %%a in ('dir *. /b') do (
dir "%~dp0%%a\Packages\*!SUFFIX!.dpk" /b 1>NUL 2>NUL
if NOT errorlevel 1 (
for /f "eol=r tokens=*" %%m in ('dir "%~dp0%%a\Packages\*!SUFFIX!.dpk" /b')
do (
rem
set
set
del
echo %%m
"dmy=%%m"
"currFiles=!dmy:.dpk=*.*!"
"!fldr!\!currFiles!" /S /Q >nul 2>&1
)
)
)
GOTO :EOF
rem
==================================================================================
:GetDXVersion
rem dxBuildNumber: Cardinal = 20130205;
for /f "tokens=* delims=" %%a in (%~s1) do (
set "line1=%%a"
set "line2=!line1!"
set "line2=!line2:dxBuildNumber:=!"
if NOT "!line1!"=="!line2!" (
for /f "tokens=1,2,3 delims==;" %%r in ('echo !line1!') do (
set p1=%%s
set "p1=!p1: =!"
set "dmy1=!p1:~2,2!"
set "dmy2=!p1:~4,2!"
set "dmy2=!dmy2:0=!"
set "dmy3=!p1:~6,2!"
set "lastDigit=!p1:~-1!"
if NOT "!lastDigit!"=="0" set "dmy3=!dmy3:0=!"
set %2=!dmy1!.!dmy2!.!dmy3!
)
)
)
exit /b
How to:
1. Set UnInstall parameter in line 66:
D7, D2007, D2010, DXE, DXE2, DXE3, DXE4, DXE5 or DXE6
Default parameter is DXE6:
Code:
CALL :func_uninstall DXE6
2.
Note:
It is possible to uninstall DevExparess VCL from D7-DXE6 at once as follows:
Code:
CALL
CALL
CALL
CALL
CALL
CALL
CALL
CALL
CALL
:func_uninstall
:func_uninstall
:func_uninstall
:func_uninstall
:func_uninstall
:func_uninstall
:func_uninstall
:func_uninstall
:func_uninstall
D7
D2007
D2010
DXE
DXE2
DXE3
DXE4
DXE5
DXE6
Removing all packages from previous DevExpress installations from all IDEs
(D7-DXE6)
&
&
&
&
&
&
&
&
&
&
set
set
set
set
set
set
set
set
set
set
"RegKey1=HKCU\Software\Borland\Delphi\7.0"
"RegKey2=HKCU\Software\Borland\BDS\5.0"
"RegKey3=HKCU\Software\CodeGear\BDS\6.0"
"RegKey4=HKCU\Software\CodeGear\BDS\7.0"
"RegKey5=HKCU\Software\Embarcadero\BDS\8.0"
"RegKey6=HKCU\Software\Embarcadero\BDS\9.0"
"RegKey7=HKCU\Software\Embarcadero\BDS\10.0"
"RegKey8=HKCU\Software\Embarcadero\BDS\11.0"
"RegKey9=HKCU\Software\Embarcadero\BDS\12.0"
"RegKey10=HKCU\Software\Embarcadero\BDS\14.0"
set /a nSum = 0
echo ====================================================================
echo Removing DevExpress VCL Packages from all IDEs (D7-DXE6) at once and
echo Deleting according BPL-files
echo ====================================================================
set starttime=%time%
for /L %%1 IN (1,1,10) do (
set /a nCount = 0
Set "IsInstalled=NO"
reg QUERY "!RegKey%%1!" /ve 1>NUL 2>NUL
if NOT errorlevel 1 (
Set "IsInstalled=YES"
for /f "tokens=* skip=2" %%a in ('reg QUERY "!RegKey%%1!\Known Packages" /s')
do (
call :CheckDXEntry "%%a" BPLFile
if NOT "!BPLFile!"=="" (
REG DELETE "!RegKey%%1!\Known Packages" /v "!BPLFile!"
/f
del "!BPLFile!*"
/Q >nul 2>&1
rem echo !RegKey%%1!\Known Packages\!BPLFile! deleted ...
set /a nCount = !nCount! + 1
)
>nul 2>&1
)
)
if "!IsInstalled!"=="YES" (
if !nCount! GEQ 1 (echo !Edition%%1!: !nCount! packages removed) ELSE
(echo !Edition%%1!: No package removed)
) ELSE (
echo !Edition%%1!: not installed !
)
set /a nSum = !nSum! + !nCount!
)
set endtime=%time%
echo.
echo Total sum of removed packages (D7-DXE6): !nSum!
echo.
echo Started at: %starttime%
echo Finished at: %endtime%
echo.
pause
exit
:CheckDXEntry
SET line=%1
set "line=!line:"=!"
SET divider=REG_SZ
CALL SET after=%%line:*%divider%=%%
CALL SET before=%%line:%divider%%after%=%%
set "dmy=!after!"
set "dmy=!dmy:Developer Express=!"
if NOT "!dmy!"=="!after!" (
for /l %%a in (1,1,20) do (
if "!before:~-1!"==" " set before=!before:~0,-1!
)
set %2=!before!
) ELSE (set %2=)
exit /b
How to:
Run DXCleanUp.bat in a directory of your choice
rem
rem
rem
rem
rem
*****************************************************************
*
* HELP Installer for all versions of DevExpress VCL (D2007-DXE6)
*
*****************************************************************
set starttime=%time%
rem ---------------------------------------------------------rem Administrative permissions required. Detecting permissions
rem ---------------------------------------------------------net session >nul 2>&1
if %errorLevel% == 0 (
rem Success: Administrative permissions confirmed.
) else (
echo ERROR: Administrative permissions required.
echo.
echo INFO: Run batch-file again as ADMIN ...
echo.
pause
exit
)
rem ----------------------------------------rem BAT file must be executed in <installdir>
rem ----------------------------------------if not exist "%~dp0ExpressQuantumGrid\Help\ExpressQuantumGrid.HxS" (
echo ERROR: Current directory is not installdir
echo.
echo INFO: Run batch-file in installdir ...
echo.
pause
exit
)
if not exist "%~dp0H2Reg.exe" (
echo ERROR: H2Reg.exe not found in installdir
echo.
echo INFO: Copy H2Reg.exe to installdir ...
echo.
pause
exit
)
if not exist "%~dp0H2Reg.ini" (
echo ERROR: H2Reg.ini not found in installdir
echo.
echo INFO: Copy H2Reg.ini to installdir ...
echo.
pause
exit
)
call :GetDXVersion "%~dp0ExpressCore Library\Sources\Dxcore.pas" DXVers
TITLE Installing HELP for DevExpress VCL v!DXVers!
echo ===========================================================================
echo Installing Help for DevExpress VCL v!DXVers!
echo ===========================================================================
call :progress 0
rem ---------------rem RUN INSTALLATION
rem ----------------
>nul 2>&1
:Finish
call :progress 100
echo.
echo.
echo Help for DevExpress VCL (%1) installed ...
echo.
goto:EOF
rem
==================================================================================
:progress
SETLOCAL ENABLEDELAYEDEXPANSION
SET ProgressPercent=%1
rem if NOT "%ProgressPercent%"=="0" (
SET /A NumBars=%ProgressPercent%/2
SET /A NumSpaces=50-%NumBars%
SET Meter=
FOR /L %%A IN (%NumBars%,-1,1) DO SET Meter=!Meter!I
FOR /L %%A IN (%NumSpaces%,-1,1) DO SET Meter=!Meter!
TITLE Progress: [%Meter%] %ProgressPercent%%%
rem )
ENDLOCAL
GOTO :EOF
rem
==================================================================================
:InstHelp
set INIFILE=%1
echo
... %~n1%~x1
set INIFILE=!INIFILE:~0,-2!_"
del !INIFILE! 1>nul 2>nul
for /F "usebackq tokens=*" %%a in (%1) do (
set Line=%%a
set Line=!Line:%%=!
set Line=!Line:IDE_Namespace_Postfix=%IDE_NS_Post%!
set Line=!Line:IDE_Namespace=%IDE_NS%!
echo !Line!>>%INIFILE%
)
%H2REG%.exe -r -q CmdFile=!INIFILE! 1>nul 2>nul
del !INIFILE! 1>nul 2>nul
exit /b
:Namespace
set "NS=D2007-borland;D2009-embarcadero;D2010-embarcadero;DXE-embarcadero;DXE2embarcadero;DXE3-embarcadero;DXE4-embarcadero;DXE5-embarcadero;DXE6-embarcadero"
if "%3"=="POST" set "NS=D2007-bds5;D2009-rs2009;D2010-rs2010;DXE-rs_xe;DXE2rs_xe2;DXE3-rs_xe3;DXE4-rs_xe4;DXE5-rs_xe5;DXE6-rs_xe6"
set v=%2
rem echo %v%
CALL SET v=%%NS:*%v%-=%%
SET v=%v:;=&rem.%
set %1=%v%
GOTO :EOF
rem
==================================================================================
:GetDXVersion
rem dxBuildNumber: Cardinal = 20130205;
for /f "tokens=* delims=" %%a in (%~s1) do (
set "line1=%%a"
set "line2=!line1!"
set "line2=!line2:dxBuildNumber:=!"
if NOT "!line1!"=="!line2!" (
for /f "tokens=1,2,3 delims==;" %%r in ('echo !line1!') do (
set p1=%%s
******************************************************************
*
* HELP UnInstaller for all versions of DevExpress VCL (D2007-DXE6)
*
******************************************************************
set starttime=%time%
rem ---------------------------------------------------------rem Administrative permissions required. Detecting permissions
rem ---------------------------------------------------------net session >nul 2>&1
if %errorLevel% == 0 (
rem Success: Administrative permissions confirmed.
) else (
echo ERROR: Administrative permissions required.
echo.
echo INFO: Run batch-file again as ADMIN ...
echo.
pause
goto end
)
rem ----------------------------------------rem BAT file must be executed in <installdir>
rem ----------------------------------------if not exist "%~dp0ExpressQuantumGrid\Help\ExpressQuantumGrid.HxS" (
echo ERROR: Current directory is not installdir
echo.
echo INFO: Run batch-file in installdir ...
echo.
pause
exit
)
if not exist "%~dp0H2Reg.exe" (
echo ERROR: H2Reg.exe not found in installdir
echo.
echo INFO: Copy H2Reg.exe to installdir ...
echo.
pause
exit
)
if not exist "%~dp0H2Reg.ini" (
echo ERROR: H2Reg.ini not found in installdir
echo.
echo INFO: Copy H2Reg.ini to installdir ...
echo.
pause
exit
)
call :GetDXVersion "%~dp0ExpressCore Library\Sources\Dxcore.pas" DXVers
TITLE UnInstalling HELP DevExpress VCL v!DXVers!
echo ===========================================================================
echo UnInstalling Help for DevExpress VCL v!DXVers!
echo ===========================================================================
call :progress 0
rem ------------rem RUN UNINSTALL
rem ------------CALL :func_uninstall DXE6
set endtime=%time%
echo Started at: %starttime%
echo Finished at: %endtime%
echo.
pause
:end
exit
rem
==================================================================================
rem
F U N C T I O N S
rem
==================================================================================
:func_uninstall
set p1=%1_
set "str=D2007_D2009_D2010_DXE_DXE2_DXE3_DXE4_DXE5_DXE6_"
if "x!str:%p1%=!"=="x%str%" (
echo.
echo ERROR: %1 not supported
echo.
Choose D2007, D2009, D2010, DXE, DXE2, DXE3, DXE4, DXE5 or DXE6
echo.
echo INFO: BAT file will be terminated now ...
echo.
pause
exit
)
rem ----------------rem UnInstalling HELP
rem ----------------echo - UnInstalling Help for %1
echo
(ProgressBar is displayed in TitleBar of Console Window)
echo.
set /a nCount=0
set /a nProgress=0
set H2REG="%~dp0h2reg"
call :Namespace NS %1
set IDE_NS=%NS%
Namespace=%IDE_NS%
Namespace_PostFix=%IDE_NS_Post%
>nul 2>&1
:Namespace
set "NS=D2007-borland;D2009-embarcadero;D2010-embarcadero;DXE-embarcadero;DXE2embarcadero;DXE3-embarcadero;DXE4-embarcadero;DXE5-embarcadero;DXE6-embarcadero"
if "%3"=="POST" set "NS=D2007-bds5;D2009-rs2009;D2010-rs2010;DXE-rs_xe;DXE2rs_xe2;DXE3-rs_xe3;DXE4-rs_xe4;DXE5-rs_xe5;DXE6-rs_xe6"
set v=%2
rem echo %v%
CALL SET v=%%NS:*%v%-=%%
SET v=%v:;=&rem.%
set %1=%v%
GOTO :EOF
rem
==================================================================================
:GetDXVersion
rem dxBuildNumber: Cardinal = 20130205;
for /f "tokens=* delims=" %%a in (%~s1) do (
set "line1=%%a"
set "line2=!line1!"
set "line2=!line2:dxBuildNumber:=!"
if NOT "!line1!"=="!line2!" (
for /f "tokens=1,2,3 delims==;" %%r in ('echo !line1!') do (
set p1=%%s
set "p1=!p1: =!"
set "dmy1=!p1:~2,2!"
set "dmy2=!p1:~4,2!"
set "dmy2=!dmy2:0=!"
set "dmy3=!p1:~6,2!"
set "lastDigit=!p1:~-1!"
if NOT "!lastDigit!"=="0" set "dmy3=!dmy3:0=!"
set %2=!dmy1!.!dmy2!.!dmy3!
)
)
)
exit /b
How to:
1.
2.
To install help files for another Delphi version change the paramter "DXE6" to
DXE5, DXE4, DXE3, DXE2, DXE, D2010, D2009 or D2007 at line 72.
It is possible to install Help files for multiple Delphi versions at once (e.g:
DXE6 and DXE5) as follows:
Code:
Note:
To uninstall help files, run UnInstall_Help.bat AS ADMIN in DX-installdir.
By default help files for DXE6 are uninstalled:
Code:
CALL :func_uninstall DXE6