Table of Contents

Libre CAD

Tested with opsi 4.2
Windows 10 x64 Ent SAC 19.09, 20H2 & 21H2
You can download Libre CAD from here: https://librecad.org/#download

type: localboot
id: libre-cad
description: LibreCAD is a free Open Source 2D CAD application for Windows, Apple and Linux

Hint: After the setup is completed Libre CAD tries to open a web page for a donation request. This is unfortunately a non-controllable behavior after the program installation and occurs once. However, a web browser is not preselected by the Windows 10 app control. The app selection message can be ignored, this is suppressed by the final restart after installation.

tree:
|-- setup.opsiscript
|-- delsub.opsiscript
|-- uninstall.opsiscript
|-- LibreCAD-Installer-2.2.0.exe
|-- Libre_CAD.png
|-- check_nsis_exitcode.opsiscript

setup.opsiscript

; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib
; and published under the Terms of the General Public License.
; credits: http://www.opsi.org/credits/
 
[Initial]
SetLogLevel=6
;  Log Errors in Logfile but don't abort:
ExitOnError=false
; Show syntax errors in the script:
ScriptErrorMessages=on
; Dont trace step by step through the script:
TraceMode=off
; let started programs run in front of the winst window
StayOnTop=false
 
[Actions]
requiredWinstVersion >= "4.11.3.3"
 
; ----------------------------------------------------------------
; - define Variables			                           		 -
; ----------------------------------------------------------------
DefVar $UninstallProgram$
DefVar $LogDir$
DefVar $ProductId$
DefVar $ProductPic$
DefVar $MinimumSpace$
DefVar $InstallDir$
DefVar $ExitCode$
DefVar $INST_SystemType$
DefVar $INST_architecture$
DefVar $Version$
DefVar $Inst_Cmd$
DefVar $Inst_Prg$
DefVar $Uninst_Prg$
DefVar $Uninst_Cmd$
DefVar $INST_MsVersion$
DefVar $OSVersion$
DefVar $ErrorMsg$
DefVar $target$
DefVar $workdir$
; ----------------------------------------------------------------
 
; ----------------------------------------------------------------
; - Setting Variables and getting Product Property's             -
; ----------------------------------------------------------------
Set $INST_SystemType$ = GetSystemType
Set $LogDir$ = "%SystemDrive%\tmp"
Set $INST_MsVersion$ = GetMSVersionInfo
include_append "%ScriptPath%\check_nsis_exitcode.opsiscript"
; ----------------------------------------------------------------
 
; ----------------------------------------------------------------
; - Please edit the following values                             -
; ----------------------------------------------------------------
Set $ProductId$			= "LibreCAD"
Set $ProductPic$		= "Libre_CAD.png"
Set $Version$			= "2.2.0"
Set $MinimumSpace$		= "500 MB"
Set $InstallDir$		= "%ProgramFiles32Dir%\LibreCAD"
Set $Inst_Prg$			= "LibreCAD-Installer-"+$Version$+".exe"
Set $Inst_Cmd$			= ' /S'
Set $Uninst_Prg$		= "\uninstall.exe"
Set $Uninst_Cmd$		= ' /S'
Set $OSVersion$			= "6.1"
; for Start Menu entry
Set $target$			= $InstallDir$ + "\LibreCAD.exe"
Set $workdir$			= $InstallDir$
; ----------------------------------------------------------------
 
; ----------------------------------------------------------------
; - Check System Requierements                                   -
; ----------------------------------------------------------------
 
if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$))
	LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$
	isFatalError "No Space"
	; Stop process and set installation status to failed
endif
 
if CompareDotSeparatedNumbers($INST_MsVersion$,"<=",$OSVersion$)
	LogError "Wrong OS Version. At least Windows 7 is required for installation!"
	isFatalError
endif
 
; ----------------------------------------------------------------
 
 
; ----------------------------------------------------------------
; - Installation                                                 -
; ----------------------------------------------------------------
 
comment "Show product picture"
ShowBitmap "%ScriptPath%\" + $ProductPic$ $ProductId$
 
comment "Check if preverious Version is installed, uninstall if so."
if FileExists("%ScriptPath%\delsub.opsiscript")
	comment "Start uninstall sub section"
	Sub "%ScriptPath%\delsub.opsiscript"
endif
 
 
comment "installing"
 
if ($INST_SystemType$ = "x86 System")
	Message "Installing " + $ProductId$ + " " + $Version$ + " on 32 Bit OS."
	comment "Start setup program"
	Winbatch_install
	sub "%SCRIPTPATH%\check_nsis_exitcode.opsiscript"
	LinkFolder_Startmenu
endif
 
if ($INST_SystemType$ = "64 Bit System")
	Message "Installing " + $ProductId$ + " " + $Version$ + " on 64 Bit OS"
	comment "Start setup program"
	Winbatch_install
	sub "%SCRIPTPATH%\check_nsis_exitcode.opsiscript"
	LinkFolder_Startmenu
endif
 
ExitWindows /reboot
 
; ----------------------------------------------------------------
 
 
; ----------------------------------------------------------------
; install section
; ----------------------------------------------------------------
 
[Winbatch_install]
"%ScriptPath%\$Inst_Prg$" $Inst_Cmd$
 
[LinkFolder_Startmenu]
set_basefolder common_programs
set_subfolder $ProductId$
set_link
	name: $ProductId$
	target: $target$
	;parameters:
	working_dir: $workdir$
	;icon_file:
	;icon_index:
end_link
 
; ----------------------------------------------------------------

delsub.opsiscript

; ----------------------------------------------------------------
; Deinstallation
; ----------------------------------------------------------------
 
Set $UninstallProgram$ = $InstallDir$ + $Uninst_Prg$
 
if ($INST_SystemType$ = "x86 System")
	if FileExists($UninstallProgram$)
		Message "Uninstalling " + $ProductId$ + " x86"
		comment "Uninstall program found, starting uninstall"
		Winbatch_uninstall
		sub "%SCRIPTPATH%\check_nsis_exitcode.opsiscript"
		comment "Removing "+$InstallDir$
		Files_uninstall
	else
		comment "Unistall Programm not found."
	endif
endif
 
if ($INST_SystemType$ = "64 Bit System")
	if FileExists($UninstallProgram$)
		Message "Uninstalling " + $ProductId$+ " x64"
		comment "Uninstall program found, starting uninstall"
		Winbatch_uninstall
		sub "%SCRIPTPATH%\check_nsis_exitcode.opsiscript"
		comment "Removing "+$InstallDir$
		Files_uninstall
	else
		comment "Unistall Programm not found."
	endif
endif
 
; ----------------------------------------------------------------
 
 
; ----------------------------------------------------------------
; deinstall section
; ----------------------------------------------------------------
 
[Winbatch_uninstall]
"$UninstallProgram$" $Uninst_Cmd$
 
[Files_uninstall]
del -sf "$InstallDir$"
 
; ----------------------------------------------------------------

uninstall.opsiscript

[Initial]
LogLevel=6
;  Log Errors in Logfile but don't abort:
ExitOnError=false
; Show syntax errors in the script:
ScriptErrorMessages=on
; Dont trace step by step through the script:
TraceMode=off
; let started programs run in front of the winst window
StayOnTop=false
 
[Actions]
requiredWinstVersion >= "4.11.3.3"
 
; ----------------------------------------------------------------
; - define Variables			                           		 -
; ----------------------------------------------------------------
DefVar $UninstallProgram$
DefVar $ProductPic$
DefVar $LogDir$
DefVar $ExitCode$
DefVar $ProductId$
DefVar $InstallDir$
DefVar $INST_SystemType$
DefVar $INST_architecture$
DefVar $Uninst_Cmd$
DefVar $Uninst_Prg$
DefVar $ErrorMsg$
DefVar $result$
; ----------------------------------------------------------------
 
; ----------------------------------------------------------------
; - Setting Variables and getting Product Property's             -
; ----------------------------------------------------------------
Set $INST_SystemType$ = GetSystemType
Set $LogDir$ = "%SystemDrive%\tmp"
include_append "%ScriptPath%\check_nsis_exitcode.opsiscript"
; ----------------------------------------------------------------
 
; ----------------------------------------------------------------
; - Please edit the following values                             -
; ----------------------------------------------------------------
Set $ProductId$			= "Libre CAD"
Set $ProductPic$		= "Libre_CAD.png"
Set $InstallDir$		= "%ProgramFiles32Dir%\LibreCAD"
Set $Uninst_Prg$		= "\uninstall.exe"
Set $Uninst_Cmd$		= ' /S'
; ----------------------------------------------------------------
 
; ----------------------------------------------------------------
; - Deinstallation                                               -
; ----------------------------------------------------------------
 
comment "Show product picture"
ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$
 
Message "Uninstalling " + $ProductId$ + " ..."
 
if FileExists("%ScriptPath%\delsub.opsiscript")
   comment "Start uninstall sub section"
   Sub "%ScriptPath%\delsub.opsiscript"
else
	comment "No unistall Script found."
	LogError "No unistall Script found. Check OPSI Program Package."
	isFatalError
endif
 
; ----------------------------------------------------------------

check_nsis_exitcode.opsiscript

comment "Check exit code"
set $ExitCode$ = getLastExitCode
if ($ExitCode$ = "0")
	comment "ExitCode = "+$ExitCode$+" Setup was successfully run to completion."
else
	if ($ExitCode$ = "1")
		set $ErrorMsg$ = "ExitCode = "+$ExitCode$+" - Installation aborted by user (cancel button)"
	else 
		set $ErrorMsg$ = "ExitCode = "+$ExitCode$+" - Error detected"
	endif
	logError $ErrorMsg$
	isFatalError "Installer failed"
endif