レコーダファイルは,基本的に次の手順で作成します。
リモートインストールするソフトウェアのインストーラを起動して,そのインストール手順を調査します。このとき,インストーラが正常に動作しないソフトウェアは,JP1/NETM/DMでのリモートインストールの対象にはなりません。
なお,リモートインストールするソフトウェアがWindows Installerに対応している場合は,ソフトウェアのインストール画面をカスタマイズすることをお勧めします。終了時とエラー発生時にだけダイアログが表示されるようカスタマイズしてください。これによって,調査が必要なインストール手順が少なくなり,レコーダファイルの作成が容易になります。
次の項目について,インストール方法をOSごとに区別して調べ,インストール手順を紙に記録してください。
インストーラが,ユーザに対して「何を,どのような順序で,どういった操作を要求してくるか」を調査する必要があります。何回か手動でインストールしてみて調査し,次の項目について一覧表にまとめてください。
なお,インストール方法や,インストールするPCの状態(OSの種類,ハードディスクの空き容量,メモリの空き容量,インストール済みのソフトなど)によって,インストールの操作は変わります。そのため,入念に調査する必要があります。
例えば,Acrobat Reader 5.05をインストールする場合,次の表に示す一覧になります。
表D-1 Acrobat Reader 5.05のインストールの流れ
# | テキスト | クラス名 | 操作 | 親子属性 | 親ウィンドウ | 備考 |
---|---|---|---|---|---|---|
1 | Acrobat Reader 5.0.5 のセットアップ | #32770 |
| 親 | なし | なし |
2 | インストール先の選択 | #32770 |
| 親 | なし | 2回目は#4のあとへ |
3 | ディレクトリの選択 | #32770 |
| 子 | #2 | インストール先を変更する場合だけ表示 |
4 | セットアップ | #32770 |
| 子 | #3 | インストール先を変更する場合だけ表示 |
5 | セットアップの完了 | #32770 |
| 親 | なし | なし |
レコーダファイルは,Visual TestのTest Basic言語で記述します。ボタンをクリックする,文字を入力する,キーを押すなどの操作は,すべてVisual Testで用意されている関数を使います。これらの関数には,引数が必要です。ダイアログボックスのウィンドウハンドル,ウィンドウクラス,タイトルのテキストといったダイアログボックスの属性を指定しなければなりません。そのため,「(a) インストール画面の順序と属性」で説明した作業のダイアログボックスの属性を調査する場合,Visual Testに付属する「ウィンドウ情報ユーティリティ」を使って記録することをお勧めします。
「ウィンドウ情報ユーティリティ」は,次のように使用します。
図D-2 [ウィンドウ情報]ダイアログボックスでウィンドウの情報を取得する流れ
図D-3 [ウィンドウ情報]ダイアログボックスでボタンの情報を取得する流れ
レコーダファイルは次のような構成にするとわかりやすく作成できます。通常は網掛け部分だけをインストーラに合わせて作成してください。
図D-4 レコーダファイルの構成例
メイン処理の部分は,ユーザが誤って表示されたダイアログボックスに応答したり,キーボードやマウスを操作したりしたため,インストールが中断するような事態に備えて,レコーダファイルを作成することをお勧めします。レコーダファイルの処理例を次に示します。
図D-5 レコーダファイルの処理例
レコーダファイルは,ループ中で繰り返しダイアログボックスを検索します。したがって,ユーザが誤ってAウィンドウに応答してBウィンドウが表示された状態でも,レコーダファイルはAウィンドウの処理をスキップしてBウィンドウの処理を実行できます。
レコーダファイルを作成する場合は出力されるウィンドウを調査し,そのウィンドウに対する処理を並べます。このような処理構造によって出力されるウィンドウの順序やユーザの操作に関係なく処理を完結できます。
記録したインストール手順を基に,Visual TestのTest Basic言語でレコーダファイルをコーディングします。まず,Visual Testの「シナリオレコーダー」を使ってインストール手順を自動的に生成させます。この自動生成されたコードは,レコーダファイルの原形になります。その後,自動生成されたインストール手順に修正を加え,コンパイルして,JP1/NETM/DMで使用できるレコーダファイルにします。
Visual Testの「シナリオレコーダー」を使って,次のような手順でレコーダファイルの原形を作成します。
図D-6 [シナリオレコーダー]ダイアログボックス
図D-7 [シナリオレコーダー(一時停止)]ダイアログボックス
図D-8 自動生成されたイベントの表示
レコーダファイルの作成は,インストーラが出力するすべてのダイアログボックスの処理を組み合わせて作成します。
ダイアログボックスの処理は,次の処理を一つのパーツとしてループ中にシーケンシャルに並べます。
ダイアログボックスの検索は,WFndWindC関数を使用します。WFndWindC関数はダイアログボックスの「テキスト」と「クラス名」を入力情報としています。したがって,出力するダイアログボックスの「テキスト」と「クラス名」を調査する必要があります。
ダイアログボックスを調査するツールにはVisual Testの「ウィンドウ情報ユーティリティ」があります。
ダイアログボックスに対する操作には,次のような種類があります。
シナリオレコーダーで記録したイベントには,ダイアログボックスの情報やそのダイアログボックスに対する処理が記録されています。シナリオレコーダーで記録したイベントの例を次に示します。
図D-9 シナリオレコーダーで記録したイベントの例
このデータから次のようにレコーダファイルのダイアログボックス処理としてコーディングしてください。
図D-10 レコーダファイルのダイアログボックス処理としてのコーディング例
レコーダファイルを作成する上でダイアログボックスの検索に必要なWFndWndC関数の仕様について説明します。
単純なソフトウェアのインストーラは,単純な構造のレコーダファイルで配布できます。しかし,インストーラによってはもう少し複雑なレコーダファイルを作成する必要があります。
ここでは,同一ウィンドウ名が出力される場合のレコーダファイルの作成方法,および子ウィンドウがある場合のレコーダファイルの作成方法について説明します。
レコーダファイルは,あるウィンドウ名に対してどのような応答をするかを決めて作成します。しかし,インストールするソフトウェアのインストーラによっては,同一ウィンドウ名で異なる応答が必要な場合があります。ここでは同一ウィンドウ名の対処方法について説明します。
次のような同一ウィンドウ名で異なる応答が必要な場合は,ウィンドウ内のテキストを判断材料に使います。
図D-11 同一ウィンドウ名で異なる応答が必要な画面の例
二つの画面とも「ようこそ」というウィンドウ名ですが,応答は異なります。このような場合は,WStaticExists関数を使って文字列を検索させます。
コメントの情報は「ウィンドウ情報ユーティリティ」でコメント部分にアイコンをドラッグ&ドロップすることで取得できます。
図D-12 [ウィンドウ情報]ダイアログボックスでコメントの情報を取得する流れ
同一ウィンドウ名のインストーラに対するレコーダファイルの作成例を示します。
図D-13 同一ウィンドウ名のインストーラに対するレコーダファイルの作成例
WStaticExists関数の第1引数を「+」から始めた場合,続きのテキストを含むテキストが存在すると「true」が返されます。長いテキストは「+」を付けることで前方一致で比較することができます。
このように,同じウィンドウ名の場合は,ウィンドウ内に異なる個所を見つけることで識別させます。そのほかにボタンの名称なども使用できます。
実際のソフトウェアのインストーラにはウィンドウが階層的になっていることがあります。具体的には「子ウィンドウ」と呼ばれ,親ウィンドウからのアクションで表示されます。例えば,次のようなウィンドウのことを示します。
図D-14 子ウィンドウの例
この場合,「JP1/Script セットアップ」が親ウィンドウで「ディレクトリの選択」が子ウィンドウです。
このような環境で親ウィンドウをアクティブにしようとすると,WFndWndC関数がランタイムエラーとなってしまいます。
子ウィンドウは,親ウィンドウが出力されなければ出力されません。この特性を利用して,親ウィンドウがあるときに子ウィンドウの有無を確認し,子ウィンドウがある場合には子ウィンドウを処理し,子ウィンドウがない場合は親ウィンドウの処理をするようにします。処理例を次に示します。
図D-15 子ウィンドウがある場合の処理例
具体的なレコーダファイルの記述例を次に示します。
図D-16 子ウィンドウがある場合のレコーダファイルの記述例
レコーダファイルの中では,Visual Testの多くの関数を使用できます。しかし,これだけではJP1/NETM/DMと連動させるには不十分なため,JP1/NETM/DMの拡張機能を使用します。そのための修正方法を次に示します。
これまでの手順で作成したレコーダファイルのソースをコンパイルします。
図D-17 DMPTEST.INCファイルのコピー
Visual Testでコンパイルしたレコーダファイル(コンパイル結果のファイル)をパッケージャに組み込みます。レコーダファイルを決められたディレクトリに決められた拡張子でコピーすることで,組み込みは終了します。なお,レコーダファイル格納ディレクトリには,レコーダファイル以外のファイルは格納しないでください。
インストール方法が複数あるかどうかで拡張子が変わります。なお,拡張子は,コンパイル時に生成されたデフォルトのままで使用してください。インストール方法が1種類の場合の拡張子は,Visual Test 6.0でコンパイルした場合は「*.PC6」,Visual Test 4.0でコンパイルした場合は「*.PCD」です。
コピー先のディレクトリを次に示します。説明中の<RecordFileDirectory>という部分は,インストール定義ファイルのRecordFileDirectory項目で指定するディレクトリです。