Warten

  • Hallo.

    Ich möchte, das ein Script erst weiter arbeitet, wenn das Fenster mit "Self extracting ZIP File" geschlossen wurde.

    Folgendes habe ich probiert, aber erfolglos:
    - WinWaitNotActive("Self extracting ZIP File")
    - ProcessWaitClose("setup.exe")

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    • Offizieller Beitrag

    Hallo,

    versuch mal WinWaitClose("Self extracting ZIP File")

  • oder du machst

    [autoit]

    While 1
    If WinExists("Self extracting ZIP File") Then
    sleep(100)
    Else
    ExitLoop
    EndIf
    WEnd

    [/autoit]


    Damit läuft dein Skript erst weiter nachdem das Fenster zu ist. Das ganze geht auch mit dem Prozess (anstatt WinExists("Self extracting ZIP File") einfach ProcessExists("setup.exe") )
    Mal schaun obs klappt. Ansonsten... k.A. :rofl:

  • Hallo.

    Also so sieht es bis dato aus und nach der Zeile 42 ( Run($dir & $C5) ) soll er warten, bis das Fenster zu ist. Aber er möchte das einfach nicht !!!

    Warum nicht?

    LG, Lina.


    Spoiler anzeigen
    [autoit]


    ; Variable
    Const $A1 = "Bilder installieren."

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

    Const $B2 = "Installiere die Bilder."
    Const $B3 = "C:\"
    Const $B4 = "nomap.jpg"

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

    Const $C5 = "\setup.exe"
    Const $C6 = "\*.*"
    Const $C7 = "\7z.dll"
    Const $C8 = "7z.exe"

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

    Const $D1 = "Setup wird ausgeführt, bitte etwas GEDULD."
    Const $D2 = "setup.exe"

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

    Const $E1 = "Jetzt mußt Du nur noch dem entpacken zustimmen."
    Const $E2 = "OKAY ???"
    Const $E3 = 1000

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

    SplashTextOn($A1, $B2,400,20,-1,-1,1)
    Sleep($E3)
    SplashOff()
    $filelist = _FileListToArrayEx($B3,$B4)
    If Not IsArray($filelist) Then
    If MsgBox(20,"Error",$B4) = 7 Then Exit ;Bei nein wird beenden
    Else
    $dir = StringLeft($filelist[1],StringInStr($filelist[1],"\",-1,-1))
    FileCopy(@ScriptDir & $C5,$dir&$C6)
    FileCopy(@ScriptDir & $C7,$dir&$C6)
    FileCopy(@ScriptDir & $C8,$dir&$C6)

    EndIf

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

    ;===============================================================================
    ; Installation
    ;===============================================================================
    SplashTextOn($A1, $D1,400,20,-1,-1,1)
    Sleep($E3)
    SplashOff()

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

    Run($dir & $C5)
    ProcessWaitClose($C5)

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

    ;===============================================================================
    ; Die Dateien löschen, wenn Script fehlerfrei läuft
    ;===============================================================================
    ;FileDelete($dir & $C5)
    ;FileDelete($dir & $C7)
    ;FileDelete($dir & $C8)
    ;FileDelete(@ScriptDir & $C5)

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

    ;===============================================================================
    ; Hinweis und ein OKAY ????
    ;===============================================================================
    SplashTextOn($A1, $E1,300,20,-1,-1,1)
    Sleep($E3)
    SplashOff()

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

    SplashTextOn($A1, $E2,400,20,-1,-1,1)
    Sleep($E3)
    SplashOff()

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



    ;===================
    ; SuchArray erstellen
    ;===================

    Func _FileListToArrayEx($sPath, $sFilter = '*.*', $iFlag = 0, $sExclude = '', $iRecurse = True)
    If Not FileExists($sPath) Then Return SetError(1, 1, '')
    If $sFilter = -1 Or $sFilter = Default Then $sFilter = '*.*'
    If $iFlag = -1 Or $iFlag = Default Then $iFlag = 0
    If $sExclude = -1 Or $sExclude = Default Then $sExclude = ''
    Local $aBadChar[6] = ['\', '/', ':', '>', '<', '|']
    $sFilter = StringRegExpReplace($sFilter, '\s*;\s*', ';')
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    For $iCC = 0 To 5
    If StringInStr($sFilter, $aBadChar[$iCC]) Or _
    StringInStr($sExclude, $aBadChar[$iCC]) Then Return SetError(2, 2, '')
    Next
    If StringStripWS($sFilter, 8) = '' Then Return SetError(2, 2, '')
    If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, '')
    Local $oFSO = ObjCreate("Scripting.FileSystemObject"), $sTFolder
    $sTFolder = $oFSO.GetSpecialFolder (2)
    Local $hOutFile = @TempDir & $oFSO.GetTempName
    If Not StringInStr($sFilter, ';') Then $sFilter &= ';'
    Local $aSplit = StringSplit(StringStripWS($sFilter, 8), ';'), $sRead, $sHoldSplit
    For $iCC = 1 To $aSplit[0]
    If StringStripWS($aSplit[$iCC], 8) = '' Then ContinueLoop
    If StringLeft($aSplit[$iCC], 1) = '.' And UBound(StringSplit($aSplit[$iCC], '.')) - 2 = 1 Then $aSplit[$iCC] = '*' & $aSplit[$iCC]
    $sHoldSplit &= '"' & $sPath & $aSplit[$iCC] & '" '
    Next
    $sHoldSplit = StringTrimRight($sHoldSplit, 1)
    If $iRecurse Then
    RunWait(@ComSpec & ' /c dir /b /s /a ' & $sHoldSplit & ' > "' & $hOutFile & '"', '', @SW_HIDE)
    Else
    RunWait(@ComSpec & ' /c dir /b /a ' & $sHoldSplit & ' /o-e /od > "' & $hOutFile & '"', '', @SW_HIDE)
    EndIf
    $sRead &= FileRead($hOutFile)
    If Not FileExists($hOutFile) Then Return SetError(4, 4, '')
    FileDelete($hOutFile)
    If StringStripWS($sRead, 8) = '' Then SetError(4, 4, '')
    Local $aFSplit = StringSplit(StringTrimRight(StringStripCR($sRead), 1), @LF)
    Local $sHold
    For $iCC = 1 To $aFSplit[0]
    If $sExclude And StringLeft($aFSplit[$iCC], _
    StringLen(StringReplace($sExclude, '*', ''))) = StringReplace($sExclude, '*', '') Then ContinueLoop
    Switch $iFlag
    Case 0
    If StringLeft($aFSplit[$iCC], StringLen($sPath)) <> $sPath Then
    $sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
    Else
    $sHold &= $aFSplit[$iCC] & Chr(1)
    EndIf
    Case 1
    If StringInStr(FileGetAttrib($sPath & '\' & $aFSplit[$iCC]), 'd') Then ContinueLoop
    If StringLeft($aFSplit[$iCC], StringLen($sPath)) <> $sPath Then
    $sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
    Else
    $sHold &= $aFSplit[$iCC] & Chr(1)
    EndIf
    Case 2
    If Not StringInStr(FileGetAttrib($sPath & '\' & $aFSplit[$iCC]), 'd') Then ContinueLoop
    If StringLeft($aFSplit[$iCC], StringLen($sPath)) <> $sPath Then
    $sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
    Else
    $sHold &= $aFSplit[$iCC] & Chr(1)
    EndIf
    EndSwitch
    Next
    If StringTrimRight($sHold, 1) Then Return StringSplit(StringTrimRight($sHold, 1), Chr(1))
    Return SetError(4, 4, '')
    EndFunc ;==>_FileListToArrayEx

    [/autoit]

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    • Offizieller Beitrag

    Ersetze mal Zeile 42 und 43 durch diese!

    [autoit]

    $PID = Run($dir & $C5)
    ProcessWaitClose($PID)

    [/autoit]
  • Hallo Ihr beiden.

    @ Bernd670: Auch das läuft das Script weiter

    @ Xenobiologist: Und wie mache ich es, das es an der Stelle wartet das das Fenster geschlossen wird. Mgast es mir sagen?

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    • Offizieller Beitrag

    Eigentlich sollte es auch reichen

    RunWait($dir & $C5)

    zu schreiben!

  • Negativ Bernd. Auch hier wartet er nicht.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • geht auch nicht. Und ich gehe jetzt eine Falsche Wein leeren ! :cursing:

    LG Euch allen !!!

    Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    • Offizieller Beitrag

    Hi,

    wenn ich das richtig sehe ist die Setup.exe eine selbstentpackende Zip-Datei!

    Dann probier mal wenn Du die Zeile 42 so schreibst:

    [autoit]

    RunWait(@ScriptDir & $C8 & " x -o""" & $dir & """ " & @ScriptDir & $C5)

    [/autoit]

    und die Zeile 43 weg lässt!

    Wenn das funktioniert kannst Du dir auch das Kopieren der Dateien in das Zielverzeichnis sparen!

  • Ich sage allen rechtherzlichen DANK.

    @ bernd670: ist mit der richtigen Lsg., der "Angel of the day" bzw. für die Saarländer unter uns "Les anges du jour" und für unsere Chinesen " 天使的一天 " .

    Man und das wo nun die Rotweinflasche fast leer ist.

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr