Jump to content

Recommended Posts

I have automated an install process by using the below code.

 

Func _WinWaitActivate($title,$text,$timeout=0)
    WinWait($title,$text,$timeout)
    If Not WinActive($title,$text) Then WinActivate($title,$text)
    WinWaitActive($title,$text,$timeout)
EndFunc

$win1 = "Text 1"
$win2 = "Text 2"

_WinWaitActivate($win1,"WARNING: This progra")
Send("{ALTDOWN}n{ALTUP}");Send("{SPACE}")
_WinWaitActivate($win1,"I DISAGREE and &do n")
Send("{UP}n")
_WinWaitActivate($win1,"Customer Information")
Send("{ALTDOWN}n{ALTUP}");Send("{TAB}{TAB}n")
_WinWaitActivate($win1,"Click Next to instal")
Send("{ALTDOWN}n{ALTUP}");Send("n")
_WinWaitActivate($win1,"This feature require")
Send("{ALTDOWN}n{ALTUP}");Send("{TAB}n")
_WinWaitActivate($win1,"Ready to Install the")
Send("{ALTDOWN}i{ALTUP}");Send("i")
_WinWaitActivate($win1,"The InstallShield Wi")
Send("{ALTDOWN}f{ALTUP}");Send("f")
_WinWaitActivate($win2,"You must restart you")
Send("{ALTDOWN}n{ALTUP}");Send("n")

Now if any new screen comes in the middle of installation, like some VC++ installation error or like that.

The AutoIT is waiting in the background.

Is there any way to skip the new screens with just "enter" and continue the installation??

Link to post
Share on other sites

If its installshield why use send keys?  Use silent uninstall strings, also a number of InstallShield setups will allow you to create a response file so that it's preconfigured.  Whats the name of the program?

Link to post
Share on other sites
7 minutes ago, Subz said:

If its installshield why use send keys?  Use silent uninstall strings, also a number of InstallShield setups will allow you to create a response file so that it's preconfigured.  Whats the name of the program?

Thanks @Subz for the help.

But we want to test the installation in all scenarios before releasing it to end users.

Silent, we have done already.

This part is for GUI, as to check all the GUI screens are coming as expected.

Link to post
Share on other sites

Normally when I package software for deployment, I would do the following:

  1. Check for processes running, ask user to close if open, or if required force close the application
  2. Check for previous installations
    • True - Check Version
      • Same or Newer Version - Perform a repair of the software or Exit Script
      • Older Version - Uninstall previous installations
  3. Install pre-requisites for software, VC++, .Net etc...
  4. Install software product
  5. Configure software product - User profile settings etc...

 

Edited by Subz
Link to post
Share on other sites

What I meant by my question above was, if you have configured the package correctly the user should never have to run the installer manually.  If they did I would normally have the script from my last post in the same installation directory so they just run this, I normally call it something like JavaRuntimeInstaller.exe with the actual Java Runtime exes in the same folder for x86 and x64 just as an example.

Link to post
Share on other sites

Hi @Subz

I think this going out of the conversation, sorry if I miss any information to specify previously while creating the thread.

The scenario with process steps you mentioned above is for end user deployment using some tool like SCCM.

But in my case, we are releasing our product installer in our website and the enduser may deploy as you mentioned if needed for multiple machines or he can install only on few machines using the GUI screens when you launch the setup file.

We need to test both GUI installation and silent installation before releasing in our website.

So, can you give any other suggestion for GUI installation instead of the silent installation (as that part is already handled). 

Edited by ur
Link to post
Share on other sites

All of the vendors I deal with normally have the silent install and installation instructions, I've never seen a third option for clicking the buttons, I wouldn't recommend setting up an installer with send keys as there are just so many possibilities of failure, for example a user clicks another window, or another application takes focus.

Just my 2 cents.

Link to post
Share on other sites
1 minute ago, Subz said:

All of the vendors I deal with normally have the silent install and installation instructions, I've never seen a third option for clicking the buttons, I wouldn't recommend setting up an installer with send keys as there are just so many possibilities of failure, for example a user clicks another window, or another application takes focus.

Just my 2 cents.

I agree with you.

But I think you don't understand the scenario.

We are not giving for one particular customer.

It is for multiple customers.

As we are giving both silent and UI mode installation, we need to do prior testing before delivery in both the cases.

If there is a silent installation means it doesn't mean we should not test or support UI mode installation, right?

So coming to the present issue, can we skip any extra UI screens by clicking on enter button or something like that? to continue the installation.

Link to post
Share on other sites

You would have to run the installer on a clean machine, find out what windows popup and use an If WinExists(...) Then do something.  Still doesn't make much sense to me, if the script is for your own use only, shouldn't you know what prereqs will pop-up and keeping an eye on the install to check for issues?

Link to post
Share on other sites

The project ism file is same, but the data or files changes on daily basis, so to automate that testing part I need this.

