Label statt MsgBox als Update Prüfung vor Programm Öffnung

  • Hallo zusammen,

    ich möchte gern statt einer MsgBox die da sagt --> MsgBox(64, "", "Es wird geprüft ob ein Update vorhanden ist") <-- ein Label setzen.

    Das setzen des Labels ist kein Problem --> GUICtrlCreateLabel("Es wird geprüft ob ein Update vorhanden ist!",130, 140, 230, 40) <--

    Was mich nun stört ist, das wenn ich es mit der MsgBox mache das Programm nicht schon im Hintergrund zu sehen ist (<--so möchte ich es), setze ich aber das Label statt der Box so ist das Programm schon zu sehen und das Label hängt davor.

    Kann man das irgendwie einstellen, das dem nicht so ist und das Label genauso fungiert wie die MsgBox und dieses wenn kein Update vorhanden ist verschwindet?

    Hier der Codeausschnitt:

    Spoiler anzeigen

    Dim $ver = "1.1.0"
    InetGet("http://test.de/test/update.txt", @Scriptdir & "\data\update.txt", 1, 0)
    $file = FileOpen(@Scriptdir & "\data\update.txt", 0)
    $line = FileReadLine($file, 1)
    $line2 = FileReadLine($file, 2)
    $line2 = 1
    If $line = $ver Then
    GUICtrlCreateLabel("Es wird geprüft ob ein Update vorhanden ist!",130, 140, 230, 40)
    FileClose($file)
    Else

    Mfg Ghostleader

    Einmal editiert, zuletzt von Ghostleader (7. Juli 2011 um 19:54)

  • Ich bin mir jetzt nicht ganz sicher ob ich es richtig verstanden habe, da du das Problem durcheinander schilderst :D
    Möchtest du dass bei Programmstart deine Gui und auch die Updatemeldung angezeigt werden oder?

    Dazu müsstest du dir einfach ne zweite Gui basteln in der sich die Updatemeldung befindet.

  • Hallo zusammen,

    vielen Dank erstmal für eure Antworten.

    Natürlich habe ich vergessen die Form zu erstellen schähm. Habe es nun soweit umgebaut das alles kommt, jedoch bekomme ich es gerade net hin das wenn ich nun auf ok klicke sich das label schliesst und das tool weiter ganz normal startet.

    Spoiler anzeigen

    Dim $ver = "1.1.0"
    InetGet("http://test.de/test/update.txt", @Scriptdir & "\data\update.txt", 1, 0)
    $file = FileOpen(@Scriptdir & "\data\update.txt", 0)
    $line = FileReadLine($file, 1)
    $line2 = FileReadLine($file, 2)
    $line2 = 1
    If $line = $ver Then
    $FormUpdate = GUICreate("Update Prüfung", 350, 130, 192, 139)
    GUICtrlCreatePic("data\Backround\Background.tgx", 0, 0, 350, 130)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateLabel("Es wird geprüft ob ein Update vorhanden ist!",22, 45, 350, 40)
    GUICtrlSetFont(-1, 10, 600)
    GUICtrlSetColor(-1, 16777215)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $FrageButtonUpdate = GUICtrlCreateButton("Ok", 135, 75, 70, 20)
    FileClose($file)
    Else
    $fg = MsgBox(52, "Es ist eine neue Version vorhanden!", "Möchtest du jetzt Updaten?")
    If $fg = 6 Then
    InetGet("http://test.de/test/test.sfx.exe", @ScriptDir & "\test.sfx.exe", 1, 0)
    MsgBox(48, "Update abgeschlossen", "Du hast nun die Aktuellste Version!: (" & $ver & ")")
    FileClose($file)
    Run(@ScriptDir & "\test.sfx.exe")
    Exit
    EndIf
    EndIf

    Noch besser währe es natürlich wenn statt des Ok Buttons sich das Label sagen wir nach 2 Sec selber schliest falls kein Update vorhanden ist!

    Mfg Ghostleader

  • Dein Script gibt so wie es ist keinen Sinn.
    Du überprüfst doch erst ob eine neue version verfügbar ist und dannach sagst du dem User dass geprüft wird.
    Wieso?

    Machs doch einfach so:

    Spoiler anzeigen
    [autoit]

    #Include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Dim $ver = "1.1.0"
    InetGet("http://test.de/test/update.txt", @ScriptDir & "\data\update.txt", 1, 0)
    $file = FileOpen(@ScriptDir & "\data\update.txt", 0)
    $line = FileReadLine($file, 1)

    [/autoit] [autoit][/autoit] [autoit]

    If _VersionCompare($line, $ver) = 1 Then
    SplashTextOn("Programm veraltet", "Es steht eine neue Version online zur Verfügung")
    ; Update oder auch nicht
    Else
    SplashTextOn("Programm aktuell", "Die installierte Version ist aktuell")
    EndIf
    Sleep(2000)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Programm starten

    [/autoit]
  • Hallo Schnitzel,

    danke erstmal für deine Rückmeldung.
    Ja nachdem du es sagtest viel es mir auch auf das ich alles nach dem Update Check gesetzt habe oje.
    Zu deiner Variante muss ich sagen das sie für mich net in Frage, denn da kommt ja ein riesen Fenster was absolut kacke aussieht.
    Auch funktioniert dein Sleep so nicht!

    Ich hätte es doch wie schon gesagt gerne über die Form mit aufgesetztem Label, entweder mit Ok Button zum beenden oder (was besser wäre) das es sagen wir nach der Prüfung verschwindet und das Programm normal weiter startet.
    Fals ein Update vorhanden ist kommt ja die MsgBox die ich dann auch noch ersetzen mag durch eben auch eine Form mit Label und Button ja und nein!

    Ich hoffe das noch wer ne Lösung für meine Variante parrat hat!

    Mfg Ghostleader

  • Das ist ja auch nur ein Lösungsvorschlag. Statt dem SplashText kannst du ja genausogut was anderes einblenden.
    Nur sehe ich nach wie vor dein Problem nicht.

    Wenn du es so speziell willst dann bau dir ne GUI mit nem label und 2 Buttons.
    Setz je nachdem ob ein update da ist oder nicht nen Text auf das label und auf die Buttons
    Und fertig...

  • Hallo,

    also mein hauptproblem ist das sich die Gui samt Label einfach nicht schliest (ohne Buttons also selbstständig) und mit dem Programm fortfährt wenn kein Update vorhanden ist!

    Hier der aktuelle update code:

    Spoiler anzeigen

    Dim $ver = "1.1.0"
    $FormUpdate = GUICreate("Update Prüfung", 350, 130, 192, 139)
    GUICtrlCreatePic("data\Backround\Background.tgx", 0, 0, 350, 130)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateLabel("Es wird geprüft ob ein Update vorhanden ist!",22, 45, 350, 40)
    GUICtrlSetFont(-1, 10, 600)
    GUICtrlSetColor(-1, 16777215)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    InetGet("http://test.de/test/update.txt", @Scriptdir & "\data\update.txt", 1, 0)
    $file = FileOpen(@Scriptdir & "\data\update.txt", 0)
    $line = FileReadLine($file, 1)
    $line2 = FileReadLine($file, 2)
    $line2 = 1
    If $line = $ver Then
    FileClose($file)
    Else
    $fg = MsgBox(52, "Es ist eine neue Version vorhanden!", "Möchtest du jetzt Updaten?")
    If $fg = 6 Then
    InetGet("http://test.de/test/test.sfx.exe", @ScriptDir & "\test.sfx.exe", 1, 0)
    MsgBox(48, "Update abgeschlossen", "Du hast nun die Aktuellste Version!: (" & $ver & ")")
    FileClose($file)
    Run(@ScriptDir & "\test.sfx.exe")
    Exit
    EndIf
    EndIf

    Mfg Ghostleader

    Ps:
    Und nicht falsch verstehen ich bin dir dankbar für deine Hilfe und die Vorschläge, jedoch passt es einfach net zu dem Script von mir. :rock:

    Einmal editiert, zuletzt von Ghostleader (7. Juli 2011 um 17:58)

  • So vllt?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    Dim $ver = "1.1.0"
    $FormUpdate = GUICreate("Update Prüfung", 350, 130, 192, 139)
    GUICtrlCreatePic("data\Backround\Background.tgx", 0, 0, 350, 130)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateLabel("Es wird geprüft ob ein Update vorhanden ist!", 22, 45, 350, 40)
    GUICtrlSetFont(-1, 10, 600)
    GUICtrlSetColor(-1, 16777215)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUISetState()
    InetGet("http://test.de/test/update.txt", @ScriptDir & "\data\update.txt", 1, 0)
    $file = FileOpen(@ScriptDir & "\data\update.txt", 0)
    $line = FileReadLine($file, 1)
    $line2 = FileReadLine($file, 2)
    $line2 = 1
    GUIDelete($FormUpdate)
    If $line = $ver Then
    FileClose($file)
    Else
    $fg = MsgBox(52, "Es ist eine neue Version vorhanden!", "Möchtest du jetzt Updaten?")
    If $fg = 6 Then
    InetGet("http://test.de/test/test.sfx.exe", @ScriptDir & "\test.sfx.exe", 1, 0)
    MsgBox(48, "Update abgeschlossen", "Du hast nun die Aktuellste Version!: (" & $ver & ")")
    FileClose($file)
    Run(@ScriptDir & "\test.sfx.exe")
    Exit
    EndIf
    EndIf

    [/autoit]
  • Hier mal eine Demo GUI die vielleicht das ist was du suchst...

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $ver = "1.1.0"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $GUI = GUICreate("Meine GUI", 625, 445, 192, 124)

    [/autoit] [autoit][/autoit] [autoit]

    ; controls der Update Routine:

    [/autoit] [autoit][/autoit] [autoit]

    $ButtonJA = GUICtrlCreateButton("JA", 144, 304, 89, 33, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    $ButtonOK = GUICtrlCreateButton("OK", 144, 304, 89, 33, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    $ButtonNEIN = GUICtrlCreateButton("NEIN", 253, 304, 89, 33, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    $LabelUpdater = GUICtrlCreateLabel("Es wird nun auf Updates geprüft", 96, 80, 200, 50)

    [/autoit] [autoit][/autoit] [autoit]

    ; controls der normalen GUI:

    [/autoit] [autoit][/autoit] [autoit]

    $Button1 = GUICtrlCreateButton("Button1", 40, 56, 75, 25, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Button2 = GUICtrlCreateButton("Button2", 32, 184, 75, 25, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Button3 = GUICtrlCreateButton("Button3", 80, 224, 75, 25, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Button4 = GUICtrlCreateButton("Button4", 32, 112, 75, 25, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Button5 = GUICtrlCreateButton("Button5", 232, 264, 161, 49, $WS_GROUP)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Edit1 = GUICtrlCreateEdit("blahblahblah....", 176, 32, 305, 193)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Label1 = GUICtrlCreateLabel("bluberdiblub", 72, 360, 90, 20)
    GUICtrlSetState(-1,$GUI_HIDE)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    Sleep(5000) ; nur zu demozwecken um die Meldung lesen zu können....

    [/autoit] [autoit][/autoit] [autoit]

    if updatecheck() = -1 Then
    GUICtrlSetData($LabelUpdater, "Du benutzt bereits die neueste Version.")
    GUICtrlSetState($ButtonOK,$GUI_SHOW)
    Else
    GUICtrlSetData($LabelUpdater, "Es steht eine neue Version zur Verfügung. Soll diese installiert werden?")
    GUICtrlSetState($ButtonJA,$GUI_SHOW)
    GUICtrlSetState($ButtonNEIN,$GUI_SHOW)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $ButtonJA
    GUICtrlSetData($LabelUpdater,"Update wird jetzt heruntergeladen...")
    GUICtrlSetState($ButtonJA,$GUI_HIDE)
    GUICtrlSetState($ButtonNEIN,$GUI_HIDE)
    installupdate() ; lädt neue version herunter führt den installer aus und verlässt das programm...
    Case $ButtonNEIN, $ButtonOK
    ; alle controls der Update Routine unsichtbar machen:
    GUICtrlSetState($ButtonJA,$GUI_HIDE)
    GUICtrlSetState($ButtonNEIN,$GUI_HIDE)
    GUICtrlSetState($ButtonOK,$GUI_HIDE)
    GUICtrlSetState($LabelUpdater,$GUI_HIDE)
    ; alle controls der normalen GUI sichtbar machen:
    GUICtrlSetState($Button1,$GUI_SHOW)
    GUICtrlSetState($Button2,$GUI_SHOW)
    GUICtrlSetState($Button3,$GUI_SHOW)
    GUICtrlSetState($Button4,$GUI_SHOW)
    GUICtrlSetState($Button5,$GUI_SHOW)
    GUICtrlSetState($Edit1,$GUI_SHOW)
    GUICtrlSetState($Label1,$GUI_SHOW)
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func updatecheck()
    ;InetGet("http://test.de/test/update.txt", @Scriptdir & "\data\update.txt", 1, 0) ; auskommentiert zu demozwecken
    ;$file = FileOpen(@Scriptdir & "\data\update.txt", 0) ; auskommentiert zu demozwecken
    ;$line = FileReadLine($file, 1) ; auskommentiert zu demozwecken
    $line = "2.1.0" ; nur zu demozwecken, stattdessen einfach obige zeilen einkommentieren und diese hier entfernen
    If $line = $ver Then
    return -1 ; keine neue version vorhanden
    Else
    Return 1 ; neue version vorhanden
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func installupdate()
    ;InetGet("http://test.de/test/test.sfx.exe", @ScriptDir & "\test.sfx.exe", 1, 0); auskommentiert zu demozwecken
    ;Run(@ScriptDir & "\test.sfx.exe"); auskommentiert zu demozwecken
    Sleep(2000); nur zu demozwecken...
    Exit
    EndFunc

    [/autoit]
  • Zu deiner Variante muss ich sagen das sie für mich net in Frage, denn da kommt ja ein riesen Fenster was absolut kacke aussieht.

    Naja ein Blick in die Hilfe würde manchmal eben auch nicht schaden. Im Gegensatz zur Msgbox kann man bei SplashTextOn nämlich jedemenge am Aussehen verändern, wie Fenstergröße, Umrandung, Schriftart, Schriftgröße und Ausrichtung der Schrift.

  • Hallo ihr beiden,

    Schnitzel

    jop so ungefähr hatte ich mir das gedacht. ;)


    misterspeed

    vielden dank für diese super tolle Demo GUI! :thumbup:


    misterspeed zum zweiten

    jop habe im nachhinein auch nochmal nachgesehen, ich war nur so erschrocken 8| weil es extrem furchtbar aussah!
    Aber nichts desto trotz hat es mir nicht so gut gefallen wie die Label Variante!

    Naja ein Blick in die Hilfe würde manchmal eben auch nicht schaden. Im Gegensatz zur Msgbox kann man bei SplashTextOn nämlich jedemenge am Aussehen verändern, wie Fenstergröße, Umrandung, Schriftart, Schriftgröße und Ausrichtung der Schrift.

    Mfg Ghostleader