Vorheriger Artikel
Nächster Artikel

4.3.1 Installation per Skript für Version 30 (SP2024)

Hier ist ein Beispiel für eine einfache Batch-Datei, die Version 30 (SP2024) aus dem vorhandenen Update-Ordner installiert, ohne die bereits installierte Version zu prüfen. Der Update-Ordner kann durch das Offline-Setup bestückt werden: Mit Katalogen, cadworkprofil und userprofil.

Im nachstehenden Skript wird bei einigen Modulen das Vorhandensein im Update-Ordner nicht geprüft. Der Grund dafür ist, dass deren Installation obligatorisch ist und die ausführbaren Dateien bei einem Standard-Update automatisch heruntergeladen werden und somit im Offline-Setup vorhanden sind.

@ECHO off 
:: Erzwinge UTF-8-Kodierung für die Ausgabe (Windows 10+)
chcp 65001

:: Variablendefinition
:: Definition von Datum und Uhrzeit
SET year=%DATE:~6,4%
SET month=%DATE:~3,2%
SET day=%DATE:~0,2%
SET hour=%TIME:~0,2%
IF "%hour:~0,1%"==" " SET hour=0%hour:~1,1%
SET minutes=%TIME:~3,2%

:: Wiederkehrende Nachrichten
SET installModulesFinished=Installation abgeschlossen
SET exeFileNotFound=Ausführbare Datei nicht gefunden

:: Definition der cadwork-Variablen
:: Die Kundennummer sowie die Sprache sind für die Installation entscheidend.
:: Eine falsche Nummer führt zu Installations- oder Lizenzfehlern.
:: Die gewählte Sprache beeinflusst die zu installierenden Kataloge.
:: Wenden Sie sich bei Bedarf an den cadwork-Support.

SET update=FALSE
SET remove=FALSE
SET version=30.0
SET clientNumber=04.12345.0
SET language=german

:: Installationsverzeichnis von cadwork. Sollte ohne Rücksprache mit dem cadwork-Support nicht geändert werden.
SET cadworkDir=%programfiles%\cadwork.dir

:: Netzwerkpfade müssen unbedingt im UNC-Format sein.
:: Definition einer Basis für die Ordnerpfade
SET basePath=D:\cadwork
SET updateDir=%basePath%\update
SET userprofileDir=%basePath%\userprofil_%version%
SET userCatalogDir=%basePath%\cadwork.cat
SET installLogDir=%basePath%\logs-dir

:: Ordner erstellen, falls nicht vorhanden
IF NOT EXIST "%updateDir%" (
    MKDIR "%updateDir%"
)
IF NOT EXIST "%userprofileDir%" (
    MKDIR "%userprofileDir%"
)
IF NOT EXIST "%userCatalogDir%" (
    MKDIR "%userCatalogDir%"
)
IF NOT EXIST "%installLogDir%" (
    MKDIR "%installLogDir%"
)


:: Definition der Logdatei mit Datum und Uhrzeit im gewünschten Format
SET logFile=%installLogDir%\%year%_%month%_%day%_%hour%_%minutes%.txt


:: Aufruf des Hauptskripts "main" und Umleitung der Standard- und Fehlerausgaben
:: in die Logdatei.
CALL :main > "%logFile%" 2>&1


:: Ende des Skripts
PAUSE
ECHO %installModulesFinished%. Wir wünschen Ihnen viel Erfolg mit cadwork.
GOTO :EOF


:: Deinstallation
if %remove%==TRUE goto :REMOVE


:main
ECHO %DATE% - %hour%:%minutes% - START DES SKRIPTS

:: Installation der Module (Erstinstallation und Update)
:: Programmteil
:: Im Stammverzeichnis des cadworkDir
:: Programm Ci-Start
IF EXIST "%updateDir%\EXE\cadwork_CI-Start_%version%_x64.exe" (
	"%updateDir%\EXE\cadwork_CI-Start_%version%_x64.exe" /dir="%cadworkDir%" /verysilent
	ECHO ci_start - %installModulesFinished%
) ELSE (
	ECHO Das Installationsprogramm für Ci-Start, eine obligatorische Komponente, fehlt
)

