Installation im Hintergrund mit Status Anzeige der installation über eine Progreesbar

  • Ja Hallo erstmal ich bin es schon wieder

    Ich hätte da noch nen kleines anliegen. Also es geht darum ich habe jetzt ein voll Funktionstüchtige Automatische installation es wird die Datei ausm internet geladen, mit Status anzeige und nach dem Installieren wird die Datei wieder gelöscht. Läuft alles bestens

    Hier mal das Skript:

    Spoiler anzeigen
    [autoit]

    ;|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    ;| Installation von: nLite-1.4.8
    ;|
    ;| Autor: bo2221
    ;|
    ;| Getestet mit: Windows XP
    ;|_______________________________________________________________________________________

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

    ; Programm Installieren JA/NEIN
    If MsgBox(32+4, "nLite-1.4.8 Installation", "Wollen sie wirklich nLite-1.4.8 auf ihrem Rechner installieren?") = 7 Then Exit

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

    ;Skript Start

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

    ;Herunterladen von nLite-1.4.8
    Break(0) ;Verhindert Unterbrechungen
    #include <Misc.au3> ;für _IsPressed
    $size = InetGetSize("http://www.filehippo.com/download/file/8dd49141ac89c1faf4d4cf0465da8b30264cda60d8995f6f580141896f40b2c3/nLite-1.4.8.installer.exe") ;Jz ist $size = Größe der herunterzuladenen Datei
    InetGet("http://www.filehippo.com/download/file/8dd49141ac89c1faf4d4cf0465da8b30264cda60d8995f6f580141896f40b2c3/nLite-1.4.8.installer.exe", @HomeDrive & '\nLite-1.4.8.exe', 1, 1)
    While @InetGetActive
    TrayTip("Downloading.... (Abbruch mit ESC)", " Es sind schon " & Round( (@InetGetBytesRead/$size)*100) & '% geladen!', 10, 1)
    ;TrayTip( 'Titel', 'Textstück 1' & 'Textstück 2' & '......' & Runde( gelandene Bytes geteilt durch Gesamtanzahl an Bytes mal 100, auf 2 Dezimalstellen ) & ' %', 10, 1 = Info-Icon, 2 = Achtung-Icon, 3 = Error-Icon )
    If _IsPressed('1B') Then ;Wenn ESC gedrückt wurde
    If MsgBox(32 + 4, 'Bestätigen', 'Möchten Sie den Download wirklich abbrechen ?') = 6 Then ;Anfang der If-Klausel
    InetGet('abort') ; Beendet den Download
    FileDelete( @HomeDrive & '\nLite-1.4.8.exe') ;Lösche die Datei
    Exit ; Beendet
    EndIf ;Ende der If-Klausel
    EndIf
    Sleep(100)
    WEnd

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

    Opt("TrayIconHide", 1) ;Läßt das Try-Icon verschwinden

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

    ;Setup starten
    run( @HomeDrive & '\nLite-1.4.8.exe')

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

    ;Select Setup Language
    WinWaitActive("Select Setup Language", "Select the language to use during the installation:")
    send("{up}")
    send("{enter 2}")

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

    ;Willkommens Fenster
    WinWaitActive("Setup - nLite")
    send("{enter}")

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

    ;Lizenzvereinbarung
    WinWaitActive("Setup - nLite", "Lesen Sie bitte die folgenden Lizenzvereinbarungen")
    controlclick("Setup - nLite", "Ich &akzeptiere die Vereinbarung", "TNewRadioButton1")
    send("{enter}")

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

    ;Ziel-Ordner wählen
    WinWaitActive("Setup - nLite")
    send("{enter}")

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

    ;Komponenten auswählen
    WinWaitActive("Setup - nLite")
    send("{enter}")

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

    ;Zusätzliche Aufgaben auswählen (mit Desktop-Symbol)
    WinWaitActive("Setup - nLite")
    send("{enter}")

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

    ;Installation beendet
    WinWaitActive("Setup - nLite", "Das Setup hat die Installation von nLite auf Ihrem Computer abgeschlossen")
    send("{enter}")
    If MsgBox( 64, 'Die Installation von nLite-1.4.8 ist beendet', 'Drücken sie auf OK, um die Installation abzuschließen und die heruntergeladene Datei zu löschen!' ) = 1 Then ;Anfang der If-Klausel
    InetGet( 'abort' ) ; Beende den Download
    FileDelete( 'C:\nLite-1.4.8.exe' ) ;Lösche die Datei
    Exit ; Beendet
    EndIf

    [/autoit]

    Jetzt ist mir aber noch was eingefallen was noch dazu könnte und ich wollte wissen ob sowas machtbar ist ich glaube aber mal schon.

    Ich hätte gerne das die ganze Installation im Hintergrund ab läuft ohne das irgendwelche Fenster wechseln ohne Ablage eines Fensters im Task nur das man in einem TrayTip den Status in % der Installation sehen kann und die Installation gegebenfalls mit ESC abbrechen kann.

    Ich möchte das gerne mit euch zusammen erarbeiten wenn sowas möglich ist wenn mir da jemand unter die arme greifen könnte.

    Gruß der Bo

    2 Mal editiert, zuletzt von bo2221 (2. September 2008 um 15:25)

  • weiß den keiner eine möglichkeit?

    Ich will es ja nicht vorgesetzt bekommen ich möchte es mit jemanden zusammen erarbeiten und brauche eure Hilfe.

    Gruß der Bo

  • Der erste Schritt zur Lösung wäre es, die Werbung für Interpreten zu Recht indizierter Propaganda-Machwerke zu der Signatur zu entfernen.

  • So ich habe da mal 2 Skripte hier gefunden die mich vieleicht weiter bringen könnten

    einmal dieser den habe ich schon ein bischen abgewandelt

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=progressEx.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Run_After=C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\ResHacker.exe -add %out%, %out%, 1.bmp, bitmap, 1, 1031
    #AutoIt3Wrapper_Run_After=C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\ResHacker.exe -add %out%, %out%, 2.bmp, bitmap, 2, 1031
    #AutoIt3Wrapper_Run_After=C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\ResHacker.exe -add %out%, %out%, 3.bmp, bitmap, 3, 1031
    #AutoIt3Wrapper_Run_After=C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\ResHacker.exe -add %out%, %out%, 4.bmp, bitmap, 4, 1031
    #AutoIt3Wrapper_Run_After=C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\ResHacker.exe -add %out%, %out%, 5.bmp, bitmap, 5, 1031
    #AutoIt3Wrapper_Run_After=C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\ResHacker.exe -add %out%, %out%, 6.bmp, bitmap, 6, 1031
    #AutoIt3Wrapper_Run_After=C:\Programme\AutoIt3\Aut2Exe\upx.exe --best --compress-resources=1 "%out%"
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;========================================================================================
    ;
    ; ProgressBar.au3
    ;
    ; Create Progressbar with Bitmaps.
    ;
    ; Author: Greenhorn
    ;
    ;
    ;========================================================================================

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

    #include-once
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>

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

    Opt('OnExitFunc', 'Terminate')

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

    Global Const $NULL = Ptr(0)
    Global Const $SS_CENTER = 1
    Global Const $SS_NOTIFY = 0x0100
    Global Const $LR_LOADFROMFILE = 16
    Global Const $STM_SETIMAGE = 0x0172
    Global Const $IMAGE_BITMAP = 0
    Global $gdi32dll = DllOpen('gdi32.dll')
    Global $user32dll = DllOpen('user32.dll')
    Global $kernel32dll = DllOpen('kernel32.dll')
    Global $hBitmap[7]

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

    $hInst = GetModuleHandle()

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

    ; Bitmaps laden.
    For $i = 1 To 6

    ; to work with resources use LoadImage like in the line below
    ; and correct the pathes in #AutoIt3Wrapper_Run_After.
    ; $hBitmap[$i] = LoadImage($hInst, $i, $IMAGE_BITMAP)

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

    ; to work with Bitmaps on Harddisk take this line
    $hBitmap[$i] = LoadImage($NULL, String($i) & '.bmp', $IMAGE_BITMAP, 0, 0, $LR_LOADFROMFILE)

    Next

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

    ; Testfenster erstellen.
    $hWnd = GUICreate('Installation Demo', 500, 300, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
    GUISetBkColor(0xFFFFFF)
    GUISetFont(10, 800, 0, 'SegoeUI')

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

    GUICtrlCreateLabel('Das Programm wird Installiert! Haben sie ein wenig Gedult.', 0, 80, 500, 20, $SS_CENTER)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 12, 800, 0, 'SegoeUI')

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

    $aProgressBar1 = ProgressBarCreate(100, 150, 300, $hWnd)

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

    ProgressBarSetState($aProgressBar1)
    GUISetState(@SW_SHOW, $hWnd)

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

    Sleep(1500)
    TestProgress($aProgressBar1)

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

    ;Sleep(1500)
    ;ProgressBarDelete($aProgressBar1)

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

    While True

    Switch GUIGetMsg()
    Case -3
    Exit
    EndSwitch

    WEnd

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

    Func TestProgress($aProgress)

    For $i = 1 To 100
    ProgressBarSetData($aProgress, $i)
    Sleep(20)
    Next

    EndFunc

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

    Func ProgressBarCreate($x, $y, $iWidth, $hWndParent = 0)

    Local $dwExStyleCtrl, $aProgress[2][$iWidth + 1]
    $aProgress[1][0] = $iWidth

    If Not $hWndParent Or $hWndParent = 0 Then
    $aProgress[0][0] = GUICreate('ProgressBar', $iWidth, 15, $x, $y, BitOR($WS_CLIPCHILDREN, $WS_CLIPSIBLINGS, $WS_POPUP), $WS_EX_LAYERED)
    $dwExStyleCtrl = BitOr($WS_EX_LAYERED,$GUI_WS_EX_PARENTDRAG)
    Else
    $aProgress[0][0] = GUICreate('ProgressBar', $iWidth, 15, $x, $y, BitOR($WS_DISABLED, $WS_CLIPCHILDREN, $WS_CLIPSIBLINGS, $WS_POPUP), BitOr($WS_EX_LAYERED, $WS_EX_MDICHILD), $hWndParent)
    EndIf

    $aProgress[1][1] = GUICtrlCreatePic('', 0, 0, 2, 15, BitOR($WS_CLIPSIBLINGS, $SS_NOTIFY,$WS_GROUP), $dwExStyleCtrl)
    GUICtrlSetState(-1, $GUI_ONTOP)
    GUICtrlSendMsg($aProgress[1][1], $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap[1])

    For $i = 2 To $iWidth - 2
    $aProgress[1][$i] = GUICtrlCreatePic('', $i, 0, 1, 15, BitOR($WS_CLIPSIBLINGS, $SS_NOTIFY, $WS_CHILD), $dwExStyleCtrl)
    GUICtrlSetState(-1, $GUI_ONTOP)
    GUICtrlSendMsg($aProgress[1][$i], $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap[3])
    Next

    $aProgress[1][$iWidth] = GUICtrlCreatePic('', $iWidth - 2, 0, 2, 15, BitOR($WS_CLIPSIBLINGS, $SS_NOTIFY,$WS_GROUP), $dwExStyleCtrl)
    GUICtrlSetState(-1, $GUI_ONTOP)
    GUICtrlSendMsg($aProgress[1][$iWidth], $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap[2])

    $aProgress[0][1] = GUICtrlCreateLabel('', ($iWidth / 2) -15, 0, 40, 15, BitOR($SS_CENTER , $WS_CHILD), $dwExStyleCtrl)
    GUICtrlSetColor(-1,0x424242)
    GUICtrlSetFont(-1, 8.5, 800, 0, 'SegoeUI')
    If Not $hWndParent Then GUICtrlSetTip(-1, "Drag me, please ... wink.gif ")

    Return $aProgress

    EndFunc

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

    Func ProgressBarSetData($aProgress, $iPercent)

    $iSize = ($aProgress[1][0] / 100)
    $cxEnd = $iSize * $iPercent
    $cxStart = $cxEnd - ($iSize)

    ProgressBarSetText($aProgress, $iPercent & ' %')

    For $i = Int($cxStart) To Int($cxEnd)
    If $i = 1 Then
    GUICtrlSendMsg($aProgress[1][1], $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap[5])
    ElseIf $iPercent = 100 And $i = Int($cxEnd) Then
    GUICtrlSendMsg($aProgress[1][$aProgress[1][0]], $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap[6])
    Else
    GUICtrlSendMsg($aProgress[1][$i], $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap[4])
    EndIf
    Next

    EndFunc

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

    Func ProgressBarSetState($aProgress, $State = @SW_SHOW)

    GUISetState($State, $aProgress[0][0])

    GUICtrlSetBkColor($aProgress[0][1], $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetData($aProgress[0][1], '0 %')
    GUICtrlSetState($aProgress[0][1], $GUI_ONTOP)

    EndFunc

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

    Func ProgressBarDelete($aProgress)

    If $aProgress[0][0] Then
    GUIDelete($aProgress[0][0])
    Else
    For $i = 1 To $aProgress[1][0]
    GUICtrlSendMsg($aProgress[1][$i], $WM_CLOSE, 0, 0)
    Next
    EndIf

    EndFunc

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

    Func ProgressBarSetText($aProgress, $sText)

    GUICtrlSetState($aProgress[0][1], $GUI_HIDE)
    GUICtrlSetData($aProgress[0][1], $sText)
    GUICtrlSetState($aProgress[0][1], $GUI_SHOW)
    GUICtrlSetState($aProgress[0][1], $GUI_ONTOP)

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

    EndFunc

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

    Func LoadImage($hInstance, $lpszName, $uType, $cxDesired = 0, $cyDesired = 0, $fuLoad = 0)

    If IsNumber($lpszName) Then $lpszName = MAKEINTRESOURCE($lpszName)
    Local $aResult = DllCall($user32dll, 'hwnd', 'LoadImage', _
    'ptr', $hInstance, _
    'str', $lpszName, _
    'uint', $uType, _
    'int', $cxDesired, _
    'int', $cyDesired, _
    'uint', $fuLoad)
    Return $aResult[0]

    EndFunc

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

    Func GetModuleHandle($sModule = '')

    Local $aResult = DllCall($kernel32dll, 'hwnd', 'GetModuleHandle', 'ptr', StringLeft($sModule, 4095) & Chr(0))

    Return $aResult[0]

    EndFunc

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

    Func DeleteObject($hObject)

    Local $aResult = DllCall($gdi32dll, 'int', 'DeleteObject', 'hwnd', $hObject)
    Return $aResult[0]

    EndFunc

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

    Func MAKEINTRESOURCE($lID)

    Return "#" & String(Int($lID))

    EndFunc

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

    Func Terminate()

    For $i = 1 To 6

    DeleteObject($hBitmap[$i])

    Next

    DllClose($gdi32dll)
    DllClose($user32dll)
    DllClose($kernel32dll)

    EndFunc

    [/autoit]


    Und diesen

    Progressbar mit GDIplus

    Beim 2 Skript gefällt mir die erste Progressbar sehr die würde ich gerne im ersten Skript drin haben und noch nen Butten zum abbrechen der ganzen Installation. Vielleicht noch nen schönes Hintergrundbild oder so aber ich weiß absolut nicht wie ich das bewerkstelligen soll

    Kann mir bitte einer Helfen

  • Ich bin immer noch dran und ich hoffe es kann sich einer erbarmen und mir weiter Helfen

    Ich habe jetzt was gefunden was annähernd so ist nur das bei diesem Script mehrere setups abgefragt werden und dann als Progressbar ausgegeben weden es muß doch möglcih sein sowas in der art mir nur einer installation so wie man in diesem Skript Punkte setzt damit der Balken laufen kann bis zur komplet installation sowas muß es doch geben wenn jemand ne Idee hat immer her damit ich zerbreche mir son noch meinen Kopf.

    Und hier mal der Script wenn das jemanden weiter Hilft

    Spoiler anzeigen
    [autoit]

    Global $Anzahl = 7
    Global $Fortschritt = 0
    Global $Periode = 100 / $Anzahl

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

    Func _progresshoch($Bezeichnung)
    $Fortschritt = $Fortschritt + $Periode
    ProgressSet($Fortschritt, $Bezeichnung)
    EndFunc

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

    ProgressOn("Progress Meter", "Increments every second", "0 percent")

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

    RunWait("autoit-v3.2.12.1.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    RunWait("Firefox Setup 3.0.1.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    RunWait("maketorrent-2.1.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    RunWait("Firefox Setup 3.0.1.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    RunWait("MozBackup-1.4.8-DE.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    RunWait("nLite-1.4.9.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    RunWait("Skype 3.8.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    sleep(2500)

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

    ProgressOff ( )

    [/autoit]
  • Schade aber es hat mir leider immer noch keiner geantwortet.

    Also ich hätte da vieleicht noch ne möglichkeit. Also ich habe da nen Skript gefunden der eine ProgressBar auf ruft und der Balcken
    bewegt sich von 0 bis 100%. Er bewegt sich dadurch das man ihm z.B. 10 Programme starten läßt nach jedem Programm geht er einen
    schritt weiter. Da müßte man ihm doch irgendwie sagen können in der Zeile wo er gerade im Skript ist soll er weiter wandern da muß es doch was geben.

    Hier mal das Skript

    Spoiler anzeigen
    [autoit]

    Global $Anzahl = 7
    Global $Fortschritt = 0
    Global $Periode = 100 / $Anzahl

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

    Func _progresshoch($Bezeichnung)
    $Fortschritt = $Fortschritt + $Periode
    ProgressSet($Fortschritt, $Bezeichnung)
    EndFunc

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

    ProgressOn("Progress Meter", "Increments every second", "0 percent")

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

    RunWait("autoit-v3.2.12.1.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    RunWait("Firefox Setup 3.0.1.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    RunWait("maketorrent-2.1.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    RunWait("Firefox Setup 3.0.1.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    RunWait("MozBackup-1.4.8-DE.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    RunWait("nLite-1.4.9.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    RunWait("Skype 3.8.exe")
    _progresshoch($Fortschritt + $Periode & " percent")

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

    sleep(2500)

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

    ProgressOff ( )

    [/autoit]


    Und ich habe da noch ein kleines Skript vieleicht kann man damit was machen

    Spoiler anzeigen
    [autoit]

    ProgressOn("Fortschritt", " Es wird nLite-1.4.9 installiert", "Start", Default, Default, 1)
    For $i = 0 to 100 step 10
    sleep(1000)
    ProgressSet( $i, $i & " Prozent")
    Next
    ProgressSet(100 , "Fertig", "Komplett")
    Sleep(2000)
    ProgressOff()

    [/autoit]


    Bitte Helft mir ich bin echt am verzweifeln


    Gruß der Bo

  • Aha gibt es den solche schalte für andere Installationen auch und wie wende ich diesen schalter an?