Setup.inf – Datei pro Benutzer kopieren

Kopieren pro BenutzerHäufig steht man vor der Aufgabe in einem Empirum Paket pro Benutzer eine Datei zu kopieren, um benutzerspezifische Einstellungen vorab vorzunehmen. Wie kann dies in der Setup.inf vorgenommen werden und worauf sollte man achten?

Wenn man nicht weiß, in welcher Datei sich die Einstellung niederschlägt bzw. in welcher Datei die Anpassung vorgenommen werden, kann man die Änderung mittels des PackageWizards und dem Differenzanalyseverfahren (Diff) festhalten.

Variante 1 – Diff bzw. Differenzanalyseverfahren

Das bedeutet, man startet den PackageWizard und wählt den Punkt „Systemanalyse vor und nach der Installation …“ und führt den PreScan durch. Ist der PreScan abgeschlossen, führt man seine Änderung der Einstellung durch bzw. kopiert eine Datei manuell in das Benutzerverzeichnis. Anschließend führt man den PostScan durch. Ist der PostScan erfolgreich abgeschlossen, führt man den PackageWizard Assistenten bis zum Ende durch. Kopieren Sie die Datei nicht auf den EmpirumServer. Wenn man den Haken bei Datei mit dem PackageEditor öffnen wählt, kann man sich die kommenden Schritte sparen.

Nun kann man die gerade erzeugte Setup.inf Datei öffnen. Geben Sie dazu %TEMP% im Windows Explorer ein. Hiermit landet man direkt im temporären Verzeichnis. Hier sollte ein Verzeichnis mit der Herstellerbezeichnung (aus der Eingabe im PackageWizard) vorhanden sein. Darunter befindet sich ein Verzeichnis mit dem Softwarenamen, dann der Version und dann „Install„. Im „Install“ Verzeichnis befindet sich die gerade erstellte Setup.inf.
Jetzt können Sie den Kopierbefehl, als auch die dazugehörige Datei in Ihr ggf. bereits vorhandenes Paket einfügen bzw. übernehmen.

Variante 2 – Empirum Kopierflag CLIENT (pro Benutzer):

Ergänzen der Setup.inf wie folgt. Eintragen eines Sektionsaufrufes unterhalb von [Product] in der passenden Reihenfolge. Vorteilhaft ist es, wenn man den benutzerspezifischen Teil nach der eigentlichen Installation des Programmes ausführt, hier mit Set:Product symbolisiert. Zusätzlich muss die benutzerspezifische Datei (hier: Freecommander.ini) im Ordner (hier: APPDATA\Freecommander) des Programmes unter „Source“ (hier: Packages\<Hersteller>\<Softwarename>\<Version>\) abgelegt werden.

Wichtig: Der Sektion „Benutzereinstellungen“ nicht das Flag „CLIENT“ hinzufügen, sonst wird die Datei nicht im Maschinenteil lokal kopiert!

Kopierflags

Die Datei wird in diesem Falle bei einer Deinstallation auch wieder vom Computer entfernt. Ist dies nicht gewünscht, da dann Einstellungen nicht zu einer neu installierten Version übernommen werden, so kann zu den vorhandenen Flags CLIENT ALWAYS auch noch das DONTDELETE hinzugefügt werden. Ein weiterer Blog Artikel zum Kopierbefehl kann hier eingesehen werden, alle Kopierflags sind hier aufgeführt.

ALWAYS

Das Flag ALWAYS überschreibt eine gegebenenfalls existierende Datei. Bei benutzerspezifischen Einstellungen sollte man das Flag ALWAYS immer setzen, da die installierten Programme zumeist eine vordefinierte Einstellungsdatei einrichten und diese hat dann das Datum der Installation der Software und die eigene Einstellungsdatei hätte ggf. ein älteres Datum und würde im Standard nicht installiert/kopiert werden. Mit ALWAYS stellt man somit sicher, dass die eigene Datei mit Einstellungen eine gegebenenfalls vorhandene Datei überschreibt!

[Product]
...
;---Beispiel für eine Installation, diese Zeile nicht übernehmen! 
#Set:Product 
...
#Benutzereinstellungen 
...

[Benutzereinstellungen]
1:APPDATA\Freecommander\Freecommander.ini, %APPDATA%, CLIENT ALWAYS, 0

Variante 3 – Empirum Kopierbefehl copy

Ergänzen der Setup.inf wie folgt. Eintragen zweier Sektionsaufrufe unterhalb von [Product] in der passenden Reihenfolge. Vorteilhaft ist es, wenn man den benutzerspezifischen Teil nach der eigentlichen Installation des Programmes ausführt, hier mit Set:Product symbolisiert. Die Sektion „BenutzereinstellungenMachine“ kopiert die Einstellungsdatei (hier wurde eine config.xml Datei angenommen) auf den Computer zur lokalen Ablage. Die Sektion „BenutzereinstellungenClient“ kopiert die Datei dann pro Benutzer in das angegebene Verzeichnis. Zusätzlich muss die benutzerspezifische Datei im Ordner des Programmes unter „Source“ (hier: Packages\<Hersteller>\<Softwarename>\<Version>) abgelegt werden.

