Paketierungs-Beispiel: Mozilla Firefox 5602

Moderator: MVogt

Paketierungs-Beispiel: Mozilla Firefox 5602

Beitragvon Theo_Gottwald » 20. Nov 2017, 14:01

Den Firefox kann man einfach mit dem Instarec aufzeichnen. Beim Test sieht man wie das Skript über den ersten Code-Block läuft ohne dass die Maske des Ziel-Setup sich ändert. Also wurde der Mausklick nicht angenommen.
Das ist bei "mauslosen Klick" möglich, dafür gibt es dann eben die "richtigen Mausklicks". Bei zwei der Mausklicks ändere ich also den
"BSC\1||7|240" in einen "BSC\4||7|240"
dies bewirkt dass der "Intelligente Klick" einen "compatiblen Mausklick" (wie MLC\) ausführt.
Also zwei kleine Zahlen geändert und läuft.

Code: Alles auswählen
' +++ Install_firefox_setup_5602.rem +++
' Zweck:
' erstellt am: 02.11.2017
' von: Theo Gottwald
'========================
'#EXE:?path
' Um die Setup-Dateien in das Paket einzubinden, entfernen Sie das erste ! in der folgenden Zeile.
'#INC:?path\@
'#SPI:ForceWrite
'#SPI:VBRun
'#SPI:NoAuto
'#SPI:x64
'#FDC:Ask
'#MAN:ra
'
KRM\2
IEX\
   EVG\LogDirectory>$$LOG      ' Set log directory
   USM\4|$$LOG\SetupErrorLog\  ' Use silent mode with redirected error messages to error files
 '  DIP\150                     ' 150 ms delay between each command
EEX\
'
' Dieses Skript wurde am 11-02-2017 um 16:36:40 für Theo Gottwald erstellt.
' Von Ihrem Matrix42 Installations-Rekorder. Programm-ID:20170210'
 '
' No.:1 | Time: 16:35:15 | Ticks:  0
VAR\$$PRO=10001
' Das Skript ermittelt automatisch ob das Setup-Executable in das Paket eingebunden ist oder ob das Setup im gleichen Ordner neben dem Paket liegt.
VAR\$$SEA=firefox_setup_56.0.2.exe
GSB\LocateSetup
' Der komplette Pfad zum Setup ist nun in der Variablen $$SEB
EXS\$$SEB
VAR\$$PID=$v4$

' No.:2 | Time: 16:35:51 | Ticks:  343
VAR\$$PRO=10002
STW\#32770\Mozilla Firefox-Installation|w54
GCW\1\1\Button\&Weiter|w54
SAW\
BSC\4||7|240

' No.:3 | Time: 16:36:07 | Ticks:  699
' Die folgenden Textfelder wurden gefunden:
'  1. Static\Installationsart
'  2. Static\Installationseinstellungen wählen
'  3. Static\Bitte wählen Sie eine Installationsart, klicken Sie dann auf Wei
'  4. Static\Firefox wird mit den am häufigsten verwendeten Programmteilen in
'  5. Static\Sie können selbst wählen, welche Programmteile installiert werde
VAR\$$PRO=10003
STW\#32770\Mozilla Firefox-Installation|w56
' Dieser Befehl wird zwischen mehreren gleichen Buttons eingeschoben um die Button-Klicks zu entkoppeln.
STC\Static\Sie können selbst wählen, welche Programmteile installiert werde|w56
TDL\40
GCW\1\1\Button\&Weiter|w56
SAW\
BSC\4||7|240

' No.:4 | Time: 16:36:10 | Ticks:  779
VAR\$$PRO=10004
STW\#32770\Mozilla Firefox-Installation|w45
GCW\1\1\Button\&Installieren|w45
SAW\
MEL\

' No.:5 | Time: 16:36:35 | Ticks:  1056
VAR\$$PRO=10005
STW\#32770\Mozilla Firefox-Installation|w45
CAS\2
GCW\1203\2\Button\Firefox jetzt &starten|w45
SAW\
BTC\0

' No.:6 | Time: 16:36:37 | Ticks:  1085
VAR\$$PRO=10006
STW\#32770\Mozilla Firefox-Installation|w45
GCW\1\1\Button\&Fertigstellen|w45
SAW\
BCS\1||7|240

' No.:7 | Time: 16:36:40 | Ticks:  1165
' Dieser Befehl veranlasst das Skript abzuwarten, bis die gesteuerte Applikation sich beendet, oder die Timeout-Zeit überschritten wird.
' Die Zahl nach dem | (Pipe Symbol) gibt das Timeout in Sekunden an. Es wird generell mit 360 Sekunden festgelegt. Bitte korrigieren Sie diese Zahl manuell falls erforderlich.
WPT\$$PID|360
JIT\Always

VAR\$$PRO=0
:Always
JIV\$$PRO!0|ErrorHandler
SRV\0
@

'================================================
' Unterprogramme
'================================================
' Stelle fest, wo das Setup-Executable sich befindet.
:LocateSetup
' Finde heraus, ob die Setup.exe im gleichen Ordner wie das Paket liegt.
VAR\$$SEB=$ev4$\$$SEA
IEF\$$SEB
   GOTO LeaveLocateSetup
EEF\
' Finde den Pfad zur Setup.exe Datei, egal ob diese in das Paket eingebunden ist oder neben dem Paket liegt.
VAR\$$SEB=?path\$$SEA
IEF\$$SEB
   GOTO LeaveLocateSetup
ELSE
   VAR\$$ERO=Setup.exe-Datei kann nicht gefunden werden. Bitte prüfen Sie die Schreibweise und ob die Datei vorhanden ist.
   GOTO Always
EEF\
:LeaveLocateSetup
RET\

'================================================
' Error-Handler: (Fehlerbehandlung) Schreibt die Fehlermeldung ($$ERT) in die Error-Log Datei.
'================================================
:ErrorHandler
' Stelle fest, ob das $$LOG-Verzeichnis schon angegeben wurde.
VRT\$$LOG\
VBT\$$LOG
JIF\$$LOG|Lab_valid
VAR\$$LOG=#?#?#
:Lab_valid
VAR\$$PAT=$$LOG\
' Wenn kein Ausgabepfad für die Fehlerdatei angegeben wurde, verwende den Pfad wo das Paket selbst liegt.
NEF\$$PAT
   VAR\$$PAT=$ev4$\
EEF\
NEV\$$ERO
   VAR\$$ERO=Der Aussprung erfolgte aus Block Nr.$$PRO
EEV\
VAR\$$ERT=$date$-$time$$crlf$
VAR\$$ERT=$$ERTEin Fehler ist aufgetreten in Zeile:$errlin$.$crlf$
VAR\$$ERT=$$ERT$$ERO$crlf$
VAR\$$ERT=$$ERTDie Fehlermeldung lautet: $crlf$<$errtxt$>$crlf$
' Mache einen Screenshot vom letzten Fenster, oder dem gesamten Desktop.
VAR\$$ERF=$$PAT\SetupErrorLog.jpg
SCS\$$ERF
' Schreibe die Error-Log Datei. (ATF\=Append).
VAR\$$ERF=$$PAT\SetupErrorLog.txt
ATF\$$ERF<$$ERT
' Verlasse die Fehlerbehandlung(Exit Error-Handler).
SRV\$$PRO
END\1


Und hier auch die Deinstallation.

Code: Alles auswählen
' +++ Uninstall_MozillaFirefox5602x86de.rem +++
' Zweck:
' erstellt am: 02.11.2017
' von: Theo Gottwald
'========================
'#EXE:?path
'#SPI:ForceWrite
'#SPI:VBRun
'#SPI:NoAuto
'#SPI:x64
'#FDC:Ask
'#MAN:ra
'
KRM\2
IEX\
   EVG\LogDirectory>$$LOG      ' Set log directory
   USM\4|$$LOG\SetupErrorLog\  ' Use silent mode with redirected error messages to error files
   DIP\150                     ' 150 ms delay between each command
EEX\
'
' Dieses Skript wurde am 11-02-2017 um 16:37:56 für Theo Gottwald erstellt.
' Von Ihrem Matrix42 Installations-Rekorder. Programm-ID:20170210'
 '
' No.:1 | Time: 16:37:42 | Ticks:  0
VAR\$$PRO=10001
' Durch Auskommentieren können Sie unterschiedliche Verfahren verwenden.
' EXU\Mozilla Firefox 56.0.2 (x86 de)|u
EXS\?progs\Mozilla$sp$Firefox\uninstall\helper.exe
VAR\$$PID=$v4$

' No.:2 | Time: 16:37:47 | Ticks:  131
VAR\$$PRO=10002
STW\#32770\mozilla firefox-deinstallation|w30
SWC\#32770\notext|w30
SWC\static\dieser assistent wird sie durch die deinstallation von mozilla firefox begleiten.$crlf$$crlf$bi|w30

STW\#32770\Mozilla Firefox-Deinstallation|w45
GCW\1\1\Button\&Weiter|w45
SAW\
BCS\4||7|240

' No.:3 | Time: 16:37:50 | Ticks:  187
VAR\$$PRO=10003
STW\#32770\Mozilla Firefox-Deinstallation|w45
GCW\1\1\Button\&Deinstallieren|w45
SAW\
BSC\1||7|240

' No.:4 | Time: 16:37:53 | Ticks:  267
VAR\$$PRO=10004
STW\#32770\Mozilla Firefox-Deinstallation|w45
GCW\1\1\Button\&Fertigstellen|w45
SAW\
BCS\1||7|240

