Jump to content
Sign in to follow this  
troon

Goto for Autoit?

Recommended Posts

I have a Program which install some Programms automatic: 

#RequireAdmin
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <file.au3>
#Region ### START Koda GUI section ### Form=K:\Privat\Programme\Autoit\GUI´s\Tools.kxf
$Tools = GUICreate("Grundinstalation", 121, 259, 192, 124)
$Supportinfos = GUICtrlCreateCheckbox("SupportInfos", 16, 8, 97, 17)
$7zipx32 = GUICtrlCreateCheckbox("7 Zip x32", 16, 24, 97, 17)
$7zipx64 = GUICtrlCreateCheckbox("7 Zip x64", 16, 40, 97, 17)
$cdbx32 = GUICtrlCreateCheckbox("CDB x32", 16, 56, 97, 17)
$cdbx64 = GUICtrlCreateCheckbox("CDB x64", 16, 72, 97, 17)
$freepdf = GUICtrlCreateCheckbox("FreePDF", 16, 88, 97, 17)
$gsx32 = GUICtrlCreateCheckbox("GhosScript x32", 16, 104, 97, 17)
$gsx64 = GUICtrlCreateCheckbox("GhostScript x64", 16, 120, 97, 17)
$javax32 = GUICtrlCreateCheckbox("Java x32", 16, 136, 97, 17)
$javax64 = GUICtrlCreateCheckbox("Java x64", 16, 152, 97, 17)
$fernwartung = GUICtrlCreateCheckbox("Fernwartung", 16, 168, 97, 17)
$adobereader = GUICtrlCreateCheckbox("AdobeReaderDC", 16, 184, 97, 17)
$flashplayer = GUICtrlCreateCheckbox("Flashplayer", 16, 200, 97, 17)
$go = GUICtrlCreateButton("Go", 16, 224, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

If Not FileExists("C:\Install") Then
    _FileCreate("C:\Install")
EndIf

If Not FileExists("C:\Install\IT-Motion") Then
    _FileCreate("C:\Install\IT-Motion")
EndIf

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $go

            If GUICtrlRead($Supportinfos) = 1 Then
                FileCopy(@ScriptDir & "\itm-logo.bmp", "C:\Install\IT-Motion")
                sleep(1000)
                RegWrite("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation", "Logo", "REG_SZ", "c:\Install\IT-Motion\itm-logo.bmp")
                RegWrite("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation", "Manufacturer", "REG_SZ", "RIZ IT-Motion GmbH")
                RegWrite("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation", "SupportHours", "REG_SZ", "Werktags von 08:30 Uhr bis 12:00 Uhr und von 13:00 Uhr bis 17:30 Uhr")
                RegWrite("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation", "SupportPhone", "REG_SZ", "+49 (0)7732 939 1 940")
                RegWrite("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation", "SupportURL", "REG_SZ", "http://www.riz-itmotion.de")
            EndIf

            if GUICtrlRead($7zipx32) = 1 Then
                ShellExecute(@ScriptDir & "\7z920-x64.msi")
                WinWait("7-Zip 9.20 Setup","&Next")
                ControlClick("7-Zip 9.20 Setup", "&Next", "Button1")
                sleep(10)
                ControlClick("7-Zip 9.20 Setup", "I &accept the terms in the License Agreement", "Button1")
                sleep(10)
                ControlClick("7-Zip 9.20 Setup", "&Next", "Button3")
                sleep(10)
                ControlClick("7-Zip 9.20 Setup", "&Next", "Button5")
                sleep(10)
                ControlClick("7-Zip 9.20 Setup", "&Install", "Button1")
                WinWaitActive("7-Zip 9.20 Setup", "&Finish")
                ControlClick("7-Zip 9.20 Setup", "&Finish", "Button1")
                sleep(3000)
            EndIf

            If GUICtrlRead($7zipx64) = 1 then
                ShellExecute(@ScriptDir & "\7z920-x64.msi")
                WinWait("7-Zip 9.20 (x64 edition) Setup", "&Next")
                ControlClick("7-Zip 9.20 (x64 edition) Setup", "&Next", "Button1")
                sleep(10)
                ControlClick("7-Zip 9.20 (x64 edition) Setup", "I &accept the terms in the License Agreement", "Button1")
                sleep(10)
                ControlClick("7-Zip 9.20 (x64 edition) Setup", "&Next", "Button3")
                sleep(10)
                ControlClick("7-Zip 9.20 (x64 edition) Setup", "&Next", "Button5")
                sleep(10)
                ControlClick("7-Zip 9.20 (x64 edition) Setup", "&Install", "Button1")
                WinWait("7-Zip 9.20 (x64 edition) Setup", "&Finish")
                ControlClick("7-Zip 9.20 (x64 edition) Setup", "&Finish", "Button1")
                sleep(3000)
            EndIf

            If GUICtrlRead($cdbx32) = 1 Then
                ShellExecute(@ScriptDir & "\cdbxp_setup_4.5.6.5931.msi")
                WinWait("CDBurnerXP Setup")
                ControlClick("CDBurnerXP Setup", "&Next", "Button1")
                sleep(10)
                ControlClick("CDBurnerXP Setup", "I &accept the terms in the License Agreement", "Button1")
                Sleep(10)
                ControlClick("CDBurnerXP Setup", "&Next", "Button4")
                sleep(10)
                ControlClick("CDBurnerXP Setup", "&Next", "Button5")
                sleep(10)
                ControlClick("CDBurnerXP Setup", "&Install", "Button1")
                sleep(10)
                WinWaitActive("CDBurnerXP Setup", "&Finish")
                ControlClick("CDBurnerXP Setup", "&Finish", "Button1")
                sleep(3000)
            Endif

            if GUICtrlRead($cdbx64) = 1 Then
                ShellExecute(@ScriptDir & "\cdbxp_setup_x64_4.5.6.5931.msi")
                WinWait("CDBurnerXP (64 bit) Setup")
                ControlClick("CDBurnerXP (64 bit) Setup", "&Next", "Button1")
                sleep(10)
                ControlClick("CDBurnerXP (64 bit) Setup", "I &accept the terms in the License Agreement", "Button1")
                Sleep(10)
                ControlClick("CDBurnerXP (64 bit) Setup", "&Next", "Button4")
                sleep(10)
                ControlClick("CDBurnerXP (64 bit) Setup", "&Next", "Button5")
                sleep(10)
                ControlClick("CDBurnerXP (64 bit) Setup", "&Install", "Button1")
                sleep(10)
                WinWaitActive("CDBurnerXP (64 bit) Setup", "&Finish")
                ControlClick("CDBurnerXP (64 bit) Setup", "&Finish", "Button1")
                sleep(3000)
            EndIf

            if GUICtrlRead($gsx64) = 1 Then
                ShellExecute(@ScriptDir & "\gs907w64.exe")
                WinWait("GPL Ghostscript Setup")
                ControlClick("GPL Ghostscript Setup", "&Next >", "Button2")
                sleep(10)
                ControlClick("GPL Ghostscript Setup", "I &Agree", "Button2")
                sleep(10)
                ControlClick("GPL Ghostscript Setup", "&Install", "Button2")
                sleep(10)
                WinWait("GPL Ghostscript Setup", "&Finish")
                ControlClick("GPL Ghostscript Setup", "&Show Readme", "Button5")
                Sleep(10)
                ControlClick("GPL Ghostscript Setup", "&Finish", "Button2")
                sleep(3000)
            EndIf

            if GUICtrlRead($gsx32) = 1 Then
                ShellExecute(@ScriptDir & "\gs907w32.exe")
                WinWait("GPL Ghostscript Setup")
                ControlClick("GPL Ghostscript Setup", "&Next >", "Button2")
                sleep(10)
                ControlClick("GPL Ghostscript Setup", "I &Agree", "Button2")
                sleep(10)
                ControlClick("GPL Ghostscript Setup", "&Install", "Button2")
                sleep(10)
                WinWait("GPL Ghostscript Setup", "&Finish")
                ControlClick("GPL Ghostscript Setup", "&Show Readme", "Button5")
                Sleep(10)
                ControlClick("GPL Ghostscript Setup", "&Finish", "Button2")
                sleep(3000)
            EndIf

            If GUICtrlRead($freepdf) = 1 Then
                ShellExecute(@ScriptDir & "\FreePDF4.08.exe")
                WinWait("FreePDF 4.08", "&Setup")
                ControlClick("FreePDF 4.08", "&Setup", "ThunderRT5CommandButton3")
                Sleep(10)
                WinWait("FreePDF 4.08", "&End")
                ControlClick("FreePDF 4.08", "&End", "ThunderRT5CommandButton1")
                sleep(3000)
            EndIf

            If GUICtrlRead($adobereader) = 1 Then
                ShellExecute(@ScriptDir & "\AcroRdrDC1500920069_de_DE\AcroRead.msi")
                WinWait("Adobe Acrobat Reader DC – Installation", "&Installieren")
                ControlClick("Adobe Acrobat Reader DC – Installation", "&Installieren", "Button4")
                WinWait("Adobe Acrobat Reader DC – Installation", "&Fertigstellen")
                ControlClick("Adobe Acrobat Reader DC – Installation", "&Fertigstellen", "Button1")
                sleep(3000)
            EndIf

            If GUICtrlRead($flashplayer) = 1 then
                ShellExecute(@ScriptDir & "\20.0.0.228\install_flash_player_20_active_x.msi")
                WinWait("Adobe Flash Player 20 ActiveX - InstallShield Wizard", "&Install")
                ControlClick("Adobe Flash Player 20 ActiveX - InstallShield Wizard", "&Install", "Button1")
                sleep(10)
                WinWait("Adobe Flash Player 20 ActiveX - InstallShield Wizard", "&Finish")
                sleep(10)
                ControlClick("Adobe Flash Player 20 ActiveX - InstallShield Wizard","&Finish", "Button1")
                sleep(10)
                ShellExecute(@ScriptDir & "\20.0.0.228\install_flash_player_20_plugin.msi")
                WinWait("Adobe Flash Player 20 NPAPI - InstallShield Wizard", "&Install")
                sleep(10)
                ControlClick("Adobe Flash Player 20 NPAPI - InstallShield Wizard", "&Install", "Button1")
                WinWait("Adobe Flash Player 20 NPAPI - InstallShield Wizard", "&Finish")
                ControlClick("Adobe Flash Player 20 NPAPI - InstallShield Wizard", "&Finish", "Button1")
                sleep(3000)
            EndIf

            If GUICtrlRead($fernwartung) = 1 Then

            Endif

            MsgBox(0 ,"Tools", "Der Installier Vorgang wurde abgeschlossen! JAVA MUSS EXTRA INSTALLIERT WERDEN!")

                If GUICtrlRead($javax32) = 1 then
                ShellExecute(@ScriptDir & "\jre-8u66-windows-i586.exe")
            EndIf

            If GUICtrlRead($javax64) = 1 Then
                ShellExecute(@ScriptDir & "\jre-8u66-windows-x64.exe")
            EndIf


            Exit
    EndSwitch
WEnd

 

But if a Installation failes, i want that the programm stop the installation and start the next one, easyst way would be Goto, but there´s no goto in Autoit. 

Share this post


Link to post
Share on other sites

After a quick look at your code, I see some possible issues. WinWait() and WinWaitActive() have a timeout option. You should use it, otherwise the script will wait forever if a windows fails to appear. You should also check the return values of ControlClick() and @error with ShellExecute().

Edited by czardas

Share this post


Link to post
Share on other sites

You just need to get your head around - IF...ELSE, CASE statements, FUNCTIONS and the Return command, etc.

Once you've got a handle on them, you will find that Goto is inferior.


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By Codenameglassy
      Hello so i need help, so i have a while(1) Loop but i want to restart the loop form the begining if a specific event occurs or what i want on screen is occured.. i want  to restart the loop from beginning , leaving the rest of the script.
      But if the event didnt occur it follows the rest of the script and goes on while loop..
    • By TrashBoat
      Im trying to iterate through a 2d array created by 
      ProcessList() function that returns a 2d array containing names and pid's, i wanted to filter through the names and delete entries that have "svchost.exe" and this is how i did it
      Func _Sanitize($array) For $x = 1 To UBound($array) - 1 ConsoleWrite($array[$x][0] & @CRLF) If $array[$x][0] == "svchost.exe" Then _ArrayDelete($array, $x) EndIf Next EndFunc ;==>_Sanitize And i get this error message
      What is wrong?
    • By gahhon
      Global Const $DIR_WA_FOLDER = @MyDocumentsDir & '\Whatsapp Extension' Global Const $DIR_SHORTCUT = @DesktopDir & '\WhatsappWeb.exe' Func _Create_Shortcut() Local $sMessage = "Creating shortcut " _Metro_SplashTextScreen(1, "", $sMessage) AdlibRegister("_Metro_LoopInProgress") If FileExists($DIR_WA_FOLDER) Then $iDelete = FileDelete($DIR_SHORTCUT) If $iDelete Then _FileWriteLog($LOG_INSTALLATION, "Debug: Desktop's shortcut is deleted.") Else _FileWriteLog($LOG_INSTALLATION, "Debug: Desktop's shortcut is not found. But, desktop's shortcut is still created.") EndIf If FileExists($DIR_WA_FOLDER & '\WhatsappWeb.exe') Then $iCreate = FileCreateShortcut($DIR_WA_FOLDER & '\WhatsappWeb.exe', $DIR_SHORTCUT) If $iCreate Then _Metro_MsgBox(0, "", "Desktop shortcut is now created!") _FileWriteLog($LOG_INSTALLATION, "Debug: Desktop's shortcut is created.") Else _Metro_MsgBox(0, "", "Desktop shortcut is failed to created!") _FileWriteLog($LOG_INSTALLATION, "Error: Fail to create shortcut.") EndIf Else _Metro_MsgBox(0, "", "Source not found!") _FileWriteLog($LOG_INSTALLATION, "Error: WhatsappWeb.exe is not found.") EndIf Else _Metro_MsgBox(0, "", "Source not found!") _FileWriteLog($LOG_INSTALLATION, "Error: Whatsapp Extension folder is not found.") EndIf AdlibUnRegister("_Metro_LoopInProgress") _Metro_SplashTextScreen(0) EndFunc So I do have a button to trigger this create shortcut to desktop.
      But after it created shortcut at desktop, I cannot execute the shortcut as it has no any response.
      Then I go try trigger the file at the source path @MyDocumentDir & '\Whatsapp Extension\WhatsappWeb.exe' and it work as expected.
      Then I go to check my log, and it shows:- (P/S: I already did trigger the function twice)
      2019-02-28 23:27:32 : Debug: Desktop's shortcut is not found. But, desktop's shortcut is still created. 2019-02-28 23:27:33 : Debug: Desktop's shortcut is created. 2019-02-28 23:28:40 : Debug: Desktop's shortcut is not found. But, desktop's shortcut is still created. 2019-02-28 23:28:41 : Debug: Desktop's shortcut is created. So based on my log shows, it failed to locate the shortcut, but it did exists there.
       
      P/S: This project is done developed weeks ago, every testing is passed. Is just somehow the executable cannot be execute.
       
       
      Any advise?
    • By chrweav86
      Here is an existing AS400 PCOM script that I have: 
      #include-once
      #cs ----------------------------------------------------------------------------
       UDF Header Title: _PCOMM
       UDF Header Version: 0.1.0
       AutoIt Version: 3.3.8.1
       Author:         Jason S. - Jewelry Supply, Inc.
       Script Function: PCOMM UDF Header
                          For use with IBM AS/400 - IBM OS/400 - IBM System i - IBM i application system.
                          This PCOMM UDF Header targets ASW - an ERP application suite written in IBM's RPG language (yuck!),
                          although it will work for any AS/400 system and is not ASW specific.
                          PCOMM allows injection of keystrokes into the datastream of
                          a running terminal/console application ("Green Screen" Console Emulator).
                              - Assumes Session 'A' but can be overriden using the aswConnect() function.
                          PCOMM allows observing of characters in the datastream of a running
                          terminal/console application ("Green Screen" Console Emulator).
                              - Assumes Session 'A' but can be overriden using the aswConnect() function.
      #ce ----------------------------------------------------------------------------
      Global $Session = "A"
      Global $Ps
      Global $Oia
      ; Specify session to connect to
      Func aswSetSession($nSession)
          $Session = $nSession
      EndFunc
      ; Connect to ASW
      ; @param $nSession - Specify session to connect to. Ex: "A"
      Func aswConnect($nSession = $Session)
          $Obj_ConnMgr = ObjCreate("PCOMM.autECLConnMgr")
          $OBJ_EmulSession = ObjCreate("PCOMM.autECLSession")
          $OBJ_EmulSession.SetConnectionByName($nSession)
          $Ps = $OBJ_EmulSession.autECLPS
          $Oia = $OBJ_EmulSession.autECLOIA
      EndFunc
      ; Send Data to ASW
      ; if $rownum and $colnum are not specified, defaults to the cmd line
      Func aswSend($keys, $rownum = 20, $colnum = 7, $inhibit = 1)
          $Ps.SendKeys($keys, $rownum, $colnum)
          if $inhibit = 1 Then
              While $Oia.InputInhibited <> 0
              WEnd
          EndIf
          $Oia.WaitForInputReady()
      EndFunc
      ; Get Data from ASW
      Func aswGet($row, $col, $length)
          $info = $Ps.GetText($row,$col,$length)
          return $info
      Endfunc
      ; Check which page we are on
      ; @param $page - Page to see if we are on. Ex: "DMR30101" == Sales Order Maintenance page
      Func checkScreen($page, $rownum = 1, $colnum = 72, $length = 8)
          If StringInStr(aswGet($rownum, $colnum, $length), $page) Then
              Return 1
          Else
              Return 0
          EndIf
      EndFunc
      I would like to use it launch a connection to the AS400. I have an executable that I run with an hod file. Do I just need to run the exe and hod file then run the session connect function and send keys function to pass credentials?
       
    • By FordsFinest
      Have come across an issue where I use the below code to select and then click an item. It works great on every computer but one, which happens to be my bosses computer (of course right lol).  So SelectItem works fine, but for some reason, the ClickItem command keeps clicking the item below the correct item (but only on this computer. I changed the command to controlsend instead, but i'd rather use the click option.. any ideas here?
       
      _GUICtrlTreeView_SelectItem($hWnd, $Array2[1]) _GUICtrlTreeView_ClickItem($hWnd, $Array2[1], "right")  
×
×
  • Create New...