このチュートリアルではWinZip 9 SR-1のインストールの自動化方法について説明します。AutoItスクリプトの作成・実行とウィンドウのタイトルとテキストを調べるためのAutoIt Window Information Toolの使用方法についてはチュートリアルHelloWorldとチュートリアルNotepadを見て理解しているものとします。
WinZipのインストーラは約10のダイアログボックスで構成されており、インストールするにはそのボタン(多くはNextボタン)を押していかなければなりません。これからダイアログボックスの出現を待って適切なボタンを押す、というシンプルなスクリプトを書いていきましょう。一般的にこのタイプのインストールダイアログのウィンドウタイトル(WinZip Setup)は変化しません。従ってウィンドウを区別するためにはウィンドウテキストを使用する必要があります。それぞれのダイアログのスクリーンショットを示します。クリックすることでそのダイアログに対するInformation Toolの出力をみることができます。
まずWinZipインストーラとこれから作るスクリプトファイルのためのディレクトリを作成します。WinZipインストーラをこのディレクトリにコピーし、winzipinstall.au3という名前の空のスクリプトを作成してください。
これから手動でインストールをおこないながらスクリプトを書いていきましょう。それぞれのダイアログを自動化するためのスクリプトをそれぞれの図の下に示します(図をクリックすればAutoIt Window Information Toolの出力を見られます)。また参考として完成したスクリプトを見ることもできます。
スクリプトの1行目は簡単です。winzip90.exeインストーラを起動したいので1行目は次のように書きます。
Run("winzip90.exe")
最初のダイアログが現れます。
このウィンドウが現れてアクティブになるまで待ちます。その後SetupボタンをクリックするためにキーストロークALT-sを送信します。スクリプトは次のようになります。
WinWaitActive("WinZip® 9.0 SR-1 Setup", "&Setup")
Send("!s")
(図をクリックするとAutoIt Window Information Toolの出力を見られることを忘れないでください。この出力はキーボードからの入力が難しい特殊な(R)文字がタイトルに含まれる場合、特に重要です。)
次にインストール場所をたずねるダイアログが現れます。
このスクリーンがアクティブになるのを待って、インストール場所を許可するためにENTERをクリックします。スクリプトは次のようになります。
WinWaitActive("WinZip Setup", "into the following folder")
Send("{ENTER}")
次にWinZip Features ダイアログが現れます。
このウィンドウが先ほどのWinZip Setupと全く同じタイトルを持つことに気づきましたね - 実はセットアップのダイアログは全てこのタイトルなのです!これらのウィンドウ間の区別をおこなうためにはウィンドウのテキストも使わなければいけません - それぞれのスクリーンの中からできるだけ他と違うテキストを探してください。今回、 わたしはWinZip features includeを選びました。ウィンドウが現れたらALT-nを押します。
WinWaitActive("WinZip Setup", "WinZip features include")
Send("!n")
次にライセンスダイアログが現れます。
ウィンドウが現れるのを待って、ライセンスに同意するためにALT-yを押します。
WinWaitActive("License Agreement")
Send("!y")
セットアップは同じ形式のダイアログで続きます。それぞれのダイアログの図を自動化のために必要なスクリプトと共に示します。
WinWaitActive("WinZip Setup", "Quick Start Guide")
Send("!n")
WinWaitActive("WinZip Setup", "switch between the two interfaces")
Send("!c")
Send("!n")
WinWaitActive("WinZip Setup", "&Express setup (recommended)")
Send("!e")
Send("!n")
WinWaitActive("WinZip Setup", "WinZip needs to associate itself with your archives")
Send("!n")
これがセットアップの最後のダイアログです。Finishボタンにはキーボードショートカットが無いことに気づきます - 幸運なことにこのボタンはダイアログのデフォルトのボタンです。従ってこれを選ぶためにはENTERを押すだけでいいのです。もしデフォルトでなかった場合TABを押してコントロールを移動するか、もっといい方法としてControlClick関数を使う必要があります。
WinWaitActive("WinZip Setup", "Thank you for installing this evaluation version")
Send("{ENTER}")
インストール後、WinZipが自動で起動します。
WinZipのメインウィンドウが現れるのを待って、これをWinClose関数を使って閉じましょう
WinWaitActive("WinZip (Evaluation Version)")
WinClose("WinZip (Evaluation Version)")
ここに完成したスクリプト示します - それぞれのダイアログごとに分けてコメントがついてることがわかります。コメントすることで読みやすくなり、また将来の修正(次のバージョンのWinZipは少し変更があるかもしれません)を簡単にします。
さて!winzipinstaller.au3を実行してWinZipが数秒でインストールされる様子を見てみましょう!このチュートリアルでのテクニックを使えばほとんどのプログラムのインストールを自動化できます。
演習として、ボタンのクリックにSend関数(アクティブなウィンドウにキーを送信)の代わりにより信頼性の高いControlClickを使ってにスクリプトを書き直してみてください。そのためにはControlsを読む必要があるでしょう。