スクリーンショットで、アクションの順序を示す番号を見ることが出来ます。アクションの相対的な順序を指示する方がもっと簡単です。来るかを指定すれば良いのです。追加のアクションスタンダード・アクションには、この他にも、既定ではスケジュールされない利用可能なアクションが数多くあります。インストールの後でシステムを再起動するようにユーザーに指示します。/></InstallExecuteSequence>再起動の必要性が何らかの条件(例えば、インストーラが走っているオペレーティング・システム)に依存する場合は、条件文を使います。After='InstallFinalize'>Version9X</ScheduleReboot></InstallExecuteSequence>予定に入れたり予定を変更したり出来るのは、いわゆるスタンダード・アクションだけではありません。二~三のカスタム・アクションも同様に出来ます(ここで言うカスタムとは、通常のイベントの進行には出現しないけれども、望むときには、いつでもどこでも使うことが出来る、という意味です)。非常によくある要望として、インストールしたアプリケーションを起動したい、というものがあります。カスタム・アクションはソース・ファイルの二箇所で言及しなければなりません。開始タグの間で)、カスタム・アクションを定義します。タグで何をするかを指定します。識別子を使って実行ファイルを参照します。コマンド・ラインも指定しなければなりませんが、必要でなければ空文字列にしておくことも出来ます。/>第二に、通常と同じ方法で、アクションを予定に入れなければなりません。整合する属性のペアで指定します。タグの中で条件を定義することが出来ます。ここでは、インストールを実行する場合にだけ実行ファイルを起動し、製品を削除するときは起動しないように、条件を設定する必要があります。間違いではありません。製品がインストールされているかどうかを示す定義済みプロパティですが、その値が取得されるのは、インストーラの初期化時であり、完了時ではありません。ファイルのビュワーや、特別な設定ユーティリティ)を起動したいことがあります。タグの識別子を参照するようにします。スケジューリングの方法は同じです。/>また、ユーザーのマシン上にある他のどんな実行ファイルでも、プロパティで名前を指定すれば、起動することが出来ます。属性を使って、アクションの完了をどのように扱うかを指定することも出来ます。カスタム・アクションの完了を待って、その戻り値をチェックします。アクションの完了を待ちますが、戻り値は無視します。非同期的にアクションを走らせますが、インストーラはスケジュールされた一連のイベントの最後で、アクションから戻り値が返ってくるのを待ちます。アクションを起動して、その後は放置します。この場合、起動されたアクションは、インストーラが終了した後も走り続けることが出来ます。ファイルを表示したりする場合は、この最後の値を使います。通常の機構では表示できないエラーに遭遇した場合に、エラー・メッセージを表示してインストールを終了することが出来ます。識別子を入れることも出来ます。Error='この謎は解けません。/>プロパティの値を別のプロパティの値に割り当てる直接的な方法はありません。カスタム・アクションを使うと、この間隙を乗り越えることが出来ます。属性は書式指定文字列でも構いませんので、ちょっとした文字列操作もすることが出来ます(パスの参照には、常に末尾のバックスラッシュが自動的に追加されている事に注意して下さい。バックスラッシュをもう一つ余計に追加する必要はありません)。/>ディレクトリも、同様のパスを示す書式指定文字列として設定することが出来ます。解決方法を提供してくれない非常に特殊なアクション(例えば、ユーザーが入力した登録キーの妥当性と整合性をチェックすること)に対しては、もう一つ別のタイプのカスタム・アクションを使うことが出来ます。あれば承認する、という極めて安直な手法を使います。そのままコンパイル出来ます。別のコンパイラでコンパイルする場合でも、必要な修正は、(有るとしても)ほんの少しでしょう。リンクする必要があります。ダウンロードして下さい)。モードでのみ実行出来ます。Error='無効なキーです。インストールを中止します。/>簡単に説明します。無しのモードで走ることを許可しません。それらのモードでは、ユーザーが登録キーを入力することが出来ないからです。特別な意味を与えているからです。入れてエスケープしなければなりません。この実例の場合は、等価であることをチェックしているだけなので、エスケープしなくても済みます。包むようにするのは、良い習慣です。衝突を招かずに済みます。どの機能が必要で、どこにインストールしたいかを決定した後、インストーラに実際のインストールを開始するように指示する時です。いう関数を呼び出します。カスタム・アクションとの間で引数を渡したり戻り値を受け取ったりするためには、プロパティを使うしか方法がないということを覚えておいて下さい。そのプロパティの名前はすべて大文字でなければなりません。ものとは見なしません。いう名前の第二のカスタム・アクションを第一のアクションの後に走らせるように予定します。プロパティがゼロであった場合にだけ走らせます。その場合、このカスタム・アクションはエラー・メッセージを表示して、インストールを中止します。値に関心を持つのは、インストールの時だけです。これらのアクションがどのように呼び出され、お互いにどのように関係しているのかを理解するためには、詳細ロギングを有効にしてインストーラを走らせてみるのが良いでしょう。ログは本当に詳細なものになりますから、実際に起っている事を記録している箇所を探すためには、テキスト・エディタを使って、プロパティやカスタム・アクションの名前(“PID”でも大丈夫です)を検索するのが良いでしょう。パッケージに含まれているのではなくて、インストールされている場合は、次のように記述することが出来ます。コントロールのカスタム・アクションいや、確かに、前の章で私たちがしたことは、エレガントではありませんでした。私たちは、後の段階になってからインストールを中止するのではなく、ユーザーがキーを入力するその場でチェックし、警告を表示して、キーを入力し直すチャンスをユーザーに提供するべきです。すればそれを達成できるか、見ていきましょう。カスタム・アクションは、二種類のユーザー・インタフェイス・コントロール、プッシュ・ボタンとチェック・ボックスにリンクすることが出来ます。属性がカスタム・アクションの名前を保持します。呼ぶカスタム・アクションが引き起こされます。タグの中にスケジュールする必要は有りません。カスタム・アクションの定義はソースの中に残ります。/>ユーザーに警告をするためにメッセージ・ボックスが要ります。これも、また、前に作成した「ユーザー情報」ページと同じようなダイアログです。タグを使って参照することも出来ます。セクションの直下で定義することにします。入力されたユーザー・キーは無効です。印刷されているキーを入力してください。</Control></Dialog>「ユーザー情報」ページも更新しなければなりません。言うのは、このダイアログからカスタム・アクションと新しいメッセージ・ボックスを呼び出さなければならないからです。中の関数が呼ばれます(条件が真に評価されるため、毎回呼ばれます)。