DemonAngel Posted October 11, 2006 Share Posted October 11, 2006 Usage. To create ini files. unattend.au3 To install using a ini file. unattend.au3 inifilename.ini I hope it is usefull. If anyone has some improvement ideas please share. expandcollapse popup#include <GuiConstants.au3> #Include <GuiList.au3> Global $Setupfile Global $Counter = "0" Global $Inifile = "" Global $text,$title,$List_1,$winlistgui $temp = "" If $cmdline[0] <> "0" Then InstSoft($cmdline[1]) EndIf $maingui = GuiCreate("Unattend Installation Creator", 232, 90,1, 1); , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) $Input_setup = GuiCtrlCreateInput($temp, 110, 10, 110, 20) $Button_START = GuiCtrlCreateButton("Setup EXE Name:", 10, 10, 90, 20) $Button_ADDFUNC = GuiCtrlCreateButton("Add Funtion", 10, 40, 210, 20) $Button_EXIT = GuiCtrlCreateButton("Close and EXIT", 10, 65, 210, 20) GuiSetState() While 1 $msg = GuiGetMsg() Select Case $msg = $Input_setup If GUICtrlRead($Input_setup) = "" Then GUICtrlSetData($Button_START,"Setup EXE Name:") Else GUICtrlSetData($Button_START,"START SETUP") EndIf Case $msg = $Button_START StartEXE() Case $msg = $Button_ADDFUNC Addfunc() Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Button_EXIT ExitLoop Case Else ;;; EndSelect WEnd Exit Func Addfunc() If $Inifile = "" Then $Inifile = InputBox("Unattend Ini Information","Please type a name for this installation ini file.") if @error Then Return $inifile = FileGetShortName(@ScriptDir&"\"&$inifile&".ini") IniWrite($Inifile,"SETUP","SETUPEXE",GUICtrlRead($Input_setup)) EndIf $var = WinList() $winlistgui = GuiCreate("Window List", 281, 336,-1, -1) $List_1 = GuiCtrlCreateList("Window List", 10, 40, 260, 266) $Label_2 = GuiCtrlCreateLabel("Select the correct Window", 10, 10, 150, 20) $button_winselect = GUICtrlCreateButton("OK",100,300,80) GuiSetState() For $i = 1 to $var[0][0] If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then GUICtrlSetData($List_1,$var[$i][0]) EndIf Next While 1 $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE GUIDelete($winlistgui) ExitLoop Case $msg = $List_1 Case $msg = $button_winselect $Counter = $Counter + "1" $title = GUICtrlRead($List_1) $text = WinGetText($title) $text = StringLeft($text,"5") IniWrite($Inifile,"SETUP","Counter",$Counter) IniWrite($Inifile,"WININFO","Title"&$Counter,$title) IniWrite($Inifile,"WININFO","Text"&$Counter,$text) Poplist() ExitLoop Case Else ;;; EndSelect WEnd EndFunc Func poplist() GUIDelete($winlistgui) $Controllistgui = GuiCreate($title&" Control List", 281, 336,-1, -1) $List_2 = GuiCtrlCreateList("Control List", 10, 40, 260, 266) $Label_3 = GuiCtrlCreateLabel("Select the correct Window", 10, 10, 150, 20) $button_Controlselect = GUICtrlCreateButton("OK",100,300,80) GuiSetState() for $CCnt = 1 to 99 Step 1 $tmpRead = ControlGetText($title,$text,"Button"&$CCnt) If $tmpRead = "" then If $CCnt = "1" Then MsgBox(0,"Error","Unable to find any Controls") GUIDelete($Controllistgui) Return(0) EndIf ExitLoop EndIf GUICtrlSetData($List_2,"Button"&$CCnt&"- "&$tmpRead) Next $msg = "" While 1 $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE GUIDelete($Controllistgui) ExitLoop Case $msg = $button_Controlselect $button = GUICtrlRead($List_2) $button = StringLeft($button,(StringInStr($button,"-")-"1")) IniWrite($Inifile,"WININFO","button"&$Counter,$button) GUIDelete($Controllistgui) ExitLoop EndSelect WEnd EndFunc Func StartEXE() $setupfile = FileGetShortName(@ScriptDir&"\"&GUICtrlRead($Input_setup)) If GUICtrlRead($Input_setup) = "" Then MsgBox(0,"Error","Filename Field Cannot be Blank") ElseIf not FileExists($setupfile) Then MsgBox(0,"Error","Setup File Not Found") Else If $Inifile = "" Then $Inifile = InputBox("Information","Please type the name of the new ini file") $Inifile = FileGetShortName(@ScriptDir&"\"&$Inifile&".ini") EndIf IniWrite($Inifile,"SETUP","SETUPEXE",GUICtrlRead($Input_setup)) Run($setupfile) EndIf EndFunc Func InstSoft($inifile) $timeout = "1" If Not FileExists(@ScriptDir&"\"&$inifile) Then MsgBox(0,"Error","The file specified was not found ... "&@ScriptDir&"\"&$inifile) Exit EndIf $run = @ScriptDir&"\"&IniRead(@ScriptDir&"\"&$inifile,"SETUP","SETUPEXE","") If Not FileExists($run) Then MsgBox(0,"Error","The Setup file specified was not found ... "&$run) Exit EndIf $maxcount = IniRead(@ScriptDir&"\"&$inifile,"SETUP","Counter","") Run($run) for $tmpcnt = "1" to $maxcount Step 1 $title = IniRead(@ScriptDir&"\"&$inifile,"WININFO","Title"&$tmpcnt,"") $text = IniRead(@ScriptDir&"\"&$inifile,"WININFO","Text"&$tmpcnt,"") $button = IniRead(@ScriptDir&"\"&$inifile,"WININFO","button"&$tmpcnt,"") While 1 $wincheck = WinExists($title,$text) If $wincheck = "1" Then Sleep(1500) ControlClick($title,$text,$button) ExitLoop Else Sleep(1000) $timeout = $timeout + "1" If $timeout = "120" Then WinClose($title,"") Exit EndIf EndIf WEnd Next Exit EndFunc Func IsVisible($handle) If BitAnd( WinGetState($handle), 2 ) Then Return 1 Else Return 0 EndIf EndFunc Link to comment Share on other sites More sharing options...
chen_tso Posted October 11, 2006 Share Posted October 11, 2006 i don't understand your descriptions.. Link to comment Share on other sites More sharing options...
Paulie Posted October 12, 2006 Share Posted October 12, 2006 Could you clarify what it does more? Link to comment Share on other sites More sharing options...
DemonAngel Posted October 12, 2006 Author Share Posted October 12, 2006 Basicly it launches a setup exe file and then looks for windows. If it finds a window it then clicks the button on that window that you specified. It can be used to do a unattended setup of just about any application. If you run the script then it will launch a gui that you can use to create a unattend INI file. (Used to store information the script will need for the install) If you run the scritp with the ini filename in a command line then it will start to do the unattened install using the specified INI file. Example: compiledscript.exe winzip.ini It can be used to script installs of software for multiple users using logon scripts. Something else I would suggest is using AutoIT to disable the keyboard and mouse input while the script is running. I have to admit my code is a bit sloppy and may need some cleanup. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now