:: Modul Ci-Com
IF EXIST "%updateDir%\EXE\cadwork_CI-COM_%version%_x64.exe" (
	"%updateDir%\EXE\cadwork_CI-COM_%version%_x64.exe" /dir="%cadworkDir%" /verysilent
	ECHO Ci-Com - %installModulesFinished%
) ELSE (
	ECHO Ci-Com - %exeFileNotFound%
)

:: Unterordner nach cadwork-Version
:: Modul 2D
IF EXIST "%updateDir%\EXE\cadwork_2D_%version%_x64.exe" (
	"%updateDir%\EXE\cadwork_2D_%version%_x64.exe" /dir="%cadworkDir%\EXE_%version%" /verysilent
	ECHO 2D - %installModulesFinished%
) ELSE (
	ECHO Modul 2D - %exeFileNotFound%
)

:: Modul 2DV
IF EXIST "%updateDir%\EXE\cadwork_2DV_%version%_x64.exe" (
	"%updateDir%\EXE\cadwork_2DV_%version%_x64.exe" /dir="%cadworkDir%\EXE_%version%" /verysilent
	ECHO 2DV - %installModulesFinished%
) ELSE (
	ECHO Modul 2DV - %exeFileNotFound%
)

:: Modul 3D
IF EXIST "%updateDir%\EXE\cadwork_3D_%version%_x64.exe" (
	"%updateDir%\EXE\cadwork_3D_%version%_x64.exe" /dir="%cadworkDir%\EXE_%version%" /verysilent
	ECHO 3D - %installModulesFinished%
) ELSE (
	ECHO Modul 3D - %exeFileNotFound%
)

:: Modul Database (3D-Texturen und Metallprofile)
IF EXIST "%updateDir%\EXE\cadwork_Database_%version%.exe" (
	"%updateDir%\EXE\cadwork_Database_%version%.exe" /dir="%cadworkDir%\EXE_%version%" /verysilent
	ECHO Modul Database - %installModulesFinished%
) ELSE (
	ECHO Modul Database - %exeFileNotFound%
)

:: Modul Cadwork Konzeption (auch Lexocad genannt)
IF EXIST "%updateDir%\EXE\cadwork_Lexocad_%version%_x64.exe" (
	"%updateDir%\EXE\cadwork_Lexocad_%version%_x64.exe" /dir="%cadworkDir%\EXE_%version%" /verysilent
	ECHO Modul Cadwork Konzeption - %installModulesFinished%
) ELSE (
	ECHO Modul Cadwork Konzeption - %exeFileNotFound%
)

:: Modul Liste
IF EXIST "%updateDir%\EXE\cadwork_List_%version%_x64.exe" (
	"%updateDir%\EXE\cadwork_List_%version%_x64.exe" /dir="%cadworkDir%\EXE_%version%" /verysilent
	ECHO Modul Liste - %installModulesFinished%
) ELSE (
	ECHO Modul Liste - %exeFileNotFound%
)

:: Modul LxSDK (Einige obligatorische Bibliotheken)
IF EXIST "%updateDir%\EXE\cadwork_LxSDK_%version%_x64.exe" (
	"%updateDir%\EXE\cadwork_LxSDK_%version%_x64.exe" /dir="%cadworkDir%\EXE_%version%" /verysilent
	ECHO Modul LxSDK - %installModulesFinished%
) ELSE (
	ECHO Modul LxSDK - %exeFileNotFound% - Obligatorische Bibliotheken für 3D fehlen
)

:: Modul Pclib (Gemeinsame Bibliotheken für alle Module)
IF EXIST "%updateDir%\EXE\cadwork_Pclib_%version%_x64.exe" (
	"%updateDir%\EXE\cadwork_Pclib_%version%_x64.exe" /dir="%cadworkDir%\EXE_%version%" /verysilent
	ECHO Modul Pclib - %installModulesFinished%
) ELSE (
	ECHO Modul Pclib - %exeFileNotFound% - Obligatorische Bibliotheken für alle Module fehlen
)

:: Modul OptiPanneaux
IF EXIST "%updateDir%\EXE\cadwork_OptiPanel_%version%_x64.exe" (
	"%updateDir%\EXE\cadwork_OptiPanel_%version%_x64.exe" /dir="%cadworkDir%\EXE_%version%" /verysilent
	ECHO OptiPanel - %installModulesFinished%
) ELSE (
	ECHO Modul Liste - %exeFileNotFound%
)


:: Unterordner nach cadwork-Version - Unterordner "PI" - Modul abhängig von einer Lizenz.
:: Modul Lamel (Für Lamellisten, Hersteller von Brettschichtholz)
:: Dieses Modul ist möglicherweise nicht vorhanden, da es von der Kundennummer abhängt.
IF EXIST "%updateDir%\EXE\cadwork_Lamel_%version%_x64.exe" (
	"%updateDir%\EXE\cadwork_Lamel_%version%_x64.exe" /dir="%cadworkDir%\EXE_%version%" /verysilent
	ECHO Lamel - %installModulesFinished%
) ELSE (
	ECHO Lamel - %exeFileNotFound%
)


:: cadwork-Kataloge und cadworkprofil (Erstinstallation und Update)
:: Fester Ordnerpfad von cadwork (vom Benutzer nicht änderbar)
:: Architektur-Kataloge
IF EXIST "%updateDir%\CAT\%language%\architecture_%language%_%clientNumber:~0,2%_%version%.exe" (
	"%updateDir%\CAT\%language%\architecture_%language%_%clientNumber:~0,2%_%version%.exe" /verysilent
	ECHO Architektur-Kataloge - %installModulesFinished%
) ELSE (
	ECHO Architektur-Kataloge - %exeFileNotFound%
)

:: Von Cadwork erstellte Plugins (cadworkprofil)
IF EXIST "%updateDir%\CAT\%language%\cadworkprofil_%language%_%clientNumber:~0,2%_%version%.exe" (
	"%updateDir%\CAT\%language%\cadworkprofil_%language%_%clientNumber:~0,2%_%version%.exe" /verysilent
	ECHO Cadworkprofil - %installModulesFinished%
) ELSE (
	ECHO Cadworkprofil - %exeFileNotFound%
)

	:: 2D-Kataloge
IF EXIST "%updateDir%\CAT\%language%\catalog_2d_%language%_%clientNumber:~0,2%_%version%.exe" (
	"%updateDir%\CAT\%language%\catalog_2d_%language%_%clientNumber:~0,2%_%version%.exe" /verysilent
	ECHO 2D-Kataloge - %installModulesFinished%
) ELSE (
	ECHO 2D-Kataloge - %exeFileNotFound%
)

:: 3D-Kataloge
IF EXIST "%updateDir%\CAT\%language%\catalog_3d_%language%_%clientNumber:~0,2%_%version%.exe" (
	"%updateDir%\CAT\%language%\catalog_3d_%language%_%clientNumber:~0,2%_%version%.exe" /verysilent
	ECHO 3D-Kataloge - %installModulesFinished%
) ELSE (
	ECHO 3D-Kataloge - %exeFileNotFound%
)

:: cadwork-Handbücher
IF EXIST "%updateDir%\CAT\%language%\manual_%language%_%clientNumber:~0,2%_%version%.exe" (
	"%updateDir%\CAT\%language%\manual_%language%_%clientNumber:~0,2%_%version%.exe" /verysilent
	ECHO cadwork-Handbücher - %installModulesFinished%
) ELSE (
	ECHO cadwork-Handbücher - %exeFileNotFound%
)

