Manuel Installation abgebrochen exe Datei soll gelöscht werden

  • Ich möchte das wenn ich bei ner Auto Installation den download abbreche das die Exe datei gelöscht wird also nicht die Script exe
    sondern die zuvor aus dem Internt runtergeladene datei. Ich habe mir folgende überlegung gemacht.

    [autoit]

    If FileClose ($pad) Then
    FileDelete($pad)
    EndIf

    [/autoit]


    Es klappt aber irgendwie noch nicht ich habe auch versucht das EndIf ans ende des Skriptes zu setzen aber das geht auch nicht.

    Aber ich glaube das nochwas zu dem Befehl hinzu kommen muß er muß ja überprüfen währent der Installation ob manuell abgeprochen wird.
    Und wenn abgebrochen wird muß er die zeile mit dem If...Then anwenden oder sehe ich das falsch.


    Gruß der Bo

  • Ok das wusste ich nicht aber klappt irgendwie immer noch nicht also ich habe das If....Then

    Vorm Start der exe Datei gesetzt ist bestimmt an der falschen stelle.

    Hier mal das Skript

    Spoiler anzeigen
    [autoit]

    Dim $pad
    $pad = @HomeDrive & '\Nero-8.3.6.0_deu.exe'
    $Abbruch = @HomeDrive & '\Nero-8.3.6.0_deu.exe'

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

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

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

    ;Skript Start

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

    ;Herunterladen von Nero v8.3.6.0
    Break(0) ;Verhindert Unterbrechungen
    #include <Misc.au3> ;für _IsPressed
    $size = InetGetSize("http://ftp22.nero.com/Nero8/Nero-8.3.6.0_deu_update.exe") ;Jz ist $size = Größe der herunterzuladenen Datei
    InetGet("http://ftp22.nero.com/Nero8/Nero-8.3.6.0_deu_update.exe", $pad, 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($pad) ;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]

    ; löscht die heruntergeladene datei bei abbruch der Installation
    If $Abbruch = 1 Then
    ProcessClose($pad)
    FileDelete($pad)
    EndIf

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

    ;Setup starten
    run($pad)

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

    ;Nero Ask Toolbar (ohne Ask Toolbar)
    WinWaitActive("Nero Ask Toolbar", "Nero freut sich, Ihnen die kostenlose")
    ControlClick("Nero Ask Toolbar", "In&stallieren Sie Nero ohne die Ask Toolbar", "Button2")
    Sleep(500)
    send("{tab}")
    Sleep(500)
    send("{enter}")

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

    ;Nero 8 Trial - Installations-Assistent
    WinWaitActive("Nero 8 Trial - Installations-Assistent", "ACHTUNG: Dieses Programm ist durch internationale Gesetze")
    send("{enter}")

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

    ;Lizenzvereinbarung
    WinWaitActive("Nero 8 Trial - Installations-Assistent")
    Sleep(1000)
    ControlClick("Nero 8 Trial - Installations-Assistent", "", "Button5")
    ControlClick("Nero 8 Trial - Installations-Assistent", "", "Button1")

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

    ;Kundeninformationen
    WinWaitActive("Nero 8 Trial - Installations-Assistent")
    Sleep(3000)
    ControlSend("Nero 8 Trial - Installations-Assistent", "", "Edit3", "1K22-1867-0795-66M4-5375-9909-X2E7")
    Sleep(2000)
    ControlClick("Nero 8 Trial - Installations-Assistent", "&Weiter >", "Button1")
    ControlClick("Nero 8 Trial - Installations-Assistent", "&Weiter >", "Button1")

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

    ;Installationstyp
    WinWaitActive("Nero 8 Trial - Installations-Assistent")
    Sleep(1000)
    send("{enter}")

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

    ;Bereit zum Installieren des Programms
    Sleep(3000)
    send("{enter}")

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

    ;Programm Einstellungen

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

    ;1.Fotos alles abwählen
    WinWaitActive("Nero 8 Trial - Installations-Assistent", "Einstellungen")
    ControlClick("Nero 8 Trial - Installations-Assistent","Alle &entfernen","Button4")
    send("{tab 2}")
    send("{RIGHT}")

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

    ;2.Video alles abwählen
    Sleep(1000)
    ControlClick("Nero 8 Trial - Installations-Assistent","Alle &entfernen","Button4")
    send("{tab 2}")
    send("{RIGHT}")

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

    ;3.Musik alles abwählen
    Sleep(1000)
    ControlClick("Nero 8 Trial - Installations-Assistent","Alle &entfernen","Button4")
    send("{tab 2}")
    send("{RIGHT}")

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

    ;4. Optionen einstellen
    Sleep(1000)
    send("{tab 4}")
    send("{DOWN}")
    Sleep(1000)
    send("{SPACE}")
    Sleep(1000)
    send("{DOWN}")
    Sleep(1000)
    send("{SPACE}")
    Sleep(1000)
    send("{DOWN 2}")
    Sleep(1000)
    send("{SPACE}")
    Sleep(1000)
    send("{DOWN}")
    Sleep(1000)
    send("{SPACE}")
    Sleep(1000)
    send("{tab}")
    Sleep(1000)
    send("{enter}")

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

    ;Programm beenden
    WinWaitActive("Nero 8 Trial - Installations-Assistent")
    send("{enter}")

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

    ;Neros Programm zur Produktverbesserung
    WinWaitActive("Neros Programm zur Produktverbesserung")
    send("{enter}")

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

    ;Installer-Information (Windows wird nicht neu gestartet)
    WinWaitActive("Installer-Information")
    send("{RIGHT}")
    send("{enter}")

    [/autoit]
  • Das wird so nicht funktionieren!

    Wenn du wirklich mitten unter Installation abbrechen willst, dann mach dir einen HotKey zu einer Funktion, die den Prozess schließt, die Datei löscht und das Script beendet.

    [autoit]

    Func Abbruch()
    ProcessClose($pad)
    FileDelete($pad)
    Exit
    EndFunc

    [/autoit]
  • Also ist es nicht möglich das wenn jetzt jemand auf die Idee kommt die Installation ab zu brechen das die Datei nicht weg gelöscht werden kann.
    Also wenn er wie bei Nero z.B. auf Abbruch drückt.

    Ich kann es also nur über einen Hotkey z.B. ESC regeln das der User die Installation abbricht das Skript beendet und die datei löscht habe ich das richtig verstanden?

    Ich will ja in einen Anderen Thema versuchen ein ProgreesBar hin zu bekommen die mir den Installationsstatus an zeigt wenn das klappt kann ich in das Fenster ja ein Abbruch Button machen der die Aktion dann ausführt das währe dann kein Problem aber solange ich das noch nicht hin bekommen habe muß ich es vorher irgendwie anders hin bekommen.

  • ???

    erklär mal genauer wie der nutzer deine installation abbrechen können soll,

    denn ich sehe momentan nur die esc möglichkeit

    [autoit]

    InetGet('abort') ; Beendet den Download
    FileDelete($pad) ;Lösche die Datei

    [/autoit]
  • Du kannst ihn mit BlockInput daran hindern, dass er Eingaben machen kann. Wenn dann aber die Automatik nicht 100%ig funkt, dann kann man das Script nur noch über den Taskmanager beenden.
    Du kannst auch den WinWaitActive Befehlen ein Timeout verpassen, und bei Timeout die Datei löschen und das Script beenden.
    Oder du kannst vor jedem WinWaitActive diesen Code einfügen

    [autoit]

    If Not ProcessExists($pad) Then
    FileDelete($Exe)
    Exit
    EndIf

    [/autoit]

    btw: Du solltest für 'Nero-8.3.6.0_deu.exe' eine Variable vergeben, sonst funkts sowieso nicht (z.B. $Exe)

  • Das hört sich auch gut an was kann man damit machen mit Hiden.

    WEnn irgend jemanden in den sin kommen solle er möchte es doch nicht installieren möchte ich ihm ne möglichkeit einräumen das er abbrechen kann.

    Aber was meinst du mit Hidden

    EDIT: @ funkey ich habe der exe einer Variable zu geteilt

  • Also mit dem befehl winsetstate(@sw_Hide) klappt es gut ich muß es nur noch irgendwie verfeinern weil ab und an ganz kurz ein fenster auf blinkt aber es soll ja garnichts zu sehen sein

    Also ich habe das ganze per If....Then gemacht ist das richtig so?

    [autoit]

    WinWait("Nero Ask Toolbar", "")
    If WinActive("Nero Ask Toolbar", "") Then WinSetState("Nero Ask Toolbar", "", @SW_HIDE)
    WinWaitActive("Nero Ask Toolbar", "Nero freut sich, Ihnen die kostenlose")

    [/autoit]
  • nein,

    eher

    [autoit]

    if wingetstate("nero ask toolbar") <> @sw_hide then winsetstate("nero ask toolbar",@sw_hide)

    [/autoit]

    oder schieb das fenster komplett aus dem sichfeld

    [autoit]

    winmove("nero ask toolbar",-1000,-1000)

    [/autoit]
  • Ok ich werde es testen

    Wie gesagt ich bin noch nicht so bewandert aber mein gedanken gang war ja schon in der Art in ordnung.

    Aber das mit den Fenstern aus dem Sicht Feld nehmen hört sich auch gut an mal testen.

    Gruß

  • So ich habe es mal getestet. Mit Winmove geht es super die Installation wird weiter ausgeführt aber auch hier werden die Fenster ganz kurz
    angezeigt bevor sie sich verschieben. Und bei If wingetstart Stopt die Installation wenn er sie verschwinden lässt und in der Task leiste werden sie garnicht an gezeigt.

    Es muß doch machtbar sein die Installation so zu starten das nur noch ein Icon in der TasK leiste zu sehen ist.
    Da muß ich weiter überlegen.

  • Funktioniert leider auch nicht auch @SW_MINIMIZE nicht das ist wohl eher für ein Programm was startet aber nicht für ne Installation.

    Ich glaube dann muß ich damit leben das die Fenster mal kurz aufflackern.

    Wenn aber dennoch jemand ne Idee hat bitte hier rein schreiben.

    Gruß und danke azunai für die Hilfe

  • Ja lol das ist auch ne Idee muß ich mir mal überlegen ob ich das mache

    Aber mal ernst ich brauche dem Bild oder was auch immer nur sagen es soll OnTop sein dann dürfte man es nicht sehen

    Ne gute Idee