iPX社員によるブログ

iPX社員が"社の動向"から"自身の知見や趣味"、"セミナーなどのおすすめ情報"に至るまで幅広い話題を投下していくブログ。社の雰囲気を感じ取っていただけたら幸いです。

Windows アプリケーションの展開方法を学ぼう(後編)

大分ご無沙汰になってしまいました。 iPX のコクブンです。
さて、前編の記事では、 WiX Toolset を使用した基本的なインストーラの作成方法についてご紹介しました。
後編ではインストーラの UI を表示する方法、またその UI のカスタマイズ方法について紹介したいと思います。

設定用の UI を表示する

前編の最後に書いた様に、インストーラを作成していると、どうしても「インストールするモジュールを指定」したり、「インストール先を変更」したりするための UI が必要となるケースが多いです。
しかし、これもやはり 1 から構築するのはそれ相応の手間がかかってしまいます。
そこで、 WiX Toolset ではそうしたニーズに対応するための標準 UI が提供されています。
WiX Toolset に含まれる主な標準 UI を紹介します。

画面 ID 概要
AdvancedWelcomeEulaDlg 使用許諾契約 (End-User License Agreements) を表示するダイアログです。 LicenseAgreementDlg と違い、画面下に「詳細設定 (Advanced) 」と「インストール (Install) 」ボタンが表示されるため、デフォルトインストールを手早く実行出来る様になっています。
BrowseDlg インストール先のフォルダを選択するダイアログです。( InstallDirDlg で「参照 (Browse) 」ボタンを押した際に表示されるダイアログ)
CancelDlg ユーザーがインストールのキャンセルを要求した際に、キャンセルの確認を行うダイアログです。
CustomizeDlg 機能選択、インストール先フォルダ指定、ディスク使用量の表示を行えるダイアログです。
DiskCostDlg インストールするドライブを選択出来、そのドライブの使用領域情報を表示可能なダイアログです。
ErrorDlg インストーラの実行中に発生したエラーを通知するダイアログです。ユーザーが操作の再実行を指示することも出来る様になっています。
ExitDlg インストーラによるセットアップが正常に完了した際に表示されるダイアログです。オプションでチェックボックスとカスタムのテキストを表示することが可能になっています。
FatalError インストーラによるセットアップに失敗した際に表示されるダイアログです。
FeaturesDlg インストールする機能を選択するダイアログです。
FilesInUse インストーラによって更新する対象ファイルが他のアプリケーションによって使用中の場合に表示されるダイアログです。ユーザーは「再試行 (Retry) 」、「無視 (Ignore) 」、「終了 (Exit) 」から処理を選択することが出来ます。
InstallDirDlg インストール先のフォルダを入力可能なダイアログです。入力されたフォルダがインストール先として有効であるかを検証する機能も持っています。
InstallScopeDlg すべてのユーザー向けにインストールするか、インストールを実行しているユーザー用にインストールするかを選択可能なダイアログです。
InvalidDirDlg インストール先として指定されたフォルダが無効である場合に表示されるダイアログです。
LicenseAgreementDlg 使用許諾契約 (End-User License Agreements) を表示するダイアログです。
MaintenanceTypeDlg インストール済製品のインストーラを実行した際に、対象製品の修復や削除のメニューを提供するダイアログです。
MaintenanceWelcomeDlg インストール済製品のインストーラを実行した際にアナウンス情報を表示するダイアログです。
MsiRMFilesInUse FilesInUse と似た機能を有しますが、 Windows の再起動マネージャとの対話機能も持つダイアログです。ユーザーは対象のアプリケーションを自動的に閉じるか、セットアップ完了後に再起動を行うかを選択することが出来ます。
OutOfDiskDlg 選択したドライブのディスク容量が不足している場合に通知メッセージを表示するダイアログです。
OutOfRbDiskDlg OutOfDiskDlg と似た機能を有しますが、 Windows Installer のロールバック機能を無効にすることが出来ます。
PrepareDlg インストーラ機能時のセットアップ初期化中に表示されるシンプルな進捗ダイアログです。
ProgressDlg インストール実行中に進捗状況と実行アクションの情報メッセージを表示するダイアログです。
ResumeDlg 中断されたセットアップを再開する際に表示されるダイアログです。
SetupTypeDlg インストール形式を「標準 (Typical) 」、「カスタム (Custom) 」、「完全 (Complete) 」から選択することが出来るダイアログです。
UserExit ユーザーによってセットアップがキャンセルされた場合に表示されるダイアログです。
VerifyReadyDlg インストールを開始する直前に表示されるダイアログです。システムへの変更を行う前にユーザーに最終確認を求めることが出来ます。
WaitForCostingDlg ディスクコストの計算中に表示されるダイアログです。
WelcomeDlg 対象の製品がインストールされていない状態でインストーラを実行した際に表示されるエントランス画面を提供するダイアログです。
WelcomeEulaDlg 使用許諾契約 (End-User License Agreements) を表示するダイアログです。 Minimal UI セット(後述)でのみ利用され、ユーザーの同意を受けてインストールを開始するために使用します。

また、この標準 UI に対して、更に "Mondo", "FeatureTree", "Minimal", "InstallDir", "Advanced" の 5 種類のシーケンスが用意されており、これらのシーケンスを利用することで、比較的容易に UI を持ったインストーラを提供することが可能になっています。
5 つのシーケンスを順に紹介しておきます。

Mondo

f:id:ipx-writer:20170811183529p:plain:w360
Mondo は WiX Toolset で提供されている標準 UI を全て提供するシーケンスです。
使用許諾画面、インストール形式(「標準」、「カスタム」、「すべて」)の選択、機能選択、インストール先の選択、インストール時の必要容量の確認等を行う画面が提供されます。また、メンテナンス用の画面も含まれています。

FeatureTree

f:id:ipx-writer:20170811183541p:plain:w360
FeatureTree は Mondo からインストール形式の選択画面を除外したシーケンスです。(常に「カスタム」形式でのインストールとみなされます)

Minimal

f:id:ipx-writer:20170811183514p:plain:w360
Minimal は WiX Toolset で提供されているシーケンスの中で最も小規模なもので、使用許諾画面のみが提供されます。
インストール先の変更も出来ないため、アドオン等、インストール先を固定する必要のあるモジュールのインストール等で利用されます。

InstallDir

f:id:ipx-writer:20170811183551p:plain:w360
InstallDir は Minimal にインストール先の選択画面を追加したものになります。
カスタムインストールが不要なアプリケーションのインストーラを作成する際に利用されます。

Advanced

Advanced は任意の画面を組み合わせ可能なシーケンスです。(最小構成は Minimal と同等)

UI セットの利用方法

先に紹介した UI シーケンスをインストーラで利用するには、 UIRef タグで対象の UI セットを読み込みます。

<Product>
  <UIRef Id="WixUI_InstallDir" />
</Product>

※各 UI シーケンスに対応する UI セットは「 "WixUI_" + シーケンス名」で定義されています。

UI のカスタマイズ

この様に、標準 UI を使うことで、色々なパターンの UI を提供することが可能になります。
しかし、状況によっては標準 UI にない画面*1を提供したいケースもあると思います。
その場合、独自の UI を設計して表示させることも可能です。

独自 UI の作成

独自の UI (ダイアログ)を作成する際は、 Dialog タグを使用します。
独自 UI のダイアログの例を見てみましょう。

  • SampleDialog.wxi
<UI>
  <Dialog Id="SampleDialog" Width="400" Height="300" NoMinimize="yes" Title="サンプル画面">
    <Control Type="Text" Id="Desc" Width="350" Height="35" X="10" Y="10" Text="サンプル画面の概要" />
    <Control Type="Line" Id="DescLine" Width="390" Height="15" X="5" Y="50" />
    <Control Type="PushButton" Id="Next" Width="90" Height="20" X="200" Y="275" Text="次へ">
      <Publish Event="EndDialog" Value="Return">1</Publish>
    </Control>
    <Control Type="PushButton" Id="Cancel" Width="90" Height="20" X="300" Y="275" Text="キャンセル">
      <Publish Event="SpawnDialog" Value="CancelDialog">1</Publish>
    </Control>
  </Dialog>
</UI>
  • Dialog タグ

Dialog タグには以下の属性を設定可能です。
※ Id, Height, Width の各属性は必須指定項目です。

属性名 設定する値
Id ダイアログの識別子を指定します。
識別子として任意の文字列を指定可能ですがインストーラの中で一意となる値を指定する必要があります。
CustomPalette ダイアログ内の画像の表示にカスタムパレットを使用する場合は "yes" を指定します。
ErrorDialog このダイアログをエラーダイアログとする場合は "yes" を指定します。
Height ダイアログの縦幅を指定します。
Hidden このダイアログを非表示状態にする場合は "yes" を指定します。
KeepModeless このダイアログが表示される際にモードレスダイアログを有効にしたままとする場合は "yes" を指定します。
LeftScroll 縦スクロールバーをダイアログの左側に表示する場合は "yes" を指定します。
Modeless ダイアログ表示時にモードレス状態とする場合は "yes" を指定します。
NoMinimize ダイアログを最小化可能にする場合は "yes" を指定します。
RightAligned ダイアログ内のテキストを全て右詰めにする場合は "yes" を指定します。
RightToLeft テキストの表示方向を右から左にする場合は "yes" を指定します。
SystemModal このダイアログをシステムモーダル*2として表示する場合は "yes" を指定します。
Title ダイアログのタイトルを指定します。
TrackDiskSpace ダイアログから定期的にディスク使用量の変更状況を確認する場合は "yes" を指定します。
Width ダイアログの横幅を指定します。
X ダイアログの初期表示横位置をパーセント値で指定します。
既定値は 50 です。
Y ダイアログの初期表示縦位置をパーセント値で指定します。
既定値は 50 です。
  • Control タグ

Dialog タグ内では Control タグで必要な UI コントロールを配置していきます。
Control タグには以下の属性を設定可能です。
※ Id, Height, Type, Width, X, Y の各属性は必須指定項目です。

属性名 設定する値
Id コントロールの識別子を指定します。
識別子として任意の文字列を指定可能ですがインストーラの中で一意となる値を指定する必要があります。
Bitmap 対象のコントロールの表示にビットマップイメージを使用する場合は "yes" を指定します。
この属性は Type 属性に "RadioButton", "PushButton" のいずれかが指定された場合にのみ指定します。
Cancel 対象のコントロールの動作の実行にエスケープキーを使用する場合は "yes" を指定します。
CDROM 対象のコントロールが CD ドライブを対象とする場合は "yes" を指定します。
この属性はドライブレターやディレクトリを選択・表示するコントロールにのみ指定可能です。
CheckBoxPropertyRef 別のコントロールに紐づけられたプロパティを対象のコントロールにも紐づける際にそのプロパティ名を指定します。
この属性を使用する際は "Property" 属性は指定できません。
この属性は Type 属性に "CheckBox" が指定された場合にのみ指定します。
CheckBoxValue チェックボックスがチェックされた際に紐づけられたプロパティに設定する値を指定します。
この属性は Type 属性に "CheckBox" が指定された場合にのみ指定します。
ComboList 対象のコントロールがコンボボックスの際に選択肢にない値を入力できない様にする場合は "yes" を指定します。
この属性は Type 属性に "ComboBox" が指定された場合にのみ指定します。
Default 対象のコントロールの動作の実行にリターンキーを使用する場合は "yes" を指定します。
Disabled 対象のコントロールを無効状態で表示する場合は "yes" を指定します。
ElevationShield 対象のコントロールの動作の実行時に権限昇格を必要とする場合は "yes" を指定します。
この属性は Type 属性に "PushButton" が指定された場合にのみ指定します。
Fixed 対象のコントロールがすべてのボリュームと固定 HDD ドライブを対象とする場合は "yes" を指定します。
この属性はドライブレターやディレクトリを選択・表示するコントロールにのみ指定可能です。
FixedSize 対象のコントロールとして表示する画像の形状やサイズを変更せずにトリミング・中央揃えを行う場合は "yes" を指定します。
この属性は Type 属性に "RadioButton", "PushButton", "Icon" のいずれかが指定された場合にのみ指定します。
Floppy 対象のコントロールが FD ドライブを対象とする場合は "yes" を指定します。
この属性はドライブレターやディレクトリを選択・表示するコントロールにのみ指定可能です。
FormatSize 対象のコントロールの表示内容をファイルサイズのフォーマットで表示する場合は "yes" を指定します。
この属性は Type 属性に "Text" が指定された場合にのみ指定します。
HasBorder 対象のコントロールの外枠とグループラベル文字列を表示する場合は "yes" を設定します。
この属性は Type 属性に "RadioButtonGroup" が指定された場合にのみ指定します。
Height 対象のコントロールの矩形(四角形)の境界の高さを指定します。
負でない数値を指定する必要があります。
Hidden 対象のコントロールを非表示にする場合は "yes" を指定します。
Icon 対象のコントロールの表示にアイコンを使用する場合は "yes" を指定します。
この属性は Type 属性に "RadioButton", "PushButton" のいずれかが指定された場合にのみ指定します。
IconSize 対象のコントロールとして表示するアイコンのサイズを "16", "32", "48" の中から指定します。
この属性は Type 属性に "RadioButton", "PushButton", "Icon" のいずれかが指定された場合にのみ指定します。
Image 対象のコントロールの表示にイメージを使用する場合は "yes" を指定します。
この属性は Type 属性に "RadioButton", "PushButton", "Icon" のいずれかが指定された場合にのみ指定します。
Indirect 対象のコントロールに紐づけられたプロパティの値とコントロールの内容の変更を随時同期する場合は "yes" を指定します。
Integer 対象のコントロールに紐づけられたプロパティの値を整数として扱う場合は "yes" を指定します。
LeftScroll 対象のコントロールのスクロールバーをコントロールの左端に表示する場合は "yes" を指定します。
Multiline 対象のコントロールを複数行入力可能とする場合は "yes" を指定します。
この属性は Type 属性に "Edit" が指定された場合にのみ指定します。
NoPrefix 対象のコントロールに表示される文字列の中で "&" に続く文字を下線付き文字で表示しない場合は "yes" を指定します。
この属性は Type 属性に "Text" が指定された場合にのみ指定します。
NoWrap 対象のコントロールの表示を折り返さない様にする場合は "yes" を指定します。
この属性は Type 属性に "Text" が指定された場合にのみ指定します。
Password 対象のコントロールをパスワード入力用とする場合は "yes" を指定します。
この属性は Type 属性に "Edit" が指定された場合にのみ指定します。
ProgressBlocks 対象のプログレスバーの見た目を四角形の連続形式で表示する場合は "yes" を指定します。
 
この属性は Type 属性に "ProgressBar" が指定された場合にのみ指定します。
Property 対象のコントロールに紐づけるプロパティ名を指定します。
この属性は対象のコントロールから値を取得する場合には必ず指定する必要があります。
PushLike 対象のコントロールをトグルボタン形式で表示する場合は "yes" を指定します。
この属性は Type 属性に "RadioButton", "CheckBox" のいずれかが指定された場合にのみ指定します。
RAMDisk 対象のコントロールが RAM ディスクを対象とする場合は "yes" を指定します。
この属性はドライブレターやディレクトリを選択・表示するコントロールにのみ指定可能です。
Remote 対象のコントロールがリモートフォルダを対象とする場合は "yes" を指定します。
この属性はドライブレターやディレクトリを選択・表示するコントロールにのみ指定可能です。
Removable 対象のコントロールリムーバブルディスクを対象とする場合は "yes" を指定します。
この属性はドライブレターやディレクトリを選択・表示するコントロールにのみ指定可能です。
RightAligned 対象のコントロールを右詰めで表示する場合は "yes" を指定します。
RightToLeft 対象のコントロールを右から左に向かって表示する場合は "yes" を指定します。
ShowRollbackCost 対象のコントロールに表示する使用容量にロールバック用のバックアップファイルのサイズを含める場合は "yes" を指定します。
この属性は Type 属性に "VolumeCostList" が指定された場合にのみ指定します。
Sorted 対象のコントロールの中身をコントロールで定められた順番で表示する場合は "yes" を指定します。
この属性に "no" が指定された場合、もしくはこの属性が指定されなかった場合はアルファベット順で表示します。
この属性は Type 属性に "ListBox", "ListView", "ComboBox" のいずれかが指定された場合にのみ指定します。
Sunken 対象のコントローラをくぼんだ状態で表示する場合は "yes" を指定します。
TabSkip 対象のコントロールをタブストップ対象外とする場合は "yes" を指定します。
Text 対象のコントロールの初期値となる文字列を指定します。
ToolTip 対象のコントロールツールチップに表示する文字列を指定します。
Transparent 対象のコントロールの背景色を透過にする場合は "yes" を指定します。
この属性は Type 属性に "Text" が指定された場合にのみ指定します。
Type 対象のコントロールのタイプを以下の中から指定します。
  • "Billboard" (ビルボード
  • "Bitmap" (ビットマップイメージ表示)
  • "CheckBox" (チェックボックス
  • "ComboBox" (コンボボックス)
  • "DirectoryCombo" (ディレクトリ選択コンボボックス)
  • "DirectoryList" (ディレクトリリスト)
  • "Edit" (テキスト入力ボックス)
  • "GroupBox" (グループボックス)
  • "Hyperlink" (ハイパーリンク
  • "Icon" (アイコン表示)
  • "Line" (水平線)
  • "ListBox" (リストボックス)
  • "ListView" (リストビュー)
  • "MaskedEdit" (マスク付きテキスト入力ボックス)
  • "PathEdit" (ファイルパス入力ボックス)
  • "ProgressBar" (プログレスバー
  • "PushButton" (実行ボタン)
  • "RadioButtonGroup" (ラジオボタングループボックス)
  • "ScrollableText" (スクロールバー表示付きテキスト表示)
  • "SelectionTree" (項目選択ツリー)
  • "Text" (テキスト表示)
  • "VolumeCostList" (ドライブ使用容量表示リスト)
  • "VolumeSelectCombo" (ドライブ選択コンボボックス)
UserLanguage 対象のコントロールに表示する文字列のコードにインストールユーザーのデフォルト設定を使用する場合は "yes" を指定します。
この属性は Type 属性に "Text" が指定された場合にのみ指定します。
Width 対象のコントロールの矩形(四角形)の境界の幅を指定します。
負でない数値を指定する必要があります。
X 対象のコントロールの矩形(四角形)の境界左上隅の(左端を 0 とした)水平方向の座標を指定します。
負でない数値を指定する必要があります。
Y 対象のコントロールの矩形(四角形)の境界左上隅の(上端を 0 とした)垂直方向の座標を指定します。
負でない数値を指定する必要があります。
  • Publish タグ

ボタンを押した際等に実行する処理は Publish タグで設定します。
Publish タグには以下の属性を設定可能です。
※ Publish タグの属性は任意指定項目ですが、 Event 属性か Property 属性のいずれかを指定する必要があります。

属性名 設定する値
Control Publish の対象となる Control 要素の ID を指定します。
この属性は Publish タグを UI タグの直下に指定する場合にのみ指定します。
Dialog Publish の対象となる Dialog 要素の ID を指定します。
この属性は Publish タグを UI タグの直下に指定する場合にのみ指定します。
Event トリガするイベントを指定します。
Property 属性を指定する場合は Event 属性は指定することは出来ません。
Order Publish の対象となる要素に対して複数の Publish タグを指定する際に、それぞれの処理の実行順序を指定します。
Property プロパティへの値をセットする場合に対象のプロパティの ID を指定します。
Event 属性を指定する場合は Property 属性は指定することは出来ません。
Value Property 属性が指定されている場合、このプロパティの設定値を対象のプロパティに設定します。
対象のプロパティに null を設定する場合はこの属性を省略してください。
Event 属性が指定されている場合は、この属性の設定値は対象イベントの引数となります。

この様に、 Control や Publish 等のタグを組み合わせて独自の UI (ダイアログ)を作成することが出来ます。

インストーラの動作をカスタマイズする

独自 UI をインストーラの実行時に表示するためには、インストーラの動作を変更する必要があります。
インストーラの動作は InstallUISequence 及び InstallExecuteSequence タグで制御が可能です。

独自 UI を表示に追加する

独自に追加した UI は InstallUISequence 内で呼出の制御を指定します。
UI の呼び出しは Show タグで行います。

<InstallUISequence>
  <Show Dialog="SampleDialog" After="CostFinalize" />
</InstallUISequence>

Show タグには以下の属性を設定可能です。
※ Dialog 属性は必須指定項目です。
※ After, Before, OnExit, Sequence 属性はいずれかひとつのみ設定可能です。

属性名 設定する値
After 対象のダイアログを表示するひとつ前のダイアログの ID を指定します。
対象となるダイアログは、 After 属性で指定されたダイアログが終了した直後に表示されます。
Before 対象のダイアログを表示するひとつ後のダイアログの ID を指定します。
対象となるダイアログは、 Before 属性で指定されたダイアログが表示される直前に表示されます。
Dialog 表示対象のダイアログの ID を指定します。
OnExit 対象のダイアログをセットアップの終了時に表示する場合に、 "success" (インストール成功) , "cancel" (インストールキャンセル) , "error" (インストールエラー発生) , "suspend" (インストール中断)の中から指定します。
Overridable 別のシーケンス定義の中で対象のダイアログ表示処理を無効化出来る様にする場合は "yes" を指定します。
Sequence 対象のダイアログを表示する順番を示すシーケンス番号を指定します。
処理を追加・削除する

UI 以外の処理を追加する際は InstallExecuteSequence 内で指定します。
独自の処理( CustomAction : 後述)は Custom タグで追加します。

<InstallExecuteSequence>
  <Custom Action="LaunchApp" After="CostFinalize" />
</InstallExecuteSequence>

Custom タグには以下の属性を設定可能です。
※ Action 属性は必須指定項目です。
※ After, Before, OnExit, Sequence 属性はいずれかひとつのみ設定可能です。

属性名 設定する値
Action 対象とする独自処理の ID を指定します。
After 対象の処理を実行するひとつ前の処理の ID を指定します。
対象となる処理は、 After 属性で指定された処理が終了した直後に実行されます。
Before 対象の処理を実行するひとつ後の処理の ID を指定します。
対象となる処理は、 Before 属性で指定された処理が実行される直前に実行されます。
OnExit 対象の処理をセットアップの終了時に実行する場合に、 "success" (インストール成功) , "cancel" (インストールキャンセル) , "error" (インストールエラー発生) , "suspend" (インストール中断) の中から指定します。
Overridable 別のシーケンス定義の中で対象の処理を無効化出来る様にする場合は "yes" を指定します。
Sequence 対象の処理を実行する順番を示すシーケンス番号を指定します。
独自処理を定義する

「指定したアプリケーションを起動する」等の独自処理を追加する際は、 CustomAction タグを使用します。

<CustomAction Id="LaunchApp" FileKey="ApplicationFile" ExeCommand="" Return="asyncNoWait" />

CustomAction タグには以下の属性を設定可能です。
※ Id 属性は必須指定項目です。

属性名 設定する値
Id 独自処理の識別子を指定します。
識別子として任意の文字列を指定可能ですがインストーラの中で一意となる値を指定する必要があります。
BinaryKey 対象の独自処理が含まれているバイナリファイルを示す ID を指定します。
Directory 対象の独自処理で実行する実行ファイルが含まれているディレクトリ、もしくは対象の独自処理を実行する際の作業ディレクトリを示す ID を指定します。
DllEntry 対象の独自処理を示す関数の名称を指定します。
Error ダイアログ表示するエラーメッセージを示すメッセージのインデックスを指定します。
ExeCommand 対象の独自処理を実行する際のコマンドラインパラメータを指定します。
Execute 対象の独自処理の実行タイミングを、 "commit" (インストールスクリプトが成功して完了した時) , "deferred" (スクリプト内(権限昇格が必要)) , "firstSequence" (実行される最初のシーケンスでのみ) , "immediate" (通常処理中:既定) , "onePerProcess" (同一プロセス内で最初のシーケンスでのみ) , "rollback" (インストール中に障害が発生した際のロールバック処理時) , "secondSequence" (前回のシーケンスで以前実行された独自処理を再実行する場合)の中から指定します。
FileKey 対象の独自処理が含まれるファイルのファイル ID を指定します。
HideTarget 対象の独自処理の実行( Execute 属性に deffered が指定された場合)の際に引き渡されるパラメータをログに記録しない場合は "yes" を指定します。
Impersonate 対象の独自処理の実行をユーザー権限で実行する場合は "yes" を指定します。
対象の独自処理をマシンに適用する(権限昇格を行う必要がある)場合のみ "no" を指定します。
JScriptCall BinaryKey もしくは FileKey で指定されたファイル内で実行する JScript 関数の名前を指定します。
PatchUninstall 対象の独自処理をパッチアンインストール時のみに実行する場合は "yes" を指定します。
Property 対象の独自処理の実行時に参照するプロパティを示す ID を指定します。
Return 対象の独自処理の処理結果を、 "asyncNoWait" (非同期で実行し、インストーラ終了後も処理を続行する) , "asyncWait" (非同期で実行するが、インストーラ終了時に対象の処理の終了を待機する) , "check" (同期的に実行され、処理結果の成功有無をチェックする:既定) , "ignore" (同期的に実行されるが、処理結果の成功有無はチェックしない)の中から指定します。
Script 独自処理としてスクリプトを実行する際に、スクリプトの種類を "jscript" , "vbscript" の中から指定します。
実際に実行するスクリプトは CustomAction の内容として文字列で指定します。
SuppressModularization 対象の独自処理がマージモジュール内でモジュール化されないようにする場合は "yes" を指定します。
TerminalServerAware ターミナルサーバマシン上でマシン単位にインストールを行う際に、ログインユーザを偽装して対象の独自処理を実行する場合は "yes" を指定します。
Value 対象の独自属性で使用する文字列を指定します。
VBScriptCall BinaryKey もしくは FileKey で指定されたファイル内で実行する VBScript 関数の名前を指定します。
Win64 対象の独自処理が VBScript もしくは JScript の際に 64bit プラットフォームで実行する場合は "yes" を指定します。
既定値はインストーラの実行プラットフォームに依存します。

CustomAction の各属性は、実行する独自処理の種類によって指定するものが異なります。
CustomAction で実行可能な独自処理は以下の通りになっています。
実行する独自処理によって指定すべき属性が異なるので注意が必要です。
( ID 等、処理の種類に依存しない属性は省略)

Type*3 処理の種類 指定が必要な属性 指定する値
1 インストーラ内のバイナリの実行 BinaryKey バイナリファイルの ID
DllEntry 実行する関数の名称
2 インストーラ内の実行可能ファイルの実行 BinaryKey 実行可能ファイルの ID
ExeCommand コマンドラインパラメータ
5 インストーラ内のJScriptファイルの実行 BinaryKey JScriptファイルの ID
JScriptCall 実行する関数の名称
6 インストーラ内のVBScriptファイルの実行 BinaryKey VBScriptファイルの ID
VBScriptCall 実行する関数の名称
17 インストールされるDLLの実行 DllEntry 実行する関数の名称
FileKey インストールされるDLLファイルの ID
18 インストールされる実行可能ファイルの実行 ExeCommand コマンドラインパラメータ
FileKey インストールされる実行可能ファイルの ID
19 エラーメッセージの表示 Error メッセージのインデックス
21 インストールされるJScriptファイルの実行 FileKey インストールされるJScriptファイルの ID
JScriptCall 実行する関数の名称
22 インストールされるVBScriptファイルの実行 FileKey インストールされるVBScriptファイルの ID
VBScriptCall 実行する関数の名称
34 コマンドの実行 Directory 作業ディレクトリの ID
ExeCommand 実行するコマンド及びコマンドラインパラメータ
35 インストール先ディレクトリの設定 Directory 設定するディレクトリの ID
Value 設定するディレクトリパス
37 JScriptコードの実行 Script "jscript"
38 VBScriptコードの実行 Script "vbscript"
50 プロパティで指定された実行可能ファイルの実行 ExeCommand コマンドラインパラメータ
Property 実行可能ファイルのパスを示すプロパティの ID
51 プロパティの設定 Property 値を設定するプロパティの ID
Value プロパティに設定する値
53 プロパティで指定されたJScriptコードの実行 Property 実行するスクリプトが設定されたプロパティの ID
54 プロパティで指定されたVBScriptコードの実行 Property 実行するスクリプトが設定されたプロパティの ID
更なるカスタマイズ

インストーラの動作中に他のインストーラを実行したい(依存アプリケーション・ライブラリのインストール等)」、「 UI を Windows Form や WPF で記述したい」*4等、更なるカスタマイズをしたい場合は、 Burn エンジンを利用したバンドルパッケージを作成することができます。
Burn エンジンについては、私自身、まだ学習中のためこの場で詳しく紹介することはできませんが、興味のある方は是非バンドルパッケージの作成にも挑戦してみてはいかがでしょうか。

*1:標準 UI で対応できない入力情報を指定させたい、自社ブランドに合わせた画面デザインにしたい、等。

*2:Windows の昇格ダイアログ等の様に、他のアプリケーションを含めて操作不可(モーダル)な状態にするダイアログ

*3:Windows Installer 内部で管理されている番号。 WiX Toolset を使用する際には特に意識する必要はありません。

*4:余談ですが、 WiX Toolset のインストーラの UI は WPF で記述されている様です。