Matrix42 Empirum Datei kopieren
Inzwischen haben wir schon viele Beiträge über die Softwareverteilung mit Matrix42 Empirum. Heute geht es darum, wie man mit Empirum Datei kopieren lassen kann. Hierzu können die gewohnten CMD Kopier-Befehle verwendet werden, es gibt aber auch eine eigene Syntax in Empirum um Dateien kopieren zu lassen. Diese kann man auch in die Benutzerprofile der User kopieren lassen.
Empirum Datei kopieren
Ein einfacher Kopiervorgang in der Setup.inf von Empirum ist relativ einfach. Hierzu gibt es wie immer eine spezielle Syntax mit folgendem Aufbau.
1:Quelldatei,Zielverzeichnis,Kopierflag,Größe
Das sieht in erster Linie wieder relativ kompliziert aus, ist es aber nicht. Wir zerlegen den Befehl und beschreiben ihn:
1:
Datei liegt im %SRC% Verzeichnis
Quelldatei
Name der Quelldatei
Zielverzeichnis
Zielverzeichnis inklusive Pfad
Kopierflag
Kopierflag, welches verwendet werden soll. Ähnelt einem Parameter.
Größe
Größe der Datei, damit die Datei nicht ausgetauscht werden kann.
Ich habe ein Beispiel anhand des Kopieren einer Schriftart für euch vorbereitet:
[Product] AddMeter -1 #Set:Product -AddMeter -1 [Set:Product] 1:Windows\Fonts\TCB____.ttf, %Fonts%, SHAREDDLL, 74656, Tw Cen MT Bold (TrueType)
Allerdings sind bei den einzelnen Parametern noch einige Wissenswerte Punkte nützlich:
- Die Datei die kopiert werden soll, liegt am Besten im Source-Verzeichnis (%SRC%) vor. Wird das kopieren mit 1: vorgenommen, so wird diese Datei automatisch gelöscht, wenn das Paket deinstalliert wird. Es wird also kein Minus (-) vor dem Befehl benötigt.
- Bei der Quelldatei muss lediglich der Name der Datei angegeben werden.
- Beim Zielverzeichnis muss nur der Pfad ohne Namen angegeben werden. Ist kein Zielverzeichnis angegeben, so wird automatisch in %ApplicationDir% kopiert.
- Das Kopierflag gibt einen Parameter an. Mehr Informationen in der Listen unten
- Bei der Größe muss die Größe der Datei angegeben werden. Diese ist anzugeben, damit nicht “einfach” die Datei durch eine andere getauscht werden kann. Macht man einen Rechtsklick auf die Datei und wählt Eigenschaften, ist die Größe in Bytes ohne Punkt anzugeben. Wichtig ist hier, dass NICHT die Größe auf Datenträger angegeben wird.
Flags beim Kopieren
Wie oben schon genannt, gibt es beim Empirum Datei kopieren so genannte Flags, welche als Parameter zu sehen sind. Nachfolgend ist eine Liste mit allen Kopierflags, welche angegeben werden können.
NORMAL | Normale Kopieraktion |
APPEND | Die Datei wird an eine bereits kopierte Datei angehängt. |
EXPAND | Die einzelne Datei wird expandiert. |
ALWAYS | Die Zieldatei wird immer überschrieben, wenn sie nicht exakt identisch ist. |
NOSIZEWARNING | Es wird keine Warnung angezeigt, wenn die Länge nicht korrekt angegeben ist. |
NODATEWARNING | Es wird keine Warnung angezeigt, wenn die Quelldatei älter ist als die Zieldatei. |
REPLACEOLDER | Quelldatei wird nur kopiert, wenn die Zieldatei noch nicht existiert oder älter. |
DONTREPLACE | Quelldatei wird nur kopiert, wenn diese Datei noch nicht im Ziel existiert. |
OPTIONAL | Quelldatei wird nur kopiert, falls diese existiert. |
REPLACEVARS | Beim Kopieren einer Textdatei, werden alle Inhalte, die in ‘%’ eingeschlossen sind durch die aktuellen Werte der Umgebungsvariablen ersetzt. Beispielsweise %App% durch das Applikationsverzeichnis. |
CREATE | Es wird eine leere Datei erzeugt. |
DIRECTORY | Der Zielname ist ein Verzeichnis, welches noch nicht existiert. |
CASCADED | Das Zielverzeichnis wird beim Deinstallieren komplett gelöscht, einschließlich Dateien und Verzeichnisse. |
LOCALAPP | Die Datei wird nur kopiert, wenn es sich um eine lokale Installation handelt. |
USEFILENAME | Ist das Ziel ein Verzeichnis, wird als Zieldateiname der reine Quelldateiname benutzt. |
RDONLY | Das Attribut der Zieldatei wird nach dem Kopieren auf ‘Schreibgeschützt’ geschrieben. |
HIDDEN | Das Attribut der Zieldatei wird nach dem Kopieren auf ‘Versteckt’ geschrieben. |
SYSTEM | Das Attribut der Zieldatei wird nach dem Kopieren auf ‘System’ geschrieben. |
BACKUP | Vor dem Überschreiben der Zieldatei wird eine Kopie erstellt. Diese hat die Endung .001, .002, etc. |
SHARED | Die Quelldatei wird nur kopiert, wenn es sich um eine Shared Windows-Installation handelt. |
SHAREDDLL | Die Zieldatei wird in der Registrierungsdatenbank als gemeinsam benutzte Datei eingetragen. |
REGASM | Registriert .NET COM Komponenten. |
SERVICE | Die ausführbare Zieldatei ist ein Windows Dienst. |
DELETE | Die Zieldatei wird beim Deinstallieren zusätzlich gelöscht. |
DONTDELETE | Die Zieldatei wird beim Deinstallieren nicht gelöscht. |
WINDOWS32 | Die Datei wird nur kopiert, wenn das Setup unter einem 32 Bit Windows ausgeführt wird. |
WINDOWS64 | Die Datei wird nur kopiert, wenn das Setup unter einem 64 Bit Windows ausgeführt wird. |
SETUPHOOK | Nach dem Kopieren wird die oben über SetupHookName definierte Funktion der Erweiterungsbibliothek SetupExtDll mit dem Kommando HOOK_AFTERCOPYFILE aufgerufen. |
ADMIN | Die Datei wird nur kopiert, wenn es sich um eine Administrator-Installation handelt. |
CLIENT | Die benutzerspezifische Datei wird für den Benutzer benötigt. |
MACHINE | Die Datei wird nur für die Workstation benötigt. |
REGISTER | Registriert OLE Bedienelemente sowie OLE Server. Muss für alle OCX-Dateien sowie DLLs gesetzt werden, welche die Funktion “DllRegisterServer” nutzen. |
SETUP | Es handelt sich um eine der vom Setup benötigten Dateien Setup.exe und Setup.chm. |
CHECKRTVERSION | Überprüft die Version einer DLL- oder einer OCX-Datei. |
SETUSERINFO | In die Datei werden die Daten des Benutzers sowie die Seriennummer aufgenommen. |
KEEPEXISTING | Die Zieldatei wird nicht überschrieben, wenn die Zieldatei neuer ist als die original Datei. Statt dessen wird eine Kopie mit der Endung .new angelegt. |
Befehl COPY und DEL nutzen
Es ist auch möglich die “alten” Befehle COPY zum Kopieren und DEL zum Löschen von Dateien zu verwenden. Der Nachteil liegt klar auf der Hand. Verwendet man COPY, muss man auch den DEL Befehl extra angeben. Nutzt man die Variante oben, ist Empirum so mächtig, dass er die zuvor kopierte Datei automatisch löscht. Beispiel hier:
[Kopier-Sektion] -DEL "C:\Users\Public\Desktop\yourfile.txt" Copy "%SRC%\yourfile.txt" "C:\Users\Public\Desktop\yourfile.txt"
Für jeden Benutzer einzeln kopieren, also in das Benutzerprofil
Empirum kann auch in Benutzerprofile kopieren. Hört sich zuerst unspektakulär an. Aber hier werden Dateien auch dann kopiert, wenn das Benutzerprofil noch nicht vorhanden ist. Meldet sich ein neuer User am PC an, so wird von Windows ein Benutzerprofil erstellt. Das merkt Empirum und führt den CLIENT-Teil aus, der zuvor im Paket definiert wurde.
[Benutzer-Teil] 1:yourfile.txt, %APPDATA%, CLIENT ALWAYS, 0
Somit wird im Beispiel die Datei “yourfile.txt” in AppData kopiert, sobald sich der Benutzer anmeldet. Das passiert übrigens nur einmalig beim ersten Anmelden.