And the winexists logic i didn't understand, can you please elaborate it

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
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Zaoka
      HI,
      for couple of years I'm using  Jos script for sending reports, email with excel attachment. But from last week i'm getting this error when sending excel or word attachment
      message has lines too long for transport jpeg, pdf works with no problems, any sugestion ?
    • By diepfeile
      I'm using the following:
      Autoit 3.3.14.5
      newly installed Beta 3.3.15.5
      SQlite version 3380000 aka 3.38.0
      I put sqlite3.dll and sqlite3_x64.dll in C:\Windows\System32 since many scripts depend on them.


      I extended the output of _SQLite_Startup()
      with:
      ConsoleWrite("@AutoItX64 " & @AutoItX64 & @CRLF) ConsoleWrite("$sDll_Filename " & $sDll_Filename & @CRLF) ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF)

      Also using the script from https://www.autoitscript.com/autoit3/docs/libfunctions/_SQLite_Startup.htm for testing.

       
      >Running:(3.3.14.5):C:\Program Files (x86)\AutoIt3\autoit3.exe "R:\Download\aasdf.au3" @AutoItX64 0 $sDll_Filename sqlite3.dll _SQLite_LibVersion=0 >Running:(3.3.14.5):C:\Program Files (x86)\AutoIt3\autoit3_x64.exe "R:\Download\aasdf.au3" @AutoItX64 1 $sDll_Filename sqlite3_x64.dll _SQLite_LibVersion=3.38.0 >Running:(3.3.15.5):C:\Program Files (x86)\AutoIt3\Beta\autoit3.exe "R:\Download\aasdf.au3" @AutoItX64 0 $sDll_Filename sqlite3.dll _SQLite_LibVersion=0 >Running:(3.3.15.5):C:\Program Files (x86)\AutoIt3\Beta\autoit3_x64.exe "R:\Download\aasdf.au3" @AutoItX64 1 $sDll_Filename sqlite3_x64.dll _SQLite_LibVersion=3.38.0


      Why doesn't it work in 32bit, despite me having the 32bit sqlite.dll? Autoit urges running scripts in 32bit mode and Scite starts scripts just in 32bit mode without the flag?
      With #AutoIt3Wrapper_UseX64=Y it just works, both normal Autoit and beta!
      sqlite3.dll sqlite3_x64.dll
    • By Iraj
      Hello Team, Greetings!
      Is there any way to run any 3rd party application silently in background without the GUI getting in the front ?
      I was implementing angry-ip scanner with autoit & wanted the angry-ip application to run in background quietly as I am copying its output to other file on completion. is there any way to achieve my query?
      Below is code I tried: 
      $range = "192.168.0.1 192.168.0.255" ShellExecuteWait("C:\Windows\DDM\ipscan.exe","-f:range "&$iprange&" -q -o C:\temp\ScanResults.csv","","open",@SW_HIDE) Thanks!
    • By PeterVerbeek
      This topic give you access to an AutoIt functions library I maintain which is called PAL, Peter's AutoIt Library. The latest version 1.26 contains 214 functions divided into these topics:
      window, desktop and monitor GUI, mouse and color GUI controls including graphical buttons (jpg, png) logics and mathematics include constants string, xml string and file string dialogues and progress bars data lists: lists, stacks, shift registers and key maps (a.ka. dictionaries) miscellaneous: logging/debugging, process and system info Change log and files section  on the PAL website (SourceForge).
      A lot of these functions were created in the development of Peace, Peter's Equalizer APO Configuration Extension, which is a user interface for the system-wide audio driver called Equalizer APO.
    • By Hermes
      Hi, I am struggling in setting the value of a textarea based on the value of clipboard (that contains a long web page source codes). If I use _WD_SetElementValue, it freezes after some time, or appears to be pressing tab and goes out of focus. I can also use send keys but i need the script to run in the background.
      Here is the full script:
      #Include "Chrome.au3" #Include "wd_core.au3" #Include "wd_helper.au3" #Include "WinHttp.au3" #include <MsgBoxConstants.au3> #include <WinAPIFiles.au3> #include <Array.au3> #include <AutoItConstants.au3> #include <WinAPIFiles.au3> #include <GDIPlus.au3> #include <Excel.au3> Local $sDesiredCapabilities, $sSession SetupChrome() _WD_Startup() $sSession = _WD_CreateSession($sDesiredCapabilities) _WD_LoadWait($sSession) _WD_Navigate($sSession, "http://demo.borland.com/testsite/stadyn_largepagewithimages.html") _WD_LoadWait($sSession) Global $sSource = _WD_GetSource($sSession) Local $Paste = ClipPut($sSource) Local $sData = ClipGet() Local $aArray = 0, _ $iOffset = 1 While 1 $aArray = StringRegExp($sData, '(?s)<p>.*</p>', $STR_REGEXPARRAYMATCH, $iOffset) If @error Then ExitLoop $iOffset = @extended For $i = 0 To UBound($aArray) - 1 Local $Paste = ClipPut($aArray[$i]) Local $sRegExData = ClipGet() ;MsgBox(0, "", "$sRegExData = " & $sRegExData) Next WEnd _WD_Navigate($sSession, "https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_textarea_placeholder") _WD_WaitElement($sSession, $_WD_LOCATOR_ByCSSSelector, "iframe#iframeResult") Local $sElement1 = _WD_FindElement($sSession, $_WD_LOCATOR_ByCSSSelector, "iframe#iframeResult") _WD_FrameEnter($sSession, $sElement1) _WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, "//html/body/textarea") $textarea = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//html/body/textarea") _WD_ElementAction($sSession, $textarea, 'click') ;WD SetElementValue(SsSession, Stextarea, $sRegExData) <-- I can do this but the focus goes out, or the browser freezes _WD_FrameLeave($sSession) sleep(2000) Send("^v") _WD_LoadWait($sSession) _WD_Shutdown() Func SetupChrome() _WD_Option('Driver', 'chromedriver.exe') _WD_Option('Port', 9515) _WD_Option('DriverParams', '--log-path="' & @ScriptDir & '\chrome.log"') $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"goog:chromeOptions": {"w3c": true, "args":["start-maximized","disable-infobars"]}}}}' EndFunc ;==>SetupChrome Can someone help me please, or re-direct me to the right path? TIA!
×
×
  • Create New...