unerklärlicher loop

Antworten
crawleroz1
Beiträge: 49
Registriert: 13 Mär 2018, 11:36

unerklärlicher loop

Beitrag von crawleroz1 »

Hallo OPSI Gemeinde, ich stehe etwas auf dem Schlauch und verstehe das Verhalten meines Skripts nicht so recht.
Ich will ein paar Registry Einträge machen und dann Neustarten damit diese auch voll und ganz wirken und nach dem Neustart soll eine Deinstallation stattfinden. Eigentlich nichts kompliziertes und solche Dinge habe ich auch vorher schon gemacht nur mein OPSI Skript läuft immer wieder in einen Loop. :o
PC startet --> Registry Sektion wird ausgeführt --> Neustart --> Registry Sektion wird ausgeführt --> Neustart --> Registry Sektion wird ausgeführt Neustart --> ....

Wieso fängt das Skript immer wieder von vorne an statt mit meiner Deinstallation zu beginnen? :?: :x Ein tausch der Reboot Befehle (ExitWindows /Reboot oder ExitWindows /RebootWanted) brauchte auch kein anderes Ergebnis. Weiß jemand Rat oder sehe ich den Wald vor lauter Bäumen nicht?

;Mein Skript:
killtask "programm.exe"
Registry_Patch /64bit
ExitWindows /ImmediateReboot
sleepSeconds 10
ExecWith_autoit "%SCRIPTPATH%\Data\AutoIt3_x64.exe" WINST /letThemGo
Winbatch_uninstall /Sysnative
Files_copy
andré
Beiträge: 324
Registriert: 07 Jan 2014, 10:48

Re: unerklärlicher loop

Beitrag von andré »

Ein Skript fängt immer wieder am Anfang an, wenn Opsi startet.

Möchtest du also an einer bestimmten Stelle nach einem Neustart weiter machen, muss Opsi sich also merken, an welcher Stelle es fortsetzen muss.

Üblicherweise macht man das über einen Wert in der Registry, der nach dem Neustart ausgewertet wird.

Zum Beispiel:

Code: Alles auswählen

Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst"
Set $Reboot_Flag_Key$ = "RebootFlag_Programm"
Set $Reboot_Flag$ = GetRegistryStringValue32("["+$WinstRegKey$+"] " + $Reboot_Flag_Key$)


; Wenn das Reboot Flag nicht 1 ist, wurde noch nicht rebootet
if not ($Reboot_Flag$ = "1")
    ; Das sind die Anweisungen vor dem Reboot
      [...]
     ; Vorbereiten des Reboots
      Set $Reboot_Flag$ = "1"
      Registry_SaveRebootFlag
      ExitWindows /ImmediateReboot
else
    ; RebootFlag zurückSetzen
     Set $Reboot_Flag$ = "0"
     Registry_SaveRebootFlag
     [....]
     Comment "Reboot wurde erfolgreich durchgeführt"
endif


[Registry_SaveRebootFlag]
openKey [$WinstRegKey$]
Set "$Reboot_Flag_Key$" = "$Reboot_Flag$"

crawleroz1
Beiträge: 49
Registriert: 13 Mär 2018, 11:36

Re: unerklärlicher loop

Beitrag von crawleroz1 »

Vielenb Dank für die Antwort aber
das halte ich für ein Gerücht, dass ein OPSI Skript immer wieder von vorne anfängt.
Dann würde der Neustartbefehl ja gar keine Sinn machen, wenn er immer in einem Dauerneustart-Loop endet.

Das hat mein OPSI noch niegemacht :?
andré
Beiträge: 324
Registriert: 07 Jan 2014, 10:48

Re: unerklärlicher loop

Beitrag von andré »

Der ImmediateReboot-Befehl macht nur das: Neustarten. Dabei wird setup auch nicht rausgenommen und daher wird das entsprechende Programm wieder zur Installation ausgewählt.

Wenn dein Opsi nicht gesagt bekommt, wo es das Skript weiter abarbeiten soll, dann fängt es von vorne an, das ist absolut normales Verhalten.

Einzige Ausnahme, die mir jetzt einfällt, sind bestimmte Neustart-Befehle am Ende. Bin ich jetzt zu faul, nachzusehen, welcher das ist, aber der wird im opsi-client-agent Skript verwendet. Wenn der am Ende vom Skript verwendet wird, wird das Paket abgeschlossen und ein Neustart gemacht, da kommt entsprechend kein Loop zustande.

Mich würde mal interessieren, wie die Skripte aussehen, bei denen Opsi angeblich so weiter gemacht hat, wie du das behauptest. Ich kann mir das nämlich überhaupt nicht vorstellen.
andré
Beiträge: 324
Registriert: 07 Jan 2014, 10:48

Re: unerklärlicher loop

Beitrag von andré »

Hier gibts auch noch eine Info dazu im Handbuch:
https://download.uib.de/opsi4.1/documen ... nds-reboot
crawleroz1
Beiträge: 49
Registriert: 13 Mär 2018, 11:36

Re: unerklärlicher loop

Beitrag von crawleroz1 »

OK vielen Dank
Dann bin ich von falschen Tatsachen ausgegangen. :D
Man lebt und lernt.
Antworten