Hilfe bei Lizenzmanagement

Antworten
SES
Beiträge: 2
Registriert: 20 Apr 2015, 12:17

Hilfe bei Lizenzmanagement

Beitrag von SES »

Hallo zusammen,

im Rahmen einer Projektarbeit beschäftige ich mich momentan mit der Installation und Integration eines opsi-servers in meinem Betrieb. Ich habe mir das vorgefertigte Skript zur Installation und Deinstallation von TeamViewer 8 aus den Templates gesucht und ein wenig angepasst bis es mit TeamViewer 10 auf den TestClients funktionierte. Anschließend habe ich mich mit dem Lizenzmanagement beschäftigt und ein entsprechendes Lizenzpool für den TeamViewer als concurrent-Lizenz angelegt.

Da ich nicht der Beste im Umgang mit Skripten bin, möchte ich nun wissen wie genau ich Das im setup-Skript hinterlege, dass eine Lizenz im Lizenzmanagement "blockiert" wird und was ich anfügen muss damit die Lizenz auch auf dem TestClient in der Konfiguration des TeamViewers, nach einer Installation via opsi, eingebunden wird. Außerdem wäre es hilfreich wenn mir jemand zeigt was ich im uninstall-Skript abändern muss um die Lizenz nach einer Deinstallation wieder frei zu geben.


Hier die Inhalte der Skripte:

setup.ins:

[Actions]
requiredWinstVersion >= "4.11.3.6"
setLogLevel = 6
TraceMode = off

DefVar $OS$
DefVar $NTVersion$
DefVar $SystemType$
DefVar $ProductName$
DefVar $ProductNameFull$
DefVar $ProductPicture$
DefVar $Executable32$
DefVar $Executable64$
DefVar $ExitCode$
DefVar $MsiId32$
DefVar $MsiId64$
DefVar $TempDir$

set $OS$ = GetOS
set $NTVersion$ = GetNTVersion
Set $SystemType$ = GetSystemType
Set $TempDir$ = "C:\tmp"

; ----------------------------------------------------------------
; - Please edit the following values -
; ----------------------------------------------------------------
set $ProductNameFull$ = "TeamViewer 10"
Set $ProductPicture$ = "logo.png"
Set $Executable32$ = "TeamViewer.msi"
Set $Executable64$ = "TeamViewer.msi"
Set $MsiId32$ = '{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}'
Set $MsiId64$ = '{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}'
; ----------------------------------------------------------------


; Show $ProductPicture$ and $ProductNameFull$
ShowBitmap /3 "%scriptpath%\" + $ProductPicture$ $ProductNameFull$
Message "Installiere "+$ProductNameFull$

if not (HasMinimumSpace ("%SYSTEMDRIVE%", "50 MB"))
LogError "Nicht genügend Platz auf %SYSTEMDRIVE%"
isFatalError
endif

; Deinstall old Version
Sub "%ScriptPath%\delsub.ins"

Message "Installiere " + $ProductNameFull$ + " ..."
if ( $NTVersion$ = "Win2K" OR $NTVersion$ = "WinXP" OR $NTVersion$ = "Win NT 5.2" OR $NTVersion$ = "Windows Vista" OR $NTVersion$ = "Win NT 6.1" OR $NTVersion$ = "Win NT 6.2" )
if $SystemType$ = "x86 System"
Files_copy_local
Winbatch_Install_32-Bit
sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins"
Files_del
endif
if $SystemType$ = "64 Bit System"
Files_copy_local
Winbatch_Install_64-Bit
sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins"
Files_del
endif
else
LogError "Kein kompatibles Betriebssystem installiert"
isFatalError
endif

[Files_copy_local]
copy "%scriptpath%\$Executable64$" "$TempDir$\."
copy "%scriptpath%\TeamViewer_Settings.reg" "$TempDir$\."

[Winbatch_Install_32-Bit]
msiexec /i "$TempDir$\$Executable32$" /quiet /norestart

[Winbatch_Install_64-Bit]
msiexec /i "$TempDir$\$Executable64$" /quiet /norestart

[Files_del]
delete "$TempDir$\$Executable64$"
delete "$TempDir$\TeamViewer_Settings.reg"



uninstall.ins:


[Actions]
requiredWinstVersion >= "4.11"
setLogLevel = 6
TraceMode = off

