Neuling braucht Hilfe

  • Hallo liebe autoit-Gemeinde.

    Ich habe im Internet nach einer Möglichkeit gesucht, programme selbstständig installieren zu lassen, ohne in den Installationsprozess eingreifen zu müssen. Ich bin dann auf Autit gestoßen und bin der Meinung, dass dies genau das ist, was ich gesucht habe. Wie ich bereits in einigen Threads gesehen habe lassen sich mit autoit auch noch ganz andere feine DInge anstellen. Dies sollte aber erstmal nich von Interesse für mich sein.

    Ich habe mich also durch einige Tutorials gekämpft und habe es nun geschafft, dass ein Spiel automatisch installiert wird, wenn ich das Script ausführe.
    So weit so gut. War schon ganz stolz, als ich das endlich hinbekommen habe.

    Habe die Suchfunktion benutzt aber nicht genau das gefunden was ich benötige. vielleicht könnt ihr mir weiterhelfen. Zur Erweiterung dieses Scripts würde ich gerne folgendes machen, wenn irgendwie möglich:

    Die Installation startet jetzt so, als wenn ich sie ganz normal starten würde, nur das halt die klicks die man machen muss auf die einzelnen Buttons, automatisch erfolgen. ich kann also genau sehen was während der installation geschieht.

    Zunächst einmal möchte ich, dass der Prozess unsichtbar verläuft und man währenddessen den Installationsprozess nicht mehr auf normalem Wege verfolgen kann. Die zweite Erweiterung währe, dass ich ein eigenes Fenster mit einfachem Fortschrittsbalken erstelle, in dem der Installationsprozess prozentual ausgegeben wird. Dieses Fenster soll nach Abschluss der Installation mit einer Meldung Installation abgeschlossen und einem klick auf OK beendet werden.

    Es wäre schön, wenn ihr mir Tipps geben könnt oder falls das schon einmal behandelt worden ist und ich das entsprechende Thema nicht gefunden habe mir sagt, wo ich die benötigten Funktionen dafür finden kann.

    Gruß Ov3

  • Erstmal Danke für deine Info. Eine Prozentanzeige muss es nicht unbedingt sein. Aber zumindest eine Meldung, wenn die Installation abgeschlossen ist sollte kommen. Was kann ich denn tun, wenn ich keine Silent Schalter finde. Es muss doch eine Möglichkeit geben den Prozess irgendwo im hintergrund auszuführen. Wenn ich eine reine Silent Install machen wollte, bräuchte ich doch normal kein autoit?!? Daduurch das ich ja den Installationspruzess automatisiert habe, muss es doch eine Möglichkeit geben den Grafischen Installationsprozess "unsichtbar" auszuführen.

  • Zitat

    Mit "silent install programmname" findest du bei Google meistens die nötigen Parameter. Die an ShellExecute und Run verfüttern. Prozentanzeige ist schwierig...

    peethebee : soweit ich weiß haben die meisten spiele noch keine silent installation verfügbar oder irre ich da?


    Zitat

    ich kann also genau sehen was während der installation geschieht.

    du kannst das fenster mit Winsetstate() verstecken, die control commandos funktionienen trotzdem

    Zitat

    einfachem Fortschrittsbalken

    leider nicht ganz so einfach, die leichteren variante wäre noch die Ordnergröße des installationspfads abzufragen und mithilfe der formel:

    (jetzigeOrdnergröße / endgröße) * 100

    und diesen wert immer wieder auf die Prozessbar übertragen.
    (allerdings sehr ungenau, wird ruckartig ansteigen)

    • Offizieller Beitrag

    Mit WinSetState kannst du auch Fenster verstecken -> musst du evtl. für jedes Installationsfenster neu machen.
    Grundsätzlich und vor allem hier: mit ControlClick und den anderen Control*-Funktionen arbeiten.

    Oder mit WinMove aus dem sichtbaren Bereich schieben -> hat trotzdem Fokus evtl.


    Johannes

  • Hier ist mein Quelltext (ist denke ich sehr simpel):
    Also mir würde es reichen, wenn die Installation im Hintergrund läuft und ne Meldung kommt, wenn es fertig ist.
    Das ganze hatte ich mir so vorgestellt. Die Games sollen auf einem Netzwerkserver/NAS liegen und bei Bedarf mit einem klick installiert werden können ohne das man sich bei einer Neuinstallation von den games durch den Setup-Prozess klicken muss.
    Ich hab das damals mal bei einem Praktikum gesehen. In einer sehr großen Firma wurden Rechner so eingerichtet. Windows drauf und dann über die das Netzwerk auf eine solche Weise mit Programmen bestückt.

    [autoit]


    ; Überprüfen ob das Programm vorhanden ist und Meldung ausgeben falls nicht
    If Not FileExists(@ScriptDir & "\Setup.exe") Then
    MsgBox(16,"Datei nicht gefunden", _
    "Dieses Programm und Setup.exe" & @CRLF & _
    "müssen sich im gleichen Verzeichnis befinden!")
    Exit ; Programm beenden
    EndIf

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

    ; Programm starten
    Run("Setup")

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

    ; Willkommensfenster
    WinWait("Welcome")
    send("!n")

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

    ; Lizenzvereinbarung
    WinWait("Software License Agreement")
    send("!y")

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

    ; Systemanforderungen
    WinWait("Minimum System Requirements")
    send("!n")

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

    ;Eingabe CD-Key
    Send("xxxxxxxxxxxxxxx")
    send("{Enter}")
    send("{Enter}")

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

    ;Installationsort
    WinWait("Choose Destination Location")
    send("!n")

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

    ;Startmenueintrag
    WinWait("Select Start Menu Programs Folder")
    send("!n")

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

    ;Installation Starten
    WinWait("Start Installation")
    send("!i")

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

    ;Abschluss
    WinWait("Hardware Detected")
    send("{Enter}")

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

    ;Verknüpfungen erstellen
    Winwait("Create Shortcuts")
    send("!y")

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

    ;Produktregistrierung
    Winwait("Electronic Registration")
    controlclick("Electronic Registration","Register later.", "Button6")
    send("!n")

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

    ;Installation abschließen
    Winwait("Installation Complete")
    send("!f")
    ;ENDE

    [/autoit]
  • du solltest alle send's also die ganzen tastenkombinationen durch controlclick oder controlsettext (oder den anderen conrol... funktionen) ersetzen

    die winwaits solltest du genauer definieren. nur den titel angeben ist meistens recht unsicher, am besten mit Class oder ähnlichen arbeiten.
    (die kriegst du in Window info Tool unter Summary.

    auch bei den controlclicks den 3ten parameter genauer, so in der art:

    [autoit]

    ControlClick( "LALALA", "BLABLABLA" , "[CLASS:TButton; INSTANCE:1]")

    [/autoit]

    und zum unsichtbarmachen wie gesagt entweder mit Winmove auserhalb verschieben oder mit Winsetstate auf @SW_Hide setzten

  • um das ganze im hintergrund laufen zu lassen sprich minimiert gibt es mehrere möglichkeiten das ist eine davon:

    wenn du das minimiert laufen lassen möchtest musst du die ganzen "send"´s die du in dem quellcode hast in "ControlClick"´s ändern und die befehle über die id des programmes laufen lassen das ganze sieht so aus

    ControlClick("titel", "muss nichts rein", "class+istance", "left(welche maustaste)",1(wie oft clicken) ,310 ,200 )

    den titel, die class+istance und die coordinaten (ControlClick Coords) kannst du mit einem tool rausfinden was bei autoit mit im ordner ist es heißt "Au3Info.exe"

    beispiel an firfox:

    Code
    ControlClick ("Google - Mozilla Firefox", "", "MozillaWindowClass5","left",1 ,310 ,200 )

    ich hoffe du kommst damit klar wenn nicht schreib mich einfach an ;)

  • Das sieht doch schonmal vielversprechend aus. Mit den Winwait funktioniert so ganz gut. Das Programm macht genau was es soll. Möglich,, dass es bei einem anderen zu Problemen kommt. Werde den Quelltext mal überarbeiten. Ich hatte das erst mit ControlClick versucht aber das funktionierte nicht wie ich wollte.
    Habe ich bestimmt einen Fehler drin gehabt. Ich werde das heute Abend mal ausprobieren und dann Bericht erstatten.

    Danke schonmal dafür.

  • hab dir hier auch nochmal n beispiel für die aktuelle 7zip installation gemacht
    (ist ne recht kleine Installation aber man sieht was wichtig ist ;) )

    Spoiler anzeigen
    [autoit]

    If Not FileExists(@ScriptDir & "\7z465.exe") Then
    MsgBox(16, "Datei nicht gefunden", _
    "Dieses Programm und 7z465.exe" & @CRLF & _
    "müssen sich im gleichen Verzeichnis befinden!")
    Exit ; Programm beenden
    EndIf

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

    Run(@ScriptDir & "\7z465.exe")

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

    WinWait("7-Zip 4.65 Setup ", "Choose the folder in which to install 7-Zip 4.65")
    WinMove("7-Zip 4.65 Setup ", "Choose the folder in which to install 7-Zip 4.65", @DesktopWidth, 0)
    WinSetState("7-Zip 4.65 Setup ", "Choose the folder in which to install 7-Zip 4.65", @SW_HIDE)
    ControlSetText("7-Zip 4.65 Setup ", "Choose the folder in which to install 7-Zip 4.65", "[CLASS:Edit; INSTANCE:1]", "C:\Programme\7-Zip\")
    ControlClick("7-Zip 4.65 Setup ", "Choose the folder in which to install 7-Zip 4.65", "[CLASS:Button; INSTANCE:2]")

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

    WinWait("7-Zip 4.65 Setup ", "7-Zip 4.65 has been installed on your computer.")
    ControlClick("7-Zip 4.65 Setup ", "7-Zip 4.65 has been installed on your computer.", "[CLASS:Button; INSTANCE:2]")

    [/autoit]

    hier der downloadlink zu 7-zip
    http://www.chip.de/downloads/7-Zip-32-Bit_13004776.html


    sollte soweit funktionieren ;)