Opsi Update Script mit ExitWindows /ImmediateReboot

Antworten
Simon09
Beiträge: 21
Registriert: 13 Aug 2015, 12:22

Opsi Update Script mit ExitWindows /ImmediateReboot

Beitrag von Simon09 »

Hallo Forum,

ich habe ein Update Script nach Vorlage der Opsi Anleitung gebaut, Script aus der Anleitung:

Code: Alles auswählen

DefVar $Flag$
DefVar $WinstRegKey$
DefVar $RebootRegVar$
Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst"
Set $Flag$ = GetRegistryStringValue32("["+$WinstRegKey$+"] "+"RebootFlag")
if not ($Flag$ = "1")
;=========================
; Anweisungen vor Reboot
Files_doSomething
; Reboot initialisieren ...
Set $Flag$ = "1"
Registry_SaveRebootFlag
ExitWindows /ImmediateReboot
else
;=========================
; Anweisungen nach Reboot
; Rebootflag zurücksetzen
Set $Flag$ = "0"
Registry_SaveRebootFlag
; die eigentlichen Anweisungen
Files_doMore
endif
[Registry_SaveRebootFlag]
openKey [$WinstRegKey$]
set "RebootFlag" = "$Flag$"
[Files_doSomething]
; eine Sektion, die vor dem Reboot ausgeführt wird
[Files_doMore]
; eine Sektion, die nach dem Reboot ausgeführt wird
Wenn ich auf Basis von diesem Code das Script ausfühe, passiert nichts... Wenn ich das ganze mit winst32.exe öffne sehe ich, dass er im Prinzip nur:

Code: Alles auswählen

[6] [Feb 27 17:06:49:322] Registry key [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion]  opened
[6] [Feb 27 17:06:49:324] Key closed
durchführt, sonst nichts. Wo liegt der Fehler? Bis auf jeweils eine Copy anweisung in der Files Sektion und umbenennung der File Sektionen ist alles gleich.

Danke!
uncle_scrooge
Beiträge: 650
Registriert: 21 Feb 2012, 12:03
Wohnort: Mainz

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Beitrag von uncle_scrooge »

Nach was hast Du die Files-Sektionen umbenannt?
Sie sollten nach wie vor mit Files_ anfangen.
Simon09
Beiträge: 21
Registriert: 13 Aug 2015, 12:22

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Beitrag von Simon09 »

Einfach nur in Files_1 und Files_2 ...

Ich bin morgen früh wieder im Büro dann schaue ich nochmal drüber, aber ich habe heute keinen Fehler in dem Script finden können was die File Sektion Aufrufe angeht. Er öffnet mir nur einmal den Key und schließt ihn dann...
Simon09
Beiträge: 21
Registriert: 13 Aug 2015, 12:22

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Beitrag von Simon09 »

Hier exakt mein Script, wie gesagt im Prinzip genauso wie in der Opsi Winst / Script Anleitung:

Code: Alles auswählen

DefVar $Flag$
DefVar $WinstRegKey$
DefVar $RebootRegVar$

Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst"
Set $Flag$ = GetRegistryStringValue32("["+$WinstRegKey$+"] "+"RebootFlag")


if not ($Flag$ = "1")
;=========================
; Vor Reboot

Files_1
Set $Flag$ = "1"
Registry_SaveRebootFlag
ExitWindows /ImmediateReboot

else
;=========================
; Nach Reboot

; Rebootflag zurücksetzen
Set $Flag$ = "0"
Registry_SaveRebootFlag

/WaitForProcessEnding "DvInesInstMan.Exe" /TimeOutSeconds 600
killtask "test.exe"
Files_2

endif

[Registry_SaveRebootFlag]
openKey [$WinstRegKey$]
set "RebootFlag" = "$Flag$"

[Files_1]
copy -u "%SCRIPTPATH%\test.exe" "%SYSTEMDRIVE%\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"

[Files_2]
delete -f "%SYSTEMDRIVE%\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\test.exe"
Laut winst32.exe passiert nichts weiteres als:

[6] [Feb 28 12:14:31:303] Registry key [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion] opened
[6] [Feb 28 12:14:31:305] Key closed
[1] [Feb 28 12:14:31:392] ___________________
[1] [Feb 28 12:14:31:394] script finished
[1] [Feb 28 12:14:31:396] 0 errors
[1] [Feb 28 12:14:31:398] 0 warnings

edit: Was halt komisch ist; er geht weder in die if noch in die else Sektion rein... Aber da das jetzt mein erstes Script seit ca einem Jahr ist, kann es auch gut sein dass ich da etwas grundsätzliches verbocke. Wenn ich das Script jedenfalls on demand ausführe lädt der Opsi Client, und ist dann quasi nach 10 Sekunden mit "nichts" fertig :P

edit2: godness, ich glaube ich habe einfach nur die [Actions] Zeile oben vergessen... :roll:
uncle_scrooge
Beiträge: 650
Registriert: 21 Feb 2012, 12:03
Wohnort: Mainz

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Beitrag von uncle_scrooge »

Ganz am Anfang des scripts wäre noch ein [Actions] angeraten.
holgerv
Beiträge: 288
Registriert: 20 Aug 2012, 09:35

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Beitrag von holgerv »

"WaitForProcessEnding" sollte Teil einer WinBatch-Sektion sein.
Die ungefähre Syntax ist so:

Code: Alles auswählen

[Actions]
Winbatch_beispiel /WaitForProcessEnding "programm.exe"

[Winbatch_beispiel]
"%ScriptPath%\programm.exe"
Viel Erfolg!
Simon09
Beiträge: 21
Registriert: 13 Aug 2015, 12:22

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Beitrag von Simon09 »

Danke, ich hatte dazu ja parallel schon eine Frage in einem anderen Thread gestellt. Mein Problem ist dass es sich um eine exe handelt die extern gestartet ist und ich nicht per Winbatch abhandeln kann. Wie kann ich WaitForProcessEnding darauf anwenden?
holgerv
Beiträge: 288
Registriert: 20 Aug 2012, 09:35

Re: Opsi Update Script mit ExitWindows /ImmediateReboot

Beitrag von holgerv »

Simon09 hat geschrieben:Danke, ich hatte dazu ja parallel schon eine Frage in einem anderen Thread gestellt.
Das ist nicht hilfreich.
Simon09 hat geschrieben:Mein Problem ist dass es sich um eine exe handelt die extern gestartet ist und ich nicht per Winbatch abhandeln kann. Wie kann ich WaitForProcessEnding darauf anwenden?
Guck Dir mal "GetProcessList" an. Beispielcode findest Du z. B. in https://download.uib.de/opsi4.0/product ... 6.4-1.opsi. (Da ist Beispielcode für so ziemlich alles drin.)

Viel Erfolg!


Holger
Antworten