[Product]
...
;---Beispiel für eine Installation, diese Zeile nicht übernehmen!
#Set:Product 
...
 #BenutzereinstellungenMachine, MACHINE 
#BenutzereinstellungenClient, CLIENT 
...

[BenutzereinstellungenMachine]
;---kopiert die Einstellungsdatei im Maschinenteil auf den Computer 
-DEL "%APP%\Config.xml"
Copy "%SRC%\Config.xml" "%APP%\Config.xml"

;---Alternative für einen anderen lokalen Ablageort der Konfigurationsdatei 
;-DEL "%WINDIR%\EmPack\%DeveloperName%\%ProductName%\%Version%\Config.xml" 
;Copy "%SRC%\Config.xml" "%WINDIR%\EmPack\%DeveloperName%\%ProductName%\%Version%\Config.xml"

[BenutzereinstellungenClient] 
;---kopiert die Einstellungsdatei im Benutzerteil von der lokalen Ablage in das benutzerspezifische Verzeichnis 
Copy "%APP%\Config.xml" "%AppData%\<Hersteller>\Config.xml"

;---Bei einem alternativen lokalen Ablageort der Konfigurationsdatei 
;Copy "%WINDIR%\EmPack\%DeveloperName%\%ProductName%\%Version%\Config.xml" "%AppData%\<Hersteller>\Config.xml"

;---Falls bei einer Deinstallation auch die Einstellungen wieder entfernt werden sollen. 
;---Achtung, somit werden Einstellungen nicht in eine neue Version übernommen, da die Config.xml beim Deinstallieren gelöscht wird. 
-DEL "%AppData%\Config.xml"

Setup.exe Aufruf

Als letztes ist es wichtig, dass dem Paket beim Einbinden in das SoftwareDepot auch mitgeteilt wird, das ein Benutzertzeil ausgeführt werden muss. Dies wird auf dem Reiter „Prüfung“ im Feld „Befehl“ vorgenommen. Weitere Informationen dazu sind in diesem Artikel vermerkt.

5 Kommentare Schreibe einen Kommentar

  1. Hallo 🙂
    Ich habe eine Frage:
    Wie gehe ich am Besten vor, wenn es ein Benutzerprofil noch nicht gibt, aber eine Software spezielle Files in %APPDATA% braucht ?
    Ich kann dem Paket zwar sagen: Installiere nach Benutzeranmeldung. (Dann gibt es auch %appdata%)

    Aber wie sag ich ihm in der „Setup.inf“, dass er es in den %APPDATA%-Ordner des angemeldeten Benutzers legen soll ?

    Wäre um eine Antwort sehr glücklich 🙂

    Gruß Johannes Huber

    • Hallo Johannes,

      ich gehe jetzt einfach einmal davon aus, dass dein Paket neben den %AppData% Dateien (Einstellungen für das Programm) auch Quellen für das eigentliche Programm hat.
      Empirum kopiert die Dateien in das %Appdata% sowieso nur im „Benutzerteil“ des Paketes und das ist immer nach der Anmeldung.
      Der Benutzerteil wird dann ausgeführt, wenn das Paket im SoftwareDepot auch den Schalter /AW im Register Prüfung unter Befehl hat!
      Siehe hierzu: https://www.wpm-blog.de/einbinden-eines-software-paketes-in-empirum-basi/ und
      hier: https://www.wpm-blog.de/setup-inf-datei-pro-benutzer-kopieren/

      Du brauchst somit das Paket nicht unbedingt so einstellen, dass es nur „nach der Anmeldung“ ausgeführt wird.

      Ich hoffe, das war das nachdem du gesucht hast?
      Wenn nicht, frag einfach weiter :).

      Viele Grüße
      Jochen

    • Hallo Johannes,

      fangen wir ausnahmsweise mal „hinten“ an.
      Ja, Empirum (der Empirum Agent) checkt anhand des „UserKeyName“ ob ein Benutzerteil bereits gelaufen ist oder nicht (UserKeyname in der Setup.inf entspricht in der Registry HKCU\Software\%UserKeyname%).

      Wichtig!
      Wenn Du eine Sektion mit , CLIENT „flagst“ dann muss Du in der Sektion selbst kopieren (zuerst lokal [Machine], dann lokal ins Ziel [Client])mit COPY etc.!
      Wenn Du einen Kopiervorgang 1:Datei, Ziel, CLIENT, hast – dann darf diese Sektion nicht CLIENT geflagt sein!

      Viele Grüße
      Jochen

  2. Hallo Jochen,

    vielen Dank, das ist genau das was ich wissen wollte !

    Also das ist mein Benutzerteil:
    #Benutzerteil, CLIENT
    Und dieser wird nur ausgeführt wenn das „, CLIENT“ steht UND der /AW Schalter gesetzt ist.
    Hab ich das richtig verstanden ?

    Dann hab ich noch eine Frage.
    Wie löse ich das, wenn ich eine Software habe, die bei JEDEM neuen Benutzerprofil eigentlich Files in %APPDATA% kopieren sollte ?
    Ist so etwas überhaupt möglich, oder checkt Empirum:
    „Oh ein neues Profil, ich muss noch ein /AW Teil ausführen“ ?

    Gruß Johannes

Schreibe einen Kommentar