' No.:5 | Time: 16:37:56 | Ticks:  342
' Dieser Befehl veranlasst das Skript abzuwarten, bis die gesteuerte Applikation sich beendet, oder die Timeout-Zeit überschritten wird.
' Die Zahl nach dem | (Pipe Symbol) gibt das Timeout in Sekunden an. Es wird generell mit 360 Sekunden festgelegt. Bitte korrigieren Sie diese Zahl manuell falls erforderlich.
WPT\$$PID|360
JIT\Always

VAR\$$PRO=0
:Always
JIV\$$PRO!0|ErrorHandler
SRV\0
@

:ErrorHandler
' Wenn das Skript hier landet, ist ein Fehler aufgetreten
' der Returncode des Skripts entspricht dann der Blocknummer, wo der Fehler aufgetreten ist.
SRV\$$PRO
END\1



Hier die Details zu BSC\ / BCS\

Code: Alles auswählen
In seltenen Fällen kann es vorkommen, daß ein einzelner Buttonclick aufgrund der aktuellen Konstellation nicht ausreicht, um das gewünschte Ergebnis hervorzurufen, was sich dann auf den Programmablauf negativ auswirkt. Um solche Fälle abzufangen, wurde der Befehl "BCS\" implementiert. Er gestattet es, eine Mausaktivität (Klick) auf das aktuell lokalisierte Kindfenster (i.d.R. ein Button) so lange zu wiederholen, bis entweder das gewünschte Ereignis eingetreten oder eine TimeOut-Zeit abgelaufen ist. Danach wird das Programm fortgesetzt. Dabei kann der Wiederholabstand eingestellt werden:
BCS\Click (Zahl)[|Interval (ms)][|Bedingung (Zahl)][|Timeoutzeit (s)]    [] = optional
Click:
1 = "MEL"
2 = "MER"
3 = "MED"
4 = "MLC"
5 = "MRC"
6 = "MDC"
7 = "MLI"
8 = "MRI"
9 = "MDI"
Defaultwert bei fehlender Angabe = 1.
Interval:
Zeitabstand zwischen den Wiederholungen in ms; bei fehlender Angabe greift der Defaultwert von 250 ms; Werte < 100 ms sind nicht zulässig.
Bedingung:
Das Programm wird immer fortgesetzt, wenn das aktuelle Topfenster oder das aktuelle Kindfenster nicht mehr existieren. Darüber hinaus können Sie folgende Bedingungen festlegen:
1 = Kindfenster muß unsichtbar werden,
2 = Kindfenster muß disabled werden oder
4 = Kindfensterbeschriftung muß sich ändern.
Der Wert für "Bedingung" kann eine beliebige Kombination dieser Werte sein; sie gilt dann als erfüllt, wenn eine der angegebenen Änderungen eingetreten ist. Wurde die Bedingung erfüllt, läuft das Programm weiter.
Wenn der Datenteil leer ist oder keine Angabe zur Bedingung vorliegt, gilt diese als erfüllt, wenn eine der o.g. Veränderungen eingetreten ist (Default = 7).
Timeoutzeit:
Zeit in Sekunden, für die maximal die Wiederholung des Mausklicks erfolgt (Defaultwert bei fehlender Angabe = 15). Nach Ablauf dieser Zeit wird das TimeOut-Flag gesetzt, und das Programm läuft weiter. Mit "ITO\" können Sie abfragen, ob ein TimeOut vorlag.
HINWEIS:
Wenn Sie nur einen bestimmten Wert setzen wollen, müssen zumindest alle vorhergehenden Trennzeichen ("|") eingetragen sein. Für die restlichen Werte wird dann die Default-Einstellung wirksam.

Der Befehl "BSC\..." ist ähnlich wie "BCS\" und hat die gleiche Syntax; die Bedingung wird jedoch nicht ausgewertet und sollte demzufolge leer bleiben. Der Unterschied besteht darin, daß bei "BSC\" bestimmte Eigenschaften aller zum Zeitpunkt des Befehlsaufrufs sichtbaren Kindfenster des aktuellen Topfensters programmintern gespeichert und nach jedem Mausklick überprüft werden. Wenn sich bei einem dieser Fenster eine der Eigenschaften
- Handle (wenn 0, ist Fenster verschwunden),
- Visible,
- Enabled oder
- Text
geändert hat, wird der Mausklick als erfolgreich gewertet und die Abarbeitung der Remote-Datei fortgesetzt.
Der Defaultwert für das TimeOut beträgt bei "BSC\" 30 sec und der für das Zeitintervall 400 ms. 
Benutzeravatar
Theo_Gottwald
 
Beiträge: 248
Registriert: 03. Okt 2009, 08:57
Wohnort: Herrenstr.11 * 76706 Dettenheim

Zurück zu Package Robot

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste