Page 1 of 1

Fehlerhafte Fehlerbehandlung im UpdateInstaller

PostPosted: 22.01.2018, 17:49
by Dalai
Durch das Thema Fehler #0 beim Aufruf Update.cmd bin ich auf eine ungünstige oder gar fehlerhafte Code-Stelle im UpdateInstaller aufmerksam geworden.

Problem:
Code: Select all
If Run(@ComSpec & " /D /C Update.cmd" & $options, $scriptdir, @SW_HIDE) = 0 Then
        If ShowGUIInGerman() Then
          MsgBox(0x2010, "Fehler", "Fehler #" & @error & " beim Aufruf von" _
                           & @LF & @ComSpec & " /D /C Update.cmd" & $options & " in" _
                           & @LF & $scriptdir & ".")
        Else
          MsgBox(0x2010, "Error", "Error #" & @error & " when calling" _
                          & @LF & @ComSpec & " /D /C Update.cmd" & $options & " in" _
                          & @LF & $scriptdir & ".")
        EndIf
ist sehr ungünstig. Hier steht der Funktionsaufruf ShowGUIInGerman() vor der Benutzung des Makros @error. Da AutoIt @error zu Beginn jedes Funktionsaufrufs zurücksetzt, kommt in der angezeigten Meldung immer der Wert 0 an.

Vorschlag zur Behebung:
Code: Select all
If Run(@ComSpec & " /D /C Update.cmd" & $options, $scriptdir, @SW_HIDE) = 0 Then
        $err = @error
        If ShowGUIInGerman() Then
          MsgBox(0x2010, "Fehler", "Fehler #" & $err & " beim Aufruf von" _
                           & @LF & @ComSpec & " /D /C Update.cmd" & $options & " in" _
                           & @LF & $scriptdir & ".")
        Else
          MsgBox(0x2010, "Error", "Error #" & $err & " when calling" _
                          & @LF & @ComSpec & " /D /C Update.cmd" & $options & " in" _
                          & @LF & $scriptdir & ".")
        EndIf
wobei $err noch deklariert werden sollte (oder muss wenn die AutoIt-Einstellung MustDeclareVars aktiv ist). Alternativ könnte man auch die Funktion ShowGUIInGerman() schon zu Beginn des Skripts rufen und dessen Rückgabe in einer Variable speichern und an dieser Stelle nur die Variable vergleichen.

Grüße
Dalai

Re: Fehlerhafte Fehlerbehandlung im UpdateInstaller

PostPosted: 25.01.2018, 16:28
by WSUSUpdateAdmin
Moin Dalai,

danke schön! :)

Dalai wrote:Da AutoIt @error zu Beginn jedes Funktionsaufrufs zurücksetzt, kommt in der angezeigten Meldung immer der Wert 0 an.

Stimmt! :oops:

Dalai wrote:Alternativ könnte man auch die Funktion ShowGUIInGerman() schon zu Beginn des Skripts rufen und dessen Rückgabe in einer Variable speichern und an dieser Stelle nur die Variable vergleichen.

Das finde ich noch besser, um die Wahrscheinlichkeit für künftige ähnliche Fehler zu senken. ;)

:arrow: http://trac.wsusoffline.net/browser/trunk (r924)

Vielen Dank & viele Grüße,
Torsten

Re: Fehlerhafte Fehlerbehandlung im UpdateInstaller

PostPosted: 25.01.2018, 18:23
by Dalai
WSUSUpdateAdmin wrote:Das finde ich noch besser, um die Wahrscheinlichkeit für künftige ähnliche Fehler zu senken. ;)

Stümmt :)


:thumbsup: (ein entsprechendes Smilie fehlt, oder?)

Grüße
Dalai

Re: Fehlerhafte Fehlerbehandlung im UpdateInstaller

PostPosted: 26.01.2018, 03:58
by boco
Ja. phpBB ist nicht gerade reich besät mit Emoticons/Emojis (Smilies sagt schon lange keiner mehr. :ugeek:).