====== mRemoteNG ====== Tested with opsi 4.0.4\\ requiredWinstVersion >= 4.11.3.3\\ By //[[opsi@gei.de|GEI]] 2014/09/15 23:10// mRemoteNG ist ein guter OpenSource-Sessionmananager für RDP-, SSH-, VNC-, ICA- und HTTP-Sessions \\ (auch als portable/USB-Version verfügbar).\\ \\ Version 1.72 ist stable - 1.73-beta1 ist erweitert und läuft bis jetzt gut unter Win7-64\\ Download: http://www.mremoteng.org/download Voraussetzung: .NET ab 3.0\\ __Tree:__\\ ''CLIENT_DATA/setup.opsiscript''\\ ''CLIENT_DATA/uninstall.opsiscript''\\ ''CLIENT_DATA/delsub.opsiscript''\\ ''CLIENT_DATA/mremoteng.png''\\ ''CLIENT_DATA/mRemoteNG-Installer-$VERSION$.exe''\\ ''CLIENT_DATA/files.usb/'' (with extracted files from portable zip)\\ ''OPSI/control''\\ ''%ScriptDrive%/check_nsis-exitcode.ins''\\ \\ Das komplette OPSI-Paket (mit 1.73-beta1) gibt es hier zum [[https://owncloud.gei.de/public.php?service=files&t=a254600211b9538a86eddf82cfa6e6f5|Download]].\\ \\ ==== setup.opsiscript ==== ; ---------------------------------------------------------------- ; Copyright (c) uib gmbh (www.uib.de) ; A Part of this sourcecode is owned by uib ; and published under the Terms of the General Public License. ; credits: http://www.opsi.org/en/credits/ ; ---------------------------------------------------------------- ;********************************************************************************************************************** ; generated by this _great_ tools: opsi-setup-detector & opsi-packetbuilder ; see https://download.uib.de/opsi4.0/experimental/opsi-setup-detector/ & https://forum.opsi.org/viewforum.php?f=22&t=4307 ; SETUPTYPE nsis ; ; modificated by GEI ;********************************************************************************************************************** [Actions] requiredWinstVersion >= "4.11.3.3" ScriptErrorMessages = false DefVar $SetupType$ DefVar $ProductId$ DefVar $Setupfile$ DefVar $InstallDir$ DefVar $MinimumSpace$ DefVar $ExitCode$ DefVar $ErrorMsg$ DefVar $LicenseRequired$ DefVar $LicenseKey$ DefVar $LicensePool$ DefVar $NsisInstallBatch$ DefVar $LogDir$ DefVar $InstallLanguage$ DefVar $InstallOnUSB$ DefVar $InstallUSBdriveLetter$ DefStringList $OpsiProductMapList$ DefVar $OpsiProductName$ DefVar $OpsiProductVersion$ DefVar $OpsiProductInstalledVersion$ Set $LogDir$ = "%SystemDrive%\opsi.org\log" ; ---------------------------------------------------------------- Set $SetupType$ = "nsis" ; ---------------------------------------------------------------- ; new Version: ; please load new .exe into CLIENT_DATA and increment the ; OPSI/control-> package-version & modify product-version Set $ProductId$ = "mremoteng" Set $MinimumSpace$ = "8 MB" ; get property from actual opsi packet Set $OpsiProductMapList$ = getProductMap Set $OpsiProductName$ = getValue("name",$OpsiProductMapList$) Set $OpsiProductVersion$ = getValue("productversion",$OpsiProductMapList$) Set $OpsiProductInstalledVersion$ = getValue("installedversion",$OpsiProductMapList$) ; Pattern + OPSI/Control->Version Set $Setupfile$ = "mRemoteNG-Installer-" + $OpsiProductVersion$ + ".exe" Set $InstallDir$ = "%ProgramFiles32Dir%" + "\" + $OpsiProductName$ Set $LicenseRequired$ = "false" Set $LicensePool$ = "p_" + $ProductId$ ; get property values from "OPSI/control" (with default values) Set $InstallLanguage$ = GetProductProperty("language","system-specific") Set $InstallOnUSB$ = GetProductProperty("usb","False") Set $InstallUSBdriveLetter$ = GetProductProperty("usbdriveletter","F:") ; ---------------------------------------------------------------- if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$)) LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$ ; Stop process and set installation status to failed isFatalError "No Space" else if (not(FileExists("%ScriptPath%\" + $Setupfile$))) isFatalError $Setupfile$ + ": not found on %ScriptDrive%, please check OPSI/Control->Version or Setup pattern at setup.ins" endif comment "Show product picture" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $OpsiProductName$ Message "installing new version " + $OpsiProductVersion$ + " ..." comment "Start setup program on client or usb" ChangeDirectory "%SCRIPTPATH%" if ($InstallOnUSB$="False") OR ($InstallUSBdriveLetter$ ="") comment "no install on usb or no driveletter" if FileExists("%ScriptPath%\delsub.opsiscript") comment "Start uninstall sub section" Message "uninstall old version " + $OpsiProductInstalledVersion$ + " ..." Sub "%ScriptPath%\delsub.opsiscript" endif if $LicenseRequired$ = "true" comment "Licensing required, reserve license and get license key" Sub_get_licensekey endif if ($SetupType$ = "nsis") Set $NsisInstallBatch$ = "%ScriptPath%\" + $Setupfile$ + " /S" if not ($InstallDir$ = '') Set $NsisInstallBatch$ = $NsisInstallBatch$ + ' /D="' + $InstallDir$ + '"' endif endif Winbatch_install_nsis Sub_check_exitcode else comment "driveletter <> nil or installonUSB true" Files_copy-usb endif endif ; ---------------------------------------------------------------- ; install sections ; ---------------------------------------------------------------- [Winbatch_install_nsis] $NsisInstallBatch$ [sub_check_exitcode] if FileExists("%ScriptDrive%\check_nsis-exitcode.ins") Sub "%ScriptDrive%\check_nsis-exitcode.ins" else if FileExists("%ScriptPath%\check_nsis_exitcode.opsiscript") Sub "%ScriptPath%\check_nsis_exitcode.opsiscript" else LogError "SUB check_nsis-exitcode not found!" endif endif [Files_copy-usb] copy -su "%ScriptPath%\files.usb\" "$InstallUSBdriveLetter$\$OpsiProductName$\" [Sub_get_licensekey] if opsiLicenseManagementEnabled comment "License management is enabled and will be used" comment "Trying to get a license key" Set $LicenseKey$ = demandLicenseKey ($LicensePool$) ; If there is an assignment of exactly one licensepool to the product the following call is possible: ; Set $LicenseKey$ = demandLicenseKey ("", $ProductId$) ; ; If there is an assignment of a license pool to a windows software id, it is possible to use: ; DefVar $WindowsSoftwareId$ ; $WindowsSoftwareId$ = "..." ; Set $LicenseKey$ = demandLicenseKey ("", "", $WindowsSoftwareId$) DefVar $ServiceErrorClass$ set $ServiceErrorClass$ = getLastServiceErrorClass comment "Error class: " + $ServiceErrorClass$ if $ServiceErrorClass$ = "None" comment "Everything fine, we got the license key '" + $LicenseKey$ + "'" else if $ServiceErrorClass$ = "LicenseConfigurationError" LogError "Fatal: license configuration must be corrected" LogError getLastServiceErrorMessage isFatalError else if $ServiceErrorClass$ = "LicenseMissingError" LogError "Fatal: required license is not supplied" isFatalError endif endif endif else LogError "Fatal: license required, but license management not enabled" isFatalError endif ; ---------------------------------------------------------------- ==== uninstall.opsiscript ==== ; Copyright (c) uib gmbh (www.uib.de) ; This sourcecode is owned by uib gmbh ; and published under the Terms of the General Public License. ; credits: http://www.opsi.org/en/credits/ [Actions] requiredWinstVersion >= "4.11.3.3" DefVar $SetupType$ DefVar $MsiId$ DefVar $LogDir$ DefVar $ExitCode$ DefVar $ErrorMsg$ DefVar $ProductId$ DefVar $InstallDir$ DefVar $LicenseRequired$ DefVar $LicensePool$ Set $LogDir$ = "%SystemDrive%\tmp" ; ---------------------------------------------------------------- Set $SetupType$ = "nsis" ; ---------------------------------------------------------------- ; - Please check the following values - ; ---------------------------------------------------------------- Set $ProductId$ = "mremoteng" Set $InstallDir$ = "C:\Program Files (x86)\mRemoteNG" Set $LicenseRequired$ = "false" Set $LicensePool$ = "p_" + $ProductId$ ; ---------------------------------------------------------------- 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" endif if $LicenseRequired$ = "true" comment "Licensing required, free license used" Sub_free_license endif [Sub_free_license] comment "License management is enabled and will be used" comment "Trying to free license used for the product" DefVar $result$ Set $result$ = FreeLicense($LicensePool$) ; If there is an assignment of a license pool to the product, it is possible to use ; Set $result$ = FreeLicense("", $ProductId$) ; ; If there is an assignment of a license pool to a windows software id, it is possible to use ; DefVar $WindowsSoftwareId$ ; $WindowsSoftwareId$ = "..." ; set $result$ = FreeLicense("", "", $WindowsSoftwareId$) ==== delsub.opsiscript ==== ; Copyright (c) uib gmbh (www.uib.de) ; This sourcecode is owned by uib gmbh ; and published under the Terms of the General Public License. ; credits: http://www.opsi.org/en/credits/ DefVar $found$ DefVar $UninstallProgram$ Set $found$ = "false" Message "Uninstalling " + $ProductId$ + " ..." if ($SetupType$ = "nsis") Set $UninstallProgram$ = $InstallDir$ + "\uninstall.exe" if (not($InstallDir$ = '')) and FileExists($UninstallProgram$) comment "Uninstall program found, starting uninstall" Winbatch_uninstall_nsis /WaitforProcessending "Au_.exe" /Timeoutseconds 10 sub_check_exitcode endif endif if (not($InstallDir$ = '')) and (not($InstallDir$ = "not used")) Files_uninstall endif ;----------------------------------------------------- [Winbatch_uninstall_nsis] "$UninstallProgram$" /S ;----------------------------------------------------- [sub_check_exitcode] Sub "%ScriptDrive%\check_nsis-exitcode.ins" [Files_uninstall] del -sf "$InstallDir$\" ;----------------------------------------------------- ==== OPSI/control ==== [Package] version: 4 depends: incremental: False [Product] type: localboot id: mremoteng name: mRemoteNG description: OpenSource-Sitzungsmanager fuer RDP-, SSH-, ICA-, VNC- und HTTP-Sessions (auch als portable usb verfügbar) advice: (Krummel: Paket aktuelisiert am 15.9.2014) version: 1.73 priority: 0 licenseRequired: False productClasses: setupScript: setup.opsiscript uninstallScript: uninstall.opsiscript updateScript: alwaysScript: onceScript: customScript: userLoginScript: [ProductDependency] action: setup requiredProduct: dotnet requiredStatus: installed requirementType: before [ProductProperty] type: bool name: usb description: USB Installation default: False [ProductProperty] type: unicode name: usbdriveletter multivalue: False editable: True description: Drive letter for usb installation values: ["F:"] default: ["F:"]