此頁將介紹實(shí)現(xiàn) WinZip 9 SR-1漢化版 的自動安裝的方法。我們假定您已經(jīng)掌握了在 HelloWorld 和 記事本(Notepad)指南中介紹的創(chuàng)建和運(yùn)行AutoIt腳本的方法,并且懂得使用 AutoIt 窗口信息工具 來讀取窗口標(biāo)題及文字等信息。
這個版本的 WinZip 的安裝程序總共有11個對話框是需要點(diǎn)擊按鈕(通常是 下一步(N))才能繼續(xù)進(jìn)行安裝的。我們將要寫的腳本很簡單,就是要等待這些對話框出現(xiàn)然后點(diǎn)擊適當(dāng)?shù)陌粹o即可。通常安裝這類程序會有很多窗口的標(biāo)題是一樣的(WinZip 安裝),因此我們必須使用窗口文字來判斷不同的窗口。下面提供了每個對話框的截圖,您可以點(diǎn)擊這些圖片來查看它們在 窗口信息工具 中顯示的相應(yīng)信息。
首先創(chuàng)建一個文件夾,復(fù)制WinZip的安裝程序(winzip90.exe)到此目錄,新建一個名為 winzipinstall.au3 的腳本文件置于同一個文件夾之下。
現(xiàn)在我們將一步一步來講解編寫腳本自動安裝程序的步驟。每個對話框的截圖下都會有進(jìn)行到該步驟的相應(yīng)腳本代碼(別忘了可以點(diǎn)擊這些圖片來查看它們在 窗口信息工具 中顯示的相應(yīng)信息)。此外您還可以查看我提供的 完整的腳本 以作參考。
第一行代碼非常簡單,我們要運(yùn)行名為 winzip90.exe 的這個安裝程序。因此此行腳本應(yīng)該是這樣的:
Run("winzip90.exe")
由于不是官方的英文原版,因此第一個顯示的對話框?qū)⑹菨h化作者的聲明(也就是廣告,^_^):
很明顯,要繼續(xù)裝WinZip的話就不能不按確定了。由上圖可知 確定 這個按鈕是默認(rèn)按鈕,因此我們先等待此信息框出現(xiàn)且處于激活狀態(tài)然后發(fā)送 回車 鍵擊動作即可。那么腳本代碼就是下面這樣了:
WinWaitActive("WinZip 9.0 SR-1 Build 6224 漢化版", "炎之川")
Send("{ENTER}")
按下確定后第二個對話框?qū)䦶棾觯?/p>
因此我們需要等待此窗口彈出且處于激活狀態(tài),接著要按第一個按鈕(Setup),留意到該按鈕名的S帶有下劃線,因此發(fā)送鍵擊 ALT-s 即可點(diǎn)擊它。那么腳本代碼就是下面這樣了:
WinWaitActive("WinZip Self-Extractor - instA.exe", "&Setup")
Send("!s")
(別忘了可以點(diǎn)擊這些圖片來查看它們在 窗口信息工具 中顯示的相應(yīng)信息)
如無 意外,接著就會出現(xiàn)安裝路徑選擇對話框:
我們需要等待該窗口變成活動窗口,然后如果您喜歡的話就可以按下回車表示接收此默認(rèn)安裝路徑。那么腳本代碼就應(yīng)該是下面這樣了:
WinWaitActive("WinZip 安裝程序", "到下列文件夾")
Send("{ENTER}")
但為了作更全面的示范,考慮到會有一些用戶不喜歡它默認(rèn)設(shè)置的安裝路徑,因此我們來做一個小小的修改,把路徑改為自定義的。以D:\Program Files\WinZip為例,當(dāng)然我們不需要也不應(yīng)該按那個 瀏覽(B)... 按鈕來定向到此目錄,這樣做實(shí)在是太麻煩而且不可靠,我們直接在它的編輯框中輸入指定路徑名即可;另外還要提醒一下,盡管程序?yàn)榱朔奖阌脩粢呀?jīng)令輸入框成為可輸入狀態(tài),也就是說可以通過發(fā)送鍵擊動作直接輸入路徑名,但為了增強(qiáng)腳本的可靠性,我們還是使用窗口信息工具來獲取該編輯框的名稱(點(diǎn)擊上面的圖片即可查看),結(jié)果為Edit1,因此修改上面的腳本代碼,變成下面這樣:
WinWaitActive("WinZip 安裝程序", "到下列文件夾")
ControlSetText("WinZip 安裝程序", "到下列文件夾", "Edit1", "D:\Program Files\WinZip" )
Send("{ENTER}")
接下來會出現(xiàn)的就是WinZip的功能介紹對話框:
請注意,此對話框的標(biāo)題和前面的是完全一樣的,都是 WinZip 安裝 ——事實(shí)上幾乎接下來的所有窗口都是使用這個標(biāo)題!因此,為了準(zhǔn)確區(qū)分這些窗口,我們還需要再加上一個窗口文字,同時要盡可能使用那些相對具有唯一性的文字。因此我們可選用 WinZip 的功能包括 這些文字。當(dāng)窗口出現(xiàn)之后我們只要按下 ALT-n 鍵即可:
WinWaitActive("WinZip 安裝", "WinZip 的功能包括")
Send("!n")
接下來將會出現(xiàn)許可協(xié)議窗口:
等待該窗口出現(xiàn)然后按下 ALT-y 表示接收此協(xié)議:
WinWaitActive("許可協(xié)議")
Send("!y")
接下來將會是有著類似風(fēng)格的幾個對話框,因此不再作詳細(xì)的解釋,每張圖片下都會有進(jìn)行到該步驟時相應(yīng)的腳本代碼:
WinWaitActive("WinZip 安裝", "快速入門")
Send("!n")
WinWaitActive("WinZip 安裝", "在兩種界面中進(jìn)行切換")
Send("!c")
Send("!n")
WinWaitActive("WinZip 安裝", "典型設(shè)置(推薦)(&E)")
Send("!e")
Send("!n")
WinWaitActive("WinZip 安裝", "WinZip 需要與壓縮文件格式進(jìn)行關(guān)聯(lián)")
Send("!n")
這是安裝程序的最后一個對話框。請注意,完成 這個按鈕沒有定義熱鍵——不過幸運(yùn)的是它“正好”是該對話框的默認(rèn)按鈕,因此我們只需按下回車鍵即可選到它。如果不是這樣的話,我們可能需要使用TAB鍵在各個控件之間進(jìn)行切換,或者更好的方法是使用 ControlClick 函數(shù)。
WinWaitActive("WinZip 安裝", "安裝已完成")
Send("{ENTER}")
安裝完成后 WinZip 會自動啟動:
等待WinZip的主窗口出現(xiàn)然后使用 WinClose 函數(shù)關(guān)掉它即可。
WinWaitActive("WinZip", "打開壓縮文件")
WinClose("WinZip", "打開壓縮文件")
為了使腳本更加可靠,我們還需要盡可能考慮各種意外的發(fā)生,比如該軟件已經(jīng)被用戶安裝好了,那么當(dāng)在第二個對話框中按下 Setup 這個按鈕時將會出現(xiàn)意料之外的窗口:
很明顯,既然程序已經(jīng)被安裝好了,我們就不必再進(jìn)行后面的操作了,因此我們需要按下 取消 這個按鈕或關(guān)閉此窗口皆可:
If WinExists("WinZip Setup", "注冊副本已安裝") Then
WinClose("WinZip Setup", "注冊副本已安裝")
;EndIf ;還需要添加下面的腳本才能結(jié)束此表達(dá)式
WinWaitActive("WinZip 安裝程序", "軟件沒有成功安裝")
WinClose("WinZip 安裝程序", "軟件沒有成功安裝")
AdlibEnable("end")
Func end()
If WinExists("WinZip Setup", "注冊副本已安裝") Then
WinClose("WinZip Setup", "注冊副本已安裝")
WinWaitActive("WinZip 安裝程序", "軟件沒有成功安裝")
WinClose("WinZip 安裝程序", "軟件沒有成功安裝")
Exit
EndIf
EndFunc
;AdlibDisable() ;在腳本的最后位置添加此行
大功告成!現(xiàn)在運(yùn)行一下 winzipinstaller.au3 這個腳本吧,您會看到WinZip將在很短的時間之內(nèi)被安裝好!在此頁使用的技術(shù)也可用來實(shí)現(xiàn)大多數(shù)程序的自動化安裝。
下面給各位讀者一個小小的練習(xí)題吧,請嘗試再編寫一次這個腳本,但不要使用 Send 函數(shù)(它會向激活窗口發(fā)送鍵擊動作),試試用 ControlClick 函數(shù)吧,這會令腳本更加可靠。在此之前您或許應(yīng)該熟讀關(guān)于 控件(Controls) 的說明。