erste schritte

  • Hallo,

    wollte nun mit autoIt und den MouseOver befehlen auch mal herumspielen
    und hab einfach mal versucht das 7zip zu deInstallieren

    Nur leider passiert nichts, ich klicke die exe an(egal ob 32 oder 64bit kombiliert,gibt es da eig eine vorgabe/tipp?) und egal ob mit admin oder ohne adminrechte(win7)
    es geht immer ein kleines fenster(mit "kaputten" icon) neben der uhr auf und bleibt dann da, egal wie lange ich warte. beendet klappt dann ganz normal,das programm ist aber noch da

    frage dazu noch: kann ich es eig irgendwo (zum herumspielen) so einstellen das ich sehe welche schritte er gerade abarbeitet(um zb fehler zu erkennen) den aktuell stehe ich ja auf dem schlauch, hängt es vorne, mittig oder hinten?

    das ist der code dazu

    AutoIt
    Run("7z920-x64.msi")
    WinWait("7-Zip 9.20 (x64 edition) Setup")
    ControlClick("7-Zip 9.20 (x64 edition) Setup", "&Next", "Button1")
    WinWait("7-Zip 9.20 (x64 edition) Setup")
    ControlClick("7-Zip 9.20 (x64 edition) Setup", "&Remove", "Button3")
    WinWait("7-Zip 9.20 (x64 edition) Setup")
    ControlClick("7-Zip 9.20 (x64 edition) Setup", "&Remove", "Button2")
    WinWait("7-Zip 9.20 (x64 edition) Setup")
    ControlClick("7-Zip 9.20 (x64 edition) Setup", "&Finish", "Button1")


    ich hatte auch noch ein sleep(5000) am ende drinnen ohne erfolg
    auch ein BlockInput (1 &0) vorne und hinten brachte kein erfolg

    PS: mein hauptziel ist eig das ändern eines MAPI servers,wobei ich da auch schon die nächsten probleme sehe den die buttons dafür haben gar keine bezeichnungen bei "WindowInfo"

  • Ein paar Dinge vorab bevor ich dir deine Frage beantworte:

    • Bitte verwende eine Überschrift, die einen Zweck erfüllt und nicht nur als Platzhalter dient. Für diesen Fall wäre zum Beispiel etwas wie "Anzeige der Schritte des Scripts zur Laufzeit" deutlich sinnvoller gewesen als "erste schritte".
    • Für AutoIt-Code solltest du wenn möglich den "Code"-Button verwenden. Er ist hier im Editor als </> dargestellt. Dies fördert die Lesbarkeit des Codes und des Beitrags enorm.
    • Versuch bei einem Thread bei bloß einem Thema zu bleiben. Dann kann dir gezielter geholfen werden und auch andere Nutzer die diesen Thread hier lesen können von den Hilfestellungen profitieren.
    • Versuche mal deinen Code zu kommentieren - lies in der Hilfe, welche deiner Funktionen was tut. Das habe ich für dich mal übernommen.

    Zu deiner Frage:

    • BlockInput sperrt Nutzereingaben. Demnach müsstest du davon ausgehen, dass eine Nutzereingabe das Problem verursacht, allerdings sagtest du, dass er während der Laufzeit wartet.
    • Sleep sorgt nur dafür, dass das Script für eine Zeitdauer pausiert wird. Also eigentlich nichts, was dich weiter bringt.
    • Mit "ToolTip" kannst du dir Dinge aus dem Programmablauf anzeigen - zum Beispiel eigene "Meilensteile" definieren:


    Hier fallen gleich mehrere Dinge auf.

    • Du prüfst nicht, ob ein Vorgang abgeschlossen wurde - du versuchst einfach alle 4 Buttons direkt hintereinander zu drücken
    • Du hast die Hilfe zu den Funktionen nicht gelesen, sonst hättest du nicht statt dem Window-Text den Button-Text in den Parameter geschrieben.
    • Siehe 2 - du hast nur eine einzige Funktion in deinem Script, dass das Script pausiert. Da dein Script durchgehend läuft - wie du geschrieben hast - ändert sich während des Prozesses offenbar der Titel des Fensters und er wartet ewig auf das Fenster.

    Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Ich falle in die Friteuse.

  • Wenn das Windowinfo-Tool nichts anzeigt kannst du auf diese Weise dein eigentliches Problem nicht lösen. Bis du dich in https://www.autoitscript.com/forum/topic/15…comment-1105530 eingelesen hast das Skript erstellt und getestet/entwanzt hast, wäre dein Spaziergang durch alle betroffenen Abteilungen auch schon beendet. Und ein kleines Schwätzchen mit der kleinen, süßen Praktikantin die am Montag angefangen hat ist doch auch ganz nett. ^^

  • Versuche mal deinen Code zu kommentieren - lies in der Hilfe, welche deiner Funktionen was tut. Das habe ich für dich mal übernommen.

    was welche funktion macht, hatte ich eig gelesen, mit einer anleitung von netzwelt.de die war recht verständlich und kurz&bündig, die die ich ghier gefunden hatte die behandelte ja alles von kiesselstein zu kieselstein,vieles davon brauch ich ja gar nicht für meine kurze sache,so scheint mir.

    Nachtrag:

    BlockInput sperrt Nutzereingaben. Demnach müsstest du davon ausgehen, dass eine Nutzereingabe das Problem verursacht, allerdings sagtest du, dass er während der Laufzeit wartet.

    ob mit oder ohne blockinput es passiert nichts anderes

    Sleep sorgt nur dafür, dass das Script für eine Zeitdauer pausiert wird. Also eigentlich nichts, was dich weiter bringt.

    achso lt der anleitung sollte man die warteschleife reinpacken damit gewartet wird bis das programm fenster aufgebaut/da ist

    Hier fallen gleich mehrere Dinge auf.

    Du prüfst nicht, ob ein Vorgang abgeschlossen wurde - du versuchst einfach alle 4 Buttons direkt hintereinander zu drücken

    ah okay,das wusste ich gar nicht,das stand da nirgends beschrieben, böse anleitungen

    Du hast die Hilfe zu den Funktionen nicht gelesen, sonst hättest du nicht statt dem Window-Text den Button-Text in den Parameter geschrieben.

    wie?ich hab doch den Window Text hingeschrieben(Basic Window Info Titel)

    Mit "ToolTip" kannst du dir Dinge aus dem Programmablauf anzeigen - zum Beispiel eigene "Meilensteile" definieren:

    klasse, danke, demnach hägt es ja schon am ersten punkt
    er kann scheinbar das programm garn icht aufrufen(mit deinem code)
    name der .msi datei passt,sie liegt auch im selben ordner
    reicht es einfach "name.msi" zu schreiben oder muss der komplette string "D:bla\name.msi" da rein?

    Einmal editiert, zuletzt von subwayne (22. Februar 2016 um 13:17)

  • Mal getestet:

    Du brauchst statt Run (Starten von externen Programmen (exe, bat, com oder pif) - siehe Hilfe) den Befehl "ShellExecute" (Öffnen von externen Dateien [alle registrierten Dateiendungen mit einem Standardprogramm) - selbe Parameter.

    Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Ich falle in die Friteuse.

  • Du brauchst statt Run (Starten von externen Programmen (exe, bat, com oder pif) - siehe Hilfe) den Befehl "ShellExecute" (Öffnen von externen Dateien [alle registrierten Dateiendungen mit einem Standardprogramm) - selbe Parameter.

    das wars:)
    nun läufts
    danke,immerhin schonmal ein erfolgsgeheimnis

  • Des Weiteren empfehle ich dir nicht irgendeine verkürzte Fassung durchzulesen, die nicht einmal die Grundfunktionen ausreichend behandelt. Skriptsprachen sind wie auch Hochsprachen keine Sache die man "eben schnell" versteht und gut ist. Alleine AutoIt hat bereits weit mehr Standardfunktionen (mitgelieferte UDFs ausgeschlossen) als von Netzwelt auch nur erwähnt werden, ganz zu schweigen von ihren sehr schwammigen und teils falschen Erklärungen, die nur von einem Aushilfsazubi kommen können, der sich die Sprache eben in der Mittagspause angeguckt hat und gedacht hat er schreibt mal eben ein Tutorial, damit er auf seinen "Soll" kommt.

    Mal ein paar "Meisterwerke" aus den ersten beiden Seiten Text auf netzwelt.de:

    "(...) Der erste Befehl lautet "run", er öffnet eine Datei im gleichen Ordner. (...)" - Inhaltlich FALSCH. Run öffnet nur Programme - und da auch nur spezielle Dateiformate - siehe oben.

    "(...) an den Anfang und das Ende noch ein zusätzlicher Befehl gehängt: BlockInput(1). Damit schottet sich die Installation von allen externen Eingaben ab. (...)" - FALSCH. BlockInput blockiert ALLE Eingaben von Tastatur und Maus. Also auch das "Surfen im Internet" von dem er schreibt.

    Der Trend geht auf den Folgeseiten weiter: Von allen Funktionen, die er auch nur einmal kurz anspricht, sind mehr als 50% falsch erklärt und daher vollkommen irreführend. Links sind alle auf eine andere Seite auf Netzwelt gesetzt (egal ob passend oder nicht). Ich bin überzeugt: Es hat schon seinen Grund, dass der Autor mehrfach beruflich gewechselt ist, und nun in einem ganz anderen Bereich tätig ist...

    Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Ich falle in die Friteuse.

  • oh okay:(
    alles klar merke ich mir mal, nur so tief wollte ich halt gar nicht in autoIt reinschauen da ich es sonst wohl beruflich wie privat nicht brauchen werde
    aber ich werde es mir mal merken,danke

  • Hallo erstmal an alle Newbies wie mich und an alle Experten.

    Ich wollte hier einmal reingrätschen, weil ich auch dieser genialen Anleitung erlegen bin (Netzwelt) und nun mit diesem Thema auch etwas Hilfe benötige.
    Bei mir ist es nun allerdings die Installation.
    Ich habe mein Skript nach dem Lesen hier etwas angepasst:

    Nachdem die Installation am Ende ist erscheint ein neues Fenster (dummerweise mit dem gleichen Namen) in dem ich einem Systemneustart zustimmen kann (ja oder nein).
    Er bleibt genau an dieser Stelle stehen und ich müsste von Hand sagen Nein.
    Ich gehen davon aus, dass das Skript nicht von selbst wissen kann, das ich eigentlich in einem anderen Fenster einen Button bestätigen möchte.
    Da beide aber den gleichen Titel haben und ich nicht unbedingt so etwas wie eine genau ID des Fenster ausmachen kann, hänge ich hier fest.

    Und ja ich weiß: solche Installationen gehen eventuell anders oder mit anderen Mitteln einfacher und schneller aber ich möchte es mit AutoIt durchführen.

  • Wieso mit Fenster installieren, wenn es einen Silent-mode gibt?

    Wie kann ich 7-Zip im Silent Mode installieren?

    Für den EXE-Installer: Mit dem Parameter „/S“ können Sie 7-Zip ohne jegliche Nachfragen („silent“) installieren. Mit dem Parameter „/D=dir“ kann dabei der Zielordner angegeben werden. Bei diesen Optionen wird zwischen Groß- und Kleinschreibung unterschieden.

    Für den MSI-Installer: Benutzen Sie die Parameter /q INSTALLDIR="C:\Program Files\7-Zip"

    Also:

    AutoIt
    Run('installer.exe /S /D="C:\Program Files\7-Zip"')
    ;oder bei msi-installer:
    Run('installer.exe /q INSTALLDIR="C:\Program Files\7-Zip"')


    EDIT:
    Grad gesehen, dass du unbedingt die unsichere Variante machen willst:

    AutoIt
    While NOT ControlClick("7-Zip 16.04", "&Nein", "Button2")
    sleep(10)
    WEnd

    Das sendet den klick, bis er nicht mehr fehlschlägt (also der nein-button existiert).


    MfG Kanashius

  • Das sendet den klick, bis er nicht mehr fehlschlägt (also der nein-button existiert).

    Falls das Fenster aber nicht wie erwartet erscheint, weil der Installer z. B. wegen eines Fehlers abgestürzt ist, hast du hier eine Endlosschleife...

    Dann lieber ein wenig mehr ausholen... so vielleicht: