Mit autoit Origramminstallationen Automatisieren

  • Hallo an euch alle :)

    ich habe mal eine Frage :)
    ich bin letztens über autoit gestolpert als ich nach einer möglichkeit gesucht habe Programminstallationen zu automatisieren und somit eine Stressfreie installation zu erschaffen....
    doch ich habe ein Problem... wie mache ich das? womit fange ich am besten an? wie umgehe ich variable fenster die evtl kommen wenn WIndows z.B.aus langeweile sagt, "der ornder ist nicht vorhanden soll er erstellt werden" ... ?

    ist sowas einfach zu bewerkställigen oder soll ichs lieber sein lassen?

    MFG: Blacky911 :)

    Kleiner AutoIt Lehrling :)

  • Hallo Blacky911 und willkommen im Forum,

    Zitat

    ist sowas einfach zu bewerkställigen oder soll ichs lieber sein lassen?


    das mit dem einfach ist natürlich so eine Sache ....

    Ich glaube, dass es z.Zt keine bessere, flexiblere, umfangreichere und leichter zu erlernende Scriptsprache gibt als AutoIt.
    (war ein bisschen viel auf einmal, aber wenn's stimmt :D )

    Schau Dir mal in der deutschen Hilfe (findest Du im Forum auf der linken Seite im Kästchen AutoIt Downloads)
    das Tutorial zu WinZip Installation an.

    Das mit den "wechselnden" Fenstern ist kein Problem, wenn Dein Script mal so weit ist, dann stell es einfach in's Forum und Du erhälst sicher in kürzester Zeit kompetente Antwort und Hilfestellung.

    ALSO: Nicht schon vor dem Start verzagen und VIEL SPASS :rock:

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Ja ich habe ja schonmal angefangen hier z.B. der anfang des scripts für eine installation von dem Programm "Everest Ultimate"

    [autoit]

    ; Script Start - Add your code below here

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

    AutoItSetOption("MouseCoordMode", 0)
    BlockInput (1)
    Run ("everestultimate420.exe")
    winwait ("Setup-Sprache auswählen")
    Sleep (1000)
    WinSetOnTop ( "Setup-Sprache auswählen", "OK", 1 )
    send ("{TAB 3}")
    sleep (1000)
    send ("de")
    Sleep (1000)
    send ("{ENTER 1}")
    ;Sprache ausgewählt
    winwait ("Setup - EVEREST Ultimate Edition")
    Sleep (1000)
    send ("{ENTER 1}")
    ;Menu step 1
    winwait ("Setup - EVEREST Ultimate Edition")
    Sleep (1000)
    send ("{TAB 5}")
    Sleep (100)
    send ("{UP 1}")
    Sleep (100)
    send ("{ENTER 1}")
    sleep (1000)
    ;lizenz zugestimmt
    winwait ("Setup - EVEREST Ultimate Edition")
    send ("{ENTER 2}")
    sleep (500)
    ;Ordnerstelle
    winwait ("Setup - EVEREST Ultimate Edition")
    send ("{ENTER 1}")
    sleep (1000)
    ;startmenueintrag ja/nein
    winwait ("Setup - EVEREST Ultimate Edition")
    send ("{ENTER 1}")
    sleep (1000)
    ; Icons
    winwait ("Setup - EVEREST Ultimate Edition")

    [/autoit]

    da kommt dann meine 1. Schwierigkeit... da sind 2 Checkboxes die geprüft werden sollen, und dann nur bei ienem der beiden soll ein Häckchen sein...

    danach kommt dann die installation selber an sich wie kann ich das dann so machen das der so lange wartet bis der fertig ist is ja je nach PC abhängig...

    hoffe ich hab nicht komplett falsch angefangen
    MFG: Blacky911

    Kleiner AutoIt Lehrling :)

  • ist doch schon eine feine Sache :-),

    Zitat

    da kommt dann meine 1. Schwierigkeit... da sind 2 Checkboxes die geprüft werden sollen, und dann nur bei ienem der beiden soll ein Häckchen sein...


    da empfehle ich Dir das Tool AutoIt Info Window. Wurde bei der AutoIt-Installation mit installiert . Findest Du im AutoIt Ordner.
    Damit kannst Du einzelne Controls herausfinden, die Du dann "bedienen" kannst etwa mit send, oder z.B. ControlSend. (einfach mal in der Hilfe nachlesen)

    Zitat

    danach kommt dann die installation selber an sich wie kann ich das dann so machen das der so lange wartet bis der fertig ist is ja je nach PC abhängig...


    i.d.R. kommt nach Abschluß der Installation ein Bestätigungsfenster der Installation.
    Setze in Deinem Script nach allen Eingaben einfach den Befehl WinWait(Fenstertitel,...).
    Dann wartet Dein Script, bis eben dieses Fenster erscheint.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Also erstmal ein Tipp: Benutze das AutoIt-InfoTool, und mache dann ControlClicks (s. Hilfe: ControlClick) Das ist einfacher :D

    Dann zu den Dingen: Du kannst den Progress auslesen! Hier ein Beispiel-Code:

    [autoit]

    $ProgressHandle = ControlGetHandle($win, "Fenstertitel", 1021) ; Handle zur Progressbar (ID: 1021) des Fensters "Fenstertitel" holen
    $LowLimit = _SendMessage($ProgressHandle, $PBM_GETRANGE, True) ; Den geringsten Wert holen
    $HighLimit = _SendMessage($ProgressHandle, $PBM_GETRANGE, False) ; Den höchsten Wert holen

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

    Do
    $progressbarPOS = _SendMessage($ProgressHandle, $PBM_GETPOS) ; mit dem Handle kann dann mit _SendMessage die Position abgefragt werden.
    $prozent = ($progressbarPOS - $LowLimit) / ($HighLimit - $LowLimit) * 100 ; Die aktuelle Prozentzahl ermitteln
    GUICtrlSetData($Progress, $prozent) ; und auf einem Progress in der GUI anwenden
    Sleep(100) ; Damit die CPU-Last nicht = 100 wird :D
    Until $prozent = 100 ; warten bis = 100%

    [/autoit]

    Hoffe das war jetzt nicht zu verwirrend.... Falls du Fragen dazu hast, schieß los! :D

    Edit: Mist, zu langsam :D

  • Meine frage:

    was hast du da gemacht??????
    da blick ich ma gar nciht durch ...

    also ... nach der installation kommt leider kein Bestätigungs fenster sondern nur wieder ein fenster mit dem gleichen namen wie das installations fesnter sozusagen ein weiteres fenster....

    das ist ja eines der probleme...
    und wie umgeht mann den solche evtl anfallenden Fragen von windows die je nach BS anders sind/ gar nciht kommen?

    MFG: Blacky911

    Kleiner AutoIt Lehrling :)

  • Zitat

    also ... nach der installation kommt leider kein Bestätigungs fenster sondern nur wieder ein fenster mit dem gleichen namen wie das installations fesnter sozusagen ein weiteres fenster....

    da steht aber sicher ein anderer Text drin, den man zum Erkennen heranziehen kann mit WinWait("","text")


    Solltest Du wirklich unterschiedliche Abfragen bei verschiedenen Windows-Versionen haben,
    dann musst Du vor Start Deiner Installation eine Selektion einbauen mit der Abfrage des BS.

    --> siehe dazu Hilfe: @OSVersion
    einfach ausgedrückt machst Du Dir eine Abfrage:

    Spoiler anzeigen
    [autoit]

    Switch @OSVersion
    Case "WIN_2008"

    Case "WIN_VISTA"

    Case "WIN_2003"

    Case "WIN_XP"

    Case "WIN_2000"

    Case "WIN_NT4"

    Case "WIN_ME"

    Case "WIN_98"

    Case "WIN_95"

    EndSwitch

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Also ich mach einfach mal jetzt nur erstmal die standart installation obs abweichungen wirklich gibt werd ich ja sehen :D

    also bis dahin bin ich jetzt:

    [autoit]

    ; Script Start - Add your code below here

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

    AutoItSetOption("MouseCoordMode", 0)
    BlockInput (1)
    Run ("everestultimate420.exe")
    winwait ("Setup-Sprache auswählen")
    Sleep (1000)
    WinSetOnTop ( "Setup-Sprache auswählen", "OK", 1 )
    send ("{TAB 3}")
    sleep (1000)
    send ("de")
    Sleep (1000)
    send ("{ENTER 1}")
    ;Sprache ausgewählt
    winwait ("Setup - EVEREST Ultimate Edition")
    Sleep (1000)
    send ("{ENTER 1}")
    ;Menu step 1
    winwait ("Setup - EVEREST Ultimate Edition")
    Sleep (1000)
    send ("{TAB 5}")
    Sleep (100)
    send ("{UP 1}")
    Sleep (100)
    send ("{ENTER 1}")
    sleep (1000)
    ;lizenz zugestimmt
    winwait ("Setup - EVEREST Ultimate Edition")
    send ("{ENTER 2}")
    sleep (500)
    ;Ordnerstelle
    winwait ("Setup - EVEREST Ultimate Edition")
    send ("{ENTER 1}")
    sleep (1000)
    ;startmenueintrag ja/nein
    winwait ("Setup - EVEREST Ultimate Edition")
    send ("{ENTER 1}")
    sleep (1000)
    ; Icons
    winwait ("Setup - EVEREST Ultimate Edition", "Installation durchführen")
    MsgBox ( "", "Hat", "geklappt")
    ;start der Installation
    winwait ("Setup - EVEREST Ultimate Edition")
    sleep (1)
    ;beendenfenster
    winwait ("Setup - EVEREST Ultimate Edition", "Beenden des EVEREST")
    sleep (500)

    [/autoit]

    dann kommt dieses Fenster:

    Spoiler anzeigen

    Wie bekomm ich jetzt hin das der 3. Haken weg geht und der 1. bleibt auf jeden fall ... und wenn er nciht angeklickt ist das er den macht...

    MFFG: Blacky911

    Kleiner AutoIt Lehrling :)

  • Du kannst die checkboxen mit send("{TAB}") & send("{SPACE}") ansprechen / ändern

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Stehe vor einem neuen Problem...
    Glecihes Fenster wie grade...

    ich habe winwait ("EVEREST", "Beenden des EVEREST")
    angegeben danach dann

    [autoit]

    winwait ("Setup - EVEREST Ultimate Edition", "Installation durchführen")
    ;start der Installation -> beendenfenster
    send ("{ENTER 1}")
    winwait ("EVEREST", "Beenden des EVEREST")
    sleep (1000)
    send ("{TAB 2}")
    sleep (10)
    send("{SPACE 1}")
    sleep (200)
    send ("{TAB 1}")
    sleep (100)
    send ("{ENTER 1}")
    sleep (1000)
    exit

    [/autoit]

    somit sollte er eigentlcih das 2. kästchen unchecken und das setup beenden... doch er tut es nciht....

    //Edit:
    okay fehler dort gefunden :P
    hatte einmal enter zuviel und der hat aufs falsche winwait gewarete

    jetzt häng ich schon wieder...

    also alles schön und gut wenn der das programm zum 1. mal installiert dann kommt bein aufmachen des programms ein ERROR fenster was ich wegklicke und dann den serial eingebe... das kommt aber bei 2. und 3. installationen nicht mehr... wie kann ich dem denn sagen das wenn das fenster nicht kommt der einfach weitermachen soll? also das fenster heißt Warning und beim 1. start klicke ich es so weg

    [autoit]


    winwait ("Warning")
    send ("{ENTER 1}")
    sleep (200)

    [/autoit]


    danach macht der hier weiter:

    [autoit]

    winwait ("EVEREST Ultimate")
    send ("{ALT 1}")
    sleep (200)
    send ("H")

    [/autoit]


    und jetzt möcht ich wenn das fenster warning nicht kommt das der einfach so weitermacht....


    wo liegt der fehler?
    MFG: BLacky911

    Kleiner AutoIt Lehrling :)

    Einmal editiert, zuletzt von blackdeath911 (6. März 2009 um 19:48)

  • du kannst bei WinWait einen Timeout setzen.

    Spoiler anzeigen
    [autoit]

    If WinWait("Warning","",5) Then
    send ("{ENTER 1}")
    sleep (200)
    EndIf

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

    winwait ("EVEREST Ultimate")
    send ("{ALT 1}")
    sleep (200)
    send ("H")

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Hab wieder ein Problem...

    und zwas. das script funzt jetzt 1 A ! :)

    nur habe ein Problem... bei meinem Kumpel aufn PC wenn der das script anklickt kommt nur der blaue punkt in der symbolleiste...

    was ist der fehler? er fängt gar nciht mit dem Installieren an...

    MFG: Blacky911

    Kleiner AutoIt Lehrling :)

  • - Pfad zur Setup falsch
    - EXE nicht vorhanden
    - Keine Adminrechte

    Kann einiges sein :)

    Bau Fehlerroutinen ein, dann weisst du, wo dein Script im Moment steht.