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)
[one_third_first]FLAG[/one_third_first][two_third_last]Bedeutung[/two_third_last]
[one_third_first]ADMIN[/one_third_first][two_third_last]Nur ausführen, wenn Administrator angemeldet ist[/two_third_last]
[one_third_first]CLIENT[/one_third_first][two_third_last]Nur ausführen, wenn Benutzer angemeldet ist[/two_third_last]
[one_third_first]DELETE[/one_third_first][two_third_last]Nur bei Deinstallation ausführen[/two_third_last]
[one_third_first]DONTDELETE[/one_third_first][two_third_last]Wird nur bei Installation ausgeführt[/two_third_last]
[one_third_first]MACHINE[/one_third_first][two_third_last]Wird nur im Maschinenteil ausgeführt[/two_third_last]
[one_third_first]SHARED[/one_third_first][two_third_last]Wird nur bei Shared Windows-Installation ausgeführt[/two_third_last]
[one_third_first]WINDOWS32[/one_third_first][two_third_last]Nur ausführen, wenn System ist 32bit Windows[/two_third_last]
[one_third_first]WINDOWS64[/one_third_first][two_third_last]Nur ausführen, wenn System ist 64bit Windows[/two_third_last]
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:
[one_third_first]#Set:<NAME>[/one_third_first][two_third_last]”normale” Sektionen[/two_third_last]
[one_third_first]#Reg:<NAME>[/one_third_first][two_third_last]Registrierungseinträge[/two_third_last]
[one_third_first]#Ini:<NAME>[/one_third_first][two_third_last]Einträge in INI-Dateien[/two_third_last]
[one_third_first]#Config.sys:<NAME>[/one_third_first][two_third_last]Einträge in Config.sys – Dateien[/two_third_last]
[one_third_first]#Bat:<NAME>[/one_third_first][two_third_last]Einträge in eine Batch – Datei[/two_third_last]
[one_third_first]#ODBC<Komponentenname>:<NAME>[/one_third_first][two_third_last]ODBC Verbindungen[/two_third_last]
[one_third_first]#Shell:<NAME>[/one_third_first][two_third_last]Verknüpfungen[/two_third_last]
[one_third_first]#Security:<NAME>[/one_third_first][two_third_last]Berechtigungen User, Gruppen[/two_third_last]
[one_third_first]#IP<Komponentenname>:<NAME>[/one_third_first][two_third_last]IP – Konfiguration[/two_third_last]
Die wichtigsten Befehle
[one_third_first]Call[/one_third_first][two_third_last]Ruft einen Befehl auf (Call “%SRC%\setup.exe”)[/two_third_last]
[one_third_first]AddMeter[/one_third_first][two_third_last]Statusbalken anpassen[/two_third_last]
[one_third_first]KillProcess[/one_third_first][two_third_last]Beendet einen Prozess[/two_third_last]
[one_third_first]AskKillProcess[/one_third_first][two_third_last]Fordert Benutzer auf, ein Programm zu beenden[/two_third_last]
[one_third_first]Del[/one_third_first][two_third_last]Löscht einen Datei[/two_third_last]
[one_third_first]Deltree[/one_third_first][two_third_last]Löscht eine Ordnerstruktur[/two_third_last]
[one_third_first]If <bendingung> Then <sektion> Else <sektion> EndIf[/one_third_first][two_third_last]IF – Anweisung[/two_third_last]
[one_third_first]HKLM, Software\Test,TestSchluessel,”Testeintrag”[/one_third_first][two_third_last]Erstellt Registrierungsschlüssel[/two_third_last]
[one_third_first]ErrorLogMessage[/one_third_first][two_third_last]Schreibt Eintrag in das SetupErrorLog[/two_third_last]
[one_third_first]Abort[/one_third_first][two_third_last]Bricht mit dem Status “Failture” ab[/two_third_last]
[one_third_first]Exit[/one_third_first][two_third_last]Bricht mit dem Status “Success” ab[/two_third_last]
Beispiel einer Empirum Setup.inf – Datei
Da dieser Beitrag sonst noch länger wird 😉 , ist das Beispiel einer solchen Datei hier zu finden:
[thrive_link color=’blue’ link=’https://www.itnator.net/matrix42-empirum-setup-inf-beispiel/’ target=’_self’ size=’medium’ align=”]Setup.inf Beispiel[/thrive_link]
Sehr hilfreicher Beitrag, danke dafür! Siehst du eine Möglichkeit bei eine “callhidden” oder “call” ein Flag wie z.B “Continue” mitzugeben, damit die Setup.inf ohne zu warten weiter verarbeitet wird?
Danke!
Es gibt die Möglichkeit einen weiteren Prozess zu starten. Aus dem Kopf würde ich das so machen:
callhidden cmd /c BEFEHL
Sollte klappen 🙂