DefVar $MsiId32$
DefVar $MsiId64$
DefVar $LogDir$
DefVar $ExitCode$
DefVar $ProductNameFull$
DefVar $ProductPicture$
DefVar $OS$
DefVar $NTVersion$
DefVar $SystemType$
DefVar $TempDir$
DefVar $Executable32$
DefVar $Executable64$

set $OS$ = GetOS
set $NTVersion$ = GetNTVersion
Set $SystemType$ = GetSystemType
Set $TempDir$ = "C:\tmp"

; ----------------------------------------------------------------
; - Please edit the following values -
; ----------------------------------------------------------------
Set $ProductNameFull$ = "TeamViewer 10"
Set $ProductPicture$ = "logo.png"
Set $Executable32$ = "TeamViewer.msi"
Set $Executable64$ = "TeamViewer.msi"
Set $MsiId32$ = '{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}'
Set $MsiId64$ = '{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}'
; ----------------------------------------------------------------

comment "Display product logo"
ShowBitmap /3 "%scriptpath%\" + $ProductPicture$ $ProductNameFull$

Message "Deinstalliere " + $ProductNameFull$ + " ..."
if FileExists("%ScriptPath%\delsub.ins")
comment "Start uninstall sub section"
Sub "%ScriptPath%\delsub.ins"
endif


delsub.ins:


Message "Deinstalliere " + $ProductNameFull$ + " ..."

;OS-Version ermitteln
if ( $NTVersion$ = "Win2K" OR $NTVersion$ = "WinXP" OR $NTVersion$ = "Win NT 5.2" OR $NTVersion$ = "Windows Vista" OR $NTVersion$ = "Win NT 6.1" OR $NTVersion$ = "Win NT 6.2" )

comment "checking for old installation (32bit)"
if not (GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\TeamViewer] DisplayName") = "")
comment "MSI id " + $MsiId32$ + " found in registry, starting msiexec to uninstall"
Files_copy_local
Winbatch_uninstall_msi32
sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins"
endif

if $SystemType$ = "64 Bit System"

comment "checking for old installation (64bit)"
if not (GetRegistryStringValue64("[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\TeamViewer] DisplayName") = "")
comment "MSI id " + $MsiId64$ + " found in registry, starting msiexec to uninstall"
Files_copy_local
Winbatch_uninstall_msi64
sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins"
endif

endif
else
LogError "Kein kompatibles Betriebssystem installiert"
isFatalError
endif

[Winbatch_uninstall_msi32]
msiexec /x "$TempDir$\$Executable32$" /quiet REBOOT=ReallySuppress
;delete "$TempDir$\$Executable32$"
;msiexec /x $MsiId32$ /quiet REBOOT=ReallySuppress

[Winbatch_uninstall_msi64]
msiexec /x "$TempDir$\$Executable64$" /quiet REBOOT=ReallySuppress
;delete "$TempDir$\$Executable64$"
;msiexec /x $MsiId64$ /quiet REBOOT=ReallySuppress

[Files_copy_local]
copy "%scriptpath%\$Executable64$" "$TempDir$\."
copy "%scriptpath%\TeamViewer_Settings.reg" "$TempDir$\."




Danke & Gruß
SES
Benutzeravatar
GEI
Beiträge: 233
Registriert: 12 Feb 2010, 13:00
Wohnort: Braunschweig
Kontaktdaten:

Re: Hilfe bei Lizenzmanagement

Beitrag von GEI »

es ist sinnvoll, sich anhand des OPSI-Templates von UIB zu orientieren...
(Paket "opsi-template" auf deinen Client installieren bzw. beim "OPSI-Setup-Detector" ins Verzeichnis C:\Program Files (x86)\opsiSetupDetector\files2opsi\CLIENT_DATA reinschauen)

Code: Alles auswählen