:: Neuerungen der Version
IF EXIST "%updateDir%\CAT\%language%\news_%language%_%clientNumber:~0,2%_%version%.exe" (
	"%updateDir%\CAT\%language%\news_%language%_%clientNumber:~0,2%_%version%.exe" /verysilent
	ECHO Neuerungen - %installModulesFinished%
) ELSE (
	ECHO Neuerungen - %exeFileNotFound%
)

:: Varianten-Kataloge (parametrische Katalogdateien)
IF EXIST "%updateDir%\CAT\%language%\variant_%language%_%clientNumber:~0,2%_%version%.exe" (
	"%updateDir%\CAT\%language%\variant_%language%_%clientNumber:~0,2%_%version%.exe" /verysilent
	ECHO Varianten-Kataloge - %installModulesFinished%
) ELSE (
	ECHO Varianten-Kataloge - %exeFileNotFound%
)

:: Video-Kataloge (Links zu Schulungsvideos auf YouTube, Vimeo oder anderen Online-Plattformen)
IF EXIST "%updateDir%\CAT\%language%\videos_%language%_%clientNumber:~0,2%_%version%.exe" (
	"%updateDir%\CAT\%language%\videos_%language%_%clientNumber:~0,2%_%version%.exe" /verysilent
	ECHO Video-Kataloge - %installModulesFinished%
) ELSE (
	ECHO Video-Kataloge - %exeFileNotFound%
)


:: Userprofil (hier im Netzwerk und sollte nicht von jedem Client installiert werden)
IF EXIST "%userprofileDir%" (
	ECHO userprofil bereits installiert
) ELSE (
	"%updateDir%\CAT\%language%\userprofil_%language%_%clientNumber:~0,2%_%version%.exe" /dir="%userprofileDir%" /verysilent
	ECHO Userprofil - %installModulesFinished%
)
ECHO %installModulesFinished%

ECHO ENDE DES SKRIPTS
PAUSE
:: Die Installation ist hier abgeschlossen.

:: Dieses Batch ist nicht für ein Update vorgesehen.
:: Wenn die Variable update auf "TRUE" gesetzt ist, passiert nichts
IF %update%==TRUE GOTO :EOF


:: Für die Erstinstallation:
:: - Kundennummer speichern
ECHO %clientNumber% > "%cadworkDir%\CLIENT_NR.TXT"

:: - VCRedist ist obligatorisch, DirectX 9c muss ggf. manuell installiert werden
"%cadworkDir%\exe_%version%\pclib.x64\redist\vcredist_x64\vcredist2015-2022_x64.exe" /install /quiet /norestart

:: - Verknüpfungen und Registry-Einträge durch cadwork start erstellen
"%cadworkDir%\ci_start.exe" /INSTALL /SILENT /USP="%userprofileDir%" /CATDIR="%userCatalogDir%" /DownloadDir="%updateDir%" /USER_HOLZ
IF NOT EXIST "%PROGRAMDATA%\Firebird\" MKDIR "%PROGRAMDATA%\Firebird"


PAUSE
GOTO :EOF


:: Lokale Installation entfernen
:: - updateDir, userprofileDir und userCatalogDir befinden sich im Netzwerk und werden daher hier nicht gelöscht
:REMOVE
IF EXIST "%cadworkDir%\ci_start.exe" "%cadworkDir%\ci_start.exe" /UNINSTALL /SILENT
IF EXIST "%cadworkDir%\" RMDIR /s /q "%cadworkDir%"
IF EXIST "%PROGRAMDATA%\cadwork\" RMDIR /s /q "%PROGRAMDATA%\cadwork"
IF EXIST "%PROGRAMDATA%\Firebird\" RMDIR /s /q "%PROGRAMDATA%\Firebird"
IF EXIST "%PUBLIC%\documents\cadwork\" RMDIR /s /q "%PUBLIC%\documents\cadwork"
IF EXIST "%APPDATA%\cadwork\" RMDIR /s /q "%APPDATA%\cadwork"
Pause