Hilfe: | UpdateJob |
Datum: | 05.02.2013 |
Autor: | (C) Meisterzunge |
Die Applikation UpdateJob kann für folgende Situationen verwendet werden:
Das Einsetzen der Applikation macht vor allem Sinn, wenn ausgeführte Anwendungen
(die sich nicht selbst ersetzen können da sie zur Laufzeit schreibgeschützt sind) aktualisiert werden sollen.
Die zu aktualisierende Anwendung definiert einen oder mehrere Jobs (auch die eigene Aktualisierung),
startet anschließend "UpdateJob.exe" und wird beendet.
Die Applikation führt jetzt alle definierten Jobs aus und startet anschließend die
aktualisierte Anwendung.
Die Applikation kann unter verwendung von (auch mehreren) Kommandozeilenparametern aufgerufen werden, dabei muss auf Groß- und Kleinschreibung keine Rücksicht genommen werden.
Die folgende Syntax ist zu gebrauchen:
UpdateJob.exe [/PARAMETER [ARGUMENTE]] |
Die folgende Parameter sind zulässig:
Parameter | Beschreibung |
/jobfile | Anstelle der normalen Anwendung der JobFile im Ausführungsverzeichnis kann eine JobFile in einem beliebigen Verzeichniss verwendet werden. Das Argument des Parameters ist der absolute oder auch relative Dateipfad der JobFile. |
/runjob | Führt nur einen bestimmten Job aus. Das Argument dieses Parameters ist der Name des Jobs, so wie er in der JobFile unter dem Attribut <name> definiert ist. Wenn mehrere Jobs. |
/silent | Unterdrückt sämtliche (mögliche) Fehlermeldungen. |
Es ist zwingend erforderlich eine JobFile mit einem übergeordneten Attribut zu beginnen, welches alle zu definierenden Jobs beinhaltet. Die Bezeichnung dieses Attributs spielt keine Rolle (jedoch meist <updatejob>), die Bezeichnungen aller weiteren Attribute ist wie in den folgenden Abschnitten vorgeschrieben:
Attribut | Optional | Beschreibung |
<job> | Definiert einen Job. Die Anzahl zu definierender Jobs ist beliebig, die Reihenfolge der auszuführenden Jobs wird jedoch, wie in der JobFile definiert, eingehalten. | |
|
JA | Vergibt den Namen eines Jobs. Die Verwendung eines gleichen Namens für mehrere Jobs ist zulässig, somit werden durch den Commandozeilen Parameter /runjob alle Jobs ausgeführt, welche diesen Namen haben. |
|
JA | Definiert ein Verzeichnis (Verarbeitung immer inklusive Untervezeichnissen) oder eine Datei. Ein Job kann beliebig viele Objekte enthalten. |
|
Gibt das Quellpfad eines zu definierenden Objktes an. Pfade dürfen relativ angewendet werden. | |
|
Gibt das Zielpfad eines zu definierenden Objktes an. Pfade relativ angewendet werden. | |
|
JA | Gibt den zu verwendenden Ausführungstyp zum bearbeiten eines Objektes an. |
|
JA | Fügt vor der ausführung eines Jobs eine Wartezeit (Wert in Millisekunden) ein. Während dieser Zeit steht die Applikation still, auch weitere Anweisungen (wie <execute>) oder nachfolgende Jobs werden somit verzögert. |
|
JA | Fügt nach der ausführung eines Jobs eine Wartezeit (Wert in Millisekunden) ein. Während dieser Zeit steht die Applikation still, auch weitere Anweisungen (wie <execute>) oder nachfolgende Jobs werden somit verzögert. |
|
JA |
Zeigt einen "BalloonTip" zur Benutzerinformation in der Zymbolablage an. Wird ein BalloonTip per definition länger angezeigt,
als der eigentliche Job andauert, so wird er anschließend weiterhin angezeigt. Ist im nachfolgenden Job jedoch ein weiter BalloonTip definiert,
wird Dieser den zuvor angezeigten BalloonTip überschreiben.
Das Beenden der Applikation schließt einen angezeigten BalloonTip. |
|
Definiert den Titel. | |
|
Definiert die Beschreibung. | |
|
JA | Bestimmt die Anzeigedauer (in Millisekunden). Die Anzeigedauer wird automatisch auf 10 Sekunden eingestellt wird falls der Parameter nicht definiert ist. |
|
JA | Führt eine Datei nach Beenden eines Jobs aus. Pfade dürfen relativ angewendet werden. |
|
JA | Verknüpft das Ausführen eines Jobs mit dem Erfolgreichen Prüfen ein oder mehrer Bedingungen. Wird eine fehlerhafte Bezeichnung verwendet, schlägt die Ausführung des Jobs fehl. |
|
JA |
Beendet eine aktive Anwendung. Die Anzahl an zu beendender Anwendungen pro Job ist beliebig.
Ein Job wird weiterhin (auch ohne Fehlermeldung) ausgeführt wenn die zu schließende Anwendung nicht gefunden wird. Auch das Finden der Anwendung gantantiert nicht dass Diese auch wirklich geschlossen werden kann, setzt das Fortführen des jeweiligen Jobs aber fort - es gibt also keine Rückmeldung ob eine Anwendung tatsächlich geschloßen ist. Dieser Parameter wird in der Ablaufreihenfolge der Anweisungen eines Jobs nach dem Attribut <predelay> ausgeführt! Das definieren einer Wartezeit vor dem Beenden einer Anwendung wird erreicht, indem ein separator Job (der ein <postdelay> enthält) zum Beenden der Anwendung vor dem eigentlichen Job definiert wird. Mindestens eins der folgenden (bezeichnenden) Attribute für <closeapp> muss definiert sein um eine zu beendende Anwendung ausfindig zu machen, sind aber mehrere Attribut definiert so muss jedes Einzelne davon zutreffen. |
|
JA | Definiert die Klassenbezeichnung der zu beendenden Anwendung. |
|
JA | Definiert die Fensterbezeichnung der zu beendenden Anwendung. |
|
JA | Kann das Fortführen eines Jobs (Je nach Konfiguration dieses Parameters) abbrechen. |
<condition> | JA | Definiert eine Bedingung zur Ausführung eines oder mehrerer bestimmter Jobs (Die Anzahl zu definierender Bedingungen ist beliebig). Durch Bedingungen werden bestimmte Zustände von beliebigen Dateien kontrolliert. Vom Resultat abhängig können Jobs ausgeführt oder übersprungen werden. |
|
Vergibt den Namen einer Bedingung. Die Verwendung eines gleichen Namens für mehrere Bedingungen ist zulässig. Somit setzt das Ausführen eines Jobs, der so an mehrere Bedingungen geknüpft ist, eine erfolgreiche Prüfung all dieser Bedingungen voraus. | |
|
Definiert die zu prüfende Datei an. Pfade dürfen relativ angewendet werden. | |
|
Definiert das zu prüfende Kriterium (Block genannt) der Datei. | |
|
JA | Definiert den zu anzuwendenden Vergleichsalgorithmus. |
|
JA |
Definiert den zu anzuwendenden Vergleichsoperator.
Verglichen wird immer der Referenzwert mit dem Wert des definierten Blocks - nicht umgekehrt: Durch einen Vergleich des Referenzwertes 100 mit dem Blockwert 99 ergibt sich 1, womit der Referenzwert größer ist. Der Oparator ist dementsprechend an das zu erwartende Resultat anzupassen. |
|
Definiert einen Referenzwert, der mit dem definierten Blockwert unter berücksichtigung der anzuwendenden Methode und des Operators verglichen wird. |
Parameter von Attributen:
Attribut | Parameter | Beschreibung |
<action> | copy | Kopiert ein Objekt von der Quelle zum Ziel. Dieser Vorgang wird automatisch angewendet, falls der Parameter nicht definiert ist. |
delete | Löscht ein Objekt. Das zu löschende Objekt wird durch das Attribut <source> definiert, das Attribut <target> hat in diesem Ausführungstyp keine Funktion. | |
move | Verschiebt ein Objekt von der Quelle zum Ziel. Bereits existierende Dateien werden überschrieben. | |
unzip | Öffnet die Quelle (Diese muss ein gültiges Zip-Archiv sein) und entpackt den Inhalt (Inklusive möglichen Unterverzeichnissen) in das Zielverzeichnis. Bereits existierende Dateien werden überschrieben. | |
<block> | companyname | Führt den Vergleich zwischen Firmenname und Referenzwert durch. |
filedescription | Führt den Vergleich zwischen Dateibeschreibung und Referenzwert durch. | |
fileversion | Führt den Vergleich zwischen Dateiversion und Referenzwert durch. | |
internalname | Führt den Vergleich zwischen Codenamen und Referenzwert durch. | |
legalcopyright | Führt den Vergleich zwischen Copyright und Referenzwert durch. | |
originalfilename | Führt den Vergleich zwischen Originaldateiname und Referenzwert durch. | |
productname | Führt den Vergleich zwischen Produktname und Referenzwert durch. | |
productversion | Führt den Vergleich zwischen Produktversion und Referenzwert durch. | |
comments | Führt den Vergleich zwischen Kommentar und Referenzwert durch. | |
legaltrademarks | Führt den Vergleich zwischen Handelsmarke und Referenzwert durch. | |
privatebuild | Führt den Vergleich zwischen Privat-Build und Referenzwert durch. | |
specialbuild | Führt den Vergleich zwischen Spezial-Build und Referenzwert durch. | |
<method> | valence | Prüft einzelne Zeichen der Vergleichswerte der Reihe nach auf deren Wertigkeit. Es wird nicht zwischen Zahlen, Buchstaben und Symbolen unterschieden, maßgeblich ist der Wert eines Zeichens. |
numeric |
Prüft den Zahlenwert der Vergleichswerte. Möglicherweise enthaltene Buchstaben oder Symbole (auch Kommas)
bleiben bei der Operation unberücksichtigt.
Der Wert 0x0900,5 würde dem Zahlenwert 9005 entsprechen. |
|
logical |
Prüft einzelne Symbole und Buchstaben der Vergleichswerte der Reihe nach auf deren Wertigkeit. Zahlen bilden einen zusammenhängenen
Zahlenwert welcher numerisch verglichen wird. Dieser Parameter ist somit eine Mischung aus valence, und numeric.
Ein vergleich zwischen den Zeichenfolgen Hausnummer 55a und Hausnummer 200b würde aus folgenden Vergleichen bestehen:
Diese Methode wird automatisch angewendet, falls der Parameter nicht definiert ist. |
|
<operator> | higher | Bestimmt einen Vergleich als erfolgreich, wenn der Referenzwert größer als der Blockwert ist. |
higherequal | Bestimmt einen Vergleich als erfolgreich, wenn der Referenzwert größer oder gleich dem Blockwert ist. | |
equal | Bestimmt einen Vergleich als erfolgreich, wenn der Referenzwert gleich dem Blockwert ist. | |
unequal | Bestimmt einen Vergleich als erfolgreich, wenn der Referenzwert ungleich dem Blockwert ist. | |
lowerequal | Bestimmt einen Vergleich als erfolgreich, wenn der Referenzwert kleiner oder gleich dem Blockwert ist. | |
lower | Bestimmt einen Vergleich als erfolgreich, wenn der Referenzwert kleiner als der Blockwert ist. | |
<failjob> | yes | Verhindert die weitere Ausführung eines Jobs im Fehlerfall. Dieses Verhalten wird automatisch angewendet, falls der Parameter nicht definiert ist. |
no | Ermöglicht die weitere Ausführung eines Jobs im Fehlerfall. |
JobFiles dürfen Kommentare in XML-Syntax enthalten:
<!-- [KOMMENTAR] !--> |
Die JobFile ist nach dem folgendem Muster aufgebaut:
<!-- DATEIANFANG !-->
<file>[DATEINAME]</file> <block>[BLOCKNAME]</block> <method>[METHODE]</method> <operator>[OPERATOR]</operator> <reference>[REFERENZWERT]</reference> <!-- [WEITERE BEDINGUNGEN] !--> <job>
<conditioned>[NAME DER BEDINGUNG]</conditioned> <balloon>
<description>[BESCHREIBUNG]</description> <timeout>[TIMEOUT]</timeout> <object>
<target>[ZIEL]</target> <action>[ANWENDUNGSMODUS]</action> <predelay>[VERZÖGERUNG]</predelay> <postdelay>[VERZÖGERUNG]</postdelay> <execute>[DATEI]</execute> <!-- [WEITERE OBJEKTE] !--> <!-- [WEITERE JOBS] !--> |
<!-- JobFile für Update einer Anwendung (FALLS erforderlich) !-->
<updatejob>
<!-- Die aktuelle Build-Version ist 50 !--> <condition>
<file>.\Tool.exe</file> <block>privatebuild</block> <method>numeric</method> <operator>higher</operator> <reference>50</reference> <!-- Kopieren der zu aktualisierenden Dateien in ein temporäres Verzeichnis !--> <!-- nach einer Wartezeit von 10 Sekunden !--> <job>
<conditioned>CheckVersion</conditioned> <balloon>
<description>Benötigte Dateien werden in temporäres Verzeichnis kopiert...</description> <timeout>20000</timeout> <predelay>10000</predelay> <object>
<target>.\Temp</target> <object>
<target>.\Temp\german.ini</target> <object>
<target>.\Temp\english.ini</target> <!-- Möglicherweise aktive Anwendung beenden !--> <!-- (Anschließend zur Vorsicht 10 Sekunden warten) !--> <job>
<conditioned>CheckVersion</conditioned> <closeapp>
<window>Tool</window> <postdelay>10000</postdelay> <!-- Alte Konfigurationsdatei löschen !--> <job>
<conditioned>CheckVersion</conditioned> <object>
<action>delete</action> <!-- Nach dem Kopieren, Dateien aus dem temporären Verzeichnis verschieben !--> <job>
<conditioned>CheckVersion</conditioned> <balloon>
<description>Programmdaten werden aktualisiert...</description> <timeout>20000</timeout> <execute>.\ReleaseNotes.txt</execute> <object>
<target>.\</target> <action>move</action> |