DemandLicenseKey( poolId [, productId [,windowsSoftwareId]] )
FreeLicense (`poolId [, productId [,windowsSoftwareId]])`

opsiLicenseManagementEnabled
Früher sagte man öfter RTFM .... :mrgreen:
http://download.uib.de/opsi4.0/doc/html ... l-template
http://download.uib.de/opsi4.0/doc/html ... ns-license
Leibniz-Institut für Bildungsmedien | Georg-Eckert-Institut (GEI)
---
'opsi4instituts' = Communityprojekt für wissenschaftliche Einrichtungen
offenes Repository, Update-Notifier
wiki.o4i.org - www.gei.de/institut/direktion/it-service/opsi4instituts
SES
Beiträge: 2
Registriert: 20 Apr 2015, 12:17

Re: Hilfe bei Lizenzmanagement

Beitrag von SES »

Hallo,

vielen Dank für deine Antwort. Ich habe mich bereits im Vorfeld mit den opsi-Templates beschäftigt war mir aber nicht sicher ob ich alles richtig verstanden hatte.
Ich hatte das Problem bereits vor deiner Antwort gelöst, war mir aber nicht sicher ob es eine "saubere" Lösung war.

Ich habe es wie folgt gemacht:

Code: Alles auswählen


DefVar $LicenseRequired$
DefVar $LicenseKey$
DefVar $LicensePool$
------------------------------
Set $LicenseRequired$ = "true"
Set $LicensePool$     = "teamviewer"
------------------------------------------------
if $LicenseRequired$ = "true"
		comment "Licensing required, reserve license and get license key"
		Sub_get_licensekey
----------------------------------------------------------------------------------------------		
[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$)
	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
Verstehe ich das richtig das ich dem TeamViewer keine Lizenz mitgeben kann? Also gemeint ist eine Integration der Lizenz in der TeamViewer-Installation.

Mich würde es noch brennend interessieren ob es möglich ist die Hard- und Software-Inventarisierung und die bereit gestellten Informationen des Lizenzmanagements in z.B. Excel oder CSV-Dateien zu exportieren. Auch hierzu konnte ich bisher nicht finden und wäre für eine Anwort sehr dankbar!
Benutzeravatar
GEI
Beiträge: 233
Registriert: 12 Feb 2010, 13:00
Wohnort: Braunschweig
Kontaktdaten:

Re: Hilfe bei Lizenzmanagement

Beitrag von GEI »

Code: Alles auswählen

Set $LicenseRequired$ = "true"
normalerweise wird dies beim anlegen des Paketes in der OPSI/control definiert, der opsi-Setup-Detector generiert daraus
die Informationen in der setup.ins.

Code: Alles auswählen

[Product]
licenseRequired: True
In der setup.ins sollte man dies prüfen und gegebenfalls mit einer zentralen SUB
weitermachen (siehe unten)

Code: Alles auswählen

DefVar $LicenseRequired$
Set       $LicenceRequired$ = "True"
; die anderen Variablen werden erst definiert und belegt, wenn wirklich 
; eine Lizenz erforderlich ist...
; ...
if $LicenseRequired$ = "True"
	comment "Licensing required, reserve license and get license key"
	DefVar  $LicenceKey$
	DefVar  $LicencePool$
	Set        $LicensePool$     = "p_" + $ProductId$
	include_append "%ScriptDrive%\lib\sub_get_licensekey.opsiinc"
	Sub_get_licensekey
endif
Die zentrale SUB aus "%ScriptDrive\lib" wird nur "appended", wenn eines Lizenz notwendig ist.

Code: Alles auswählen

Set $LicensePool$     = "teamviewer"
wenn du erst mit OPSI anfängst, dann arbeite vielleicht besser nach den allgemeinen Richtlinien
= "p_" + $ProductId$
Verstehe ich das richtig das ich dem TeamViewer keine Lizenz mitgeben kann? Also gemeint ist eine Integration der Lizenz in der TeamViewer-Installation.
wie meinst du das? Einen Key, ein Lizenzfile, eine Verbindung zu einem Lizenzserver? .... ich kenne das Lizenzierungsverfahren von Teamviewer nicht.
Einen Key könntest du im Lizenzmodul hinterlegen.

PS:
den Inhalt des Reiter "Statistik" des Lizenzmodules kann man problemlos via Copy & Paste in eine Tabelle (Calc, Excel) übernehmen.
Ab OPSI 4.0.6 sollen ja verschiedene Tabellen des opsi-confd als PDF speicherbar werden...
Leibniz-Institut für Bildungsmedien | Georg-Eckert-Institut (GEI)
---
'opsi4instituts' = Communityprojekt für wissenschaftliche Einrichtungen
offenes Repository, Update-Notifier
wiki.o4i.org - www.gei.de/institut/direktion/it-service/opsi4instituts
Antworten