Matrix42 Empirum Setup.inf Grundlagen
Wer die Matrix42 Empirum Softwareverteilung nutzt, muss zwangsweise mit der Empirum Setup.inf Datei arbeiten. In dieser Datei wird das Softwarepaket konfiguriert und die Installations- bzw. Deinstallationsroutine hinterlegt.
Wie der Aufbau der Empirum Setup.inf funktioniert, und wie diese Datei abgearbeitet wird, seht ihr in diesem Beitrag.
Grundlagen zur Empirum Setup.inf
Eine Installation ist grundsätzlich in zwei Bereiche aufgeteilt. Den Maschinenteil gibt es immer, noch dazu kann es aber auch einen Benutzerteil geben. Der Maschinenteil wird unter dem Benutzer “SYSTEM” einmalig auf dem Computer ausgeführt. Wenn man noch Registrywerte unter “Current User” hinzufügen will, oder Verknüpfungen auf dem Desktop, dann wird der Benutzerteil benötigt. Dieser wird immer ausgeführt, wenn sich ein neuer Benutzer am Computer anmeldet. Damit der Benutzerteil ausgeführt wird, benötigt man den Schalter “/AW“. Hierzu gibt es weiter unten die nötigen Informationen.
Ablauf in der Empirum Setup.inf
Der grundsätzliche Ablauf in der Setup.inf erfolgt immer von oben nach unten. Es kann aber mit Sprungbefehlen gearbeitet werden, wie beispielsweise in einer Batch – Datei.
Hier gibt es 2 Möglichkeiten um zu springen:
Möglichkeit 1:
#Sektion, FLAG
(Damit kann man von jeder Stelle im Script in eine andere Sektion springen. Natürlich kann amn sogenannte “Flags” mitgeben)
FLAG
Bedeutung
ADMIN
Nur ausführen, wenn Administrator angemeldet ist
CLIENT
Nur ausführen, wenn Benutzer angemeldet ist
DELETE
Nur bei Deinstallation ausführen
DONTDELETE
Wird nur bei Installation ausgeführt
MACHINE
Wird nur im Maschinenteil ausgeführt
SHARED
Wird nur bei Shared Windows-Installation ausgeführt
WINDOWS32
Nur ausführen, wenn System ist 32bit Windows
WINDOWS64
Nur ausführen, wenn System ist 64bit Windows
Möglichkeit 2:
If <Bedingung> Then “Sektion1” Else “Sektion2” EndIf
(In IF-Abfragen können Sprünge in andere Sektionen gemacht werden, aber man kann keine Befehle ausführen)
Wichtig:
Nachdem ein Abschnitt abgearbeitet wurde, wird die Routine da fortgesetzt, wo die Sektion aufgerufen wurde!
Bei einer Deinstallation ist zu beachten, dass das Script bzw. die Sektion von unten nach oben abgearbeitet wird. Außerdem muss bei einer Installation vor den Befehlen ein “-” (Minus) stehen. Ausnahmen sind vor einer “If-Abfrage” oder vor “#Sektion”
Beispiel:
[Set:Uninstall] If %ErrorLevel% == "3010" Then "RebootRequired" EndIf -Call MsiExec /X {YourMsiGUID} REBOOT=REALLYSUPPRESS /qb -AddMeter -1
Wichtige Abschnitte in der Empirum Setup.inf
[SetupInfo]
In der SetupInfo stehen die Informationen zu Autor, Datum, Software und sonstige Informationen. Generell ist dieser Bereich wirklich nur zur Information gedacht. Von Bedeutung in diesem Abschnitt ist der Schalter “Command line options“. Dieser steuert die Aufrufparameter der Setup.inf – Datei. Mit dem Schalter “/S1” wird die Anzeige / Sichtbarkeit der Installation gesteuert. Wenn der Schalter “/AW” noch gesetzt ist, weis der Agent, dass es noch einen Benutzerteil gibt.
[SetupInfo] Author = huberj CreationDate = 13.09.2017 InventoryID = Description = Notepad++ Method = exe Tested on = Windows 10 x64 Dependencies = keine Command line options = /S0 /AW Last Change = Build =
[Application]
In diesem Teil wird der Name der Software, Hersteller und Version hinterlegt. (Sehr wichtig!)
Noch dazu wird das Hintergrundbild und Beschriftung gesetzt werden.
[Application] ProductName=Notepad++ DeveloperName=Team Notepad Version=7.0 Revision=0 SetupName=%ProductName% %Version% %SetupWizard% Text1="%ProductName% %Version%", Arial, 30, , 2170F3, 4, , LEFT BOLD ITALIC Text2="%DeveloperName%", Arial, 24, , 2170F3, 4, , LEFT BOLD ITALIC Text8="%Company%", Arial, 18, , 2170F3, 4, 10, RIGHT BOLD ITALIC Text9="%InstallationFor% %WindowsUser%", Arial, 16, , 2170F3, 4, -18, BOTTOM ITALIC LEFT BackgroundColor=EFEFEF,000000 CopyDialogRect=0%, 0%, 100%, 100%, HCENTER VCENTER ; Register all installations in common registry key UserKeyName=$Matrix42Packages$\%DeveloperName%\%ProductName% MachineKeyName=$Matrix42Packages$\%DeveloperName%\%ProductName%\%Version% UninstallKeyName=Matrix42 - %DeveloperName% %ProductName% %Version% UninstallDisplayName=Matrix42 - %DeveloperName% %ProductName% %Version% UninstallString=%ReinstallString% /U ReinstallString="%CommonSetupDir%\Setup.exe" "%App%\%SetupInfDir%\Setup.inf" UninstallOptions=NOREMOVE NOREPAIR NOMODIFY ReinstallMode=1 SrcDir=.. ApplicationDir=%ProgramFilesDir%\%ProductName% SetupInfDir=Install DataDir=%Personal% AskUninstallOld=1 ShellLinks=1 CommonShellLinks=0 Reboot=0 PreventExternalReboot=1 StartServicesOnReboot=0 CallTimeOut=3600 DisableCancelButton=1 ShowEndMessage=1
[Product]
Im Product – Abschnitt ist die eignetliche Installation bzw. Deinstallation abgebildet.
[Product] AddMeter -1 #Set:Product, DONTDELETE #Set:Uninstall, DELETE #Reg:Product -AddMeter -1
Die Benennung der Sektionen ist sehr wichtig, hier die Namensgebung:
#Set:<NAME>
“normale” Sektionen
#Reg:<NAME>
Registrierungseinträge
#Ini:<NAME>
Einträge in INI-Dateien
#Config.sys:<NAME>
Einträge in Config.sys – Dateien
#Bat:<NAME>
Einträge in eine Batch – Datei
#ODBC<Komponentenname>:<NAME>
ODBC Verbindungen
#Shell:<NAME>
Verknüpfungen
#Security:<NAME>
Berechtigungen User, Gruppen
#IP<Komponentenname>:<NAME>
IP – Konfiguration
Die wichtigsten Befehle
Call
Ruft einen Befehl auf (Call “%SRC%\setup.exe”)
AddMeter
Statusbalken anpassen
KillProcess
Beendet einen Prozess
AskKillProcess
Fordert Benutzer auf, ein Programm zu beenden
Del
Löscht einen Datei
Deltree
Löscht eine Ordnerstruktur
If <bendingung> Then <sektion> Else <sektion> EndIf
IF – Anweisung
HKLM, Software\Test,TestSchluessel,”Testeintrag”
Erstellt Registrierungsschlüssel
ErrorLogMessage
Schreibt Eintrag in das SetupErrorLog
Abort
Bricht mit dem Status “Failture” ab
Exit
Bricht mit dem Status “Success” ab
Beispiel einer Empirum Setup.inf – Datei
Da dieser Beitrag sonst noch länger wird 😉 , ist das Beispiel einer solchen Datei hier zu finden:
Setup.inf Beispiel