How To: インストーラーで DirectX 9.0 を インストールする

DirectX 9.0 からコンポーネントを要求するアプリケーションは、インストーラー内に DirectX 9.0 Redistributable を包含する事で 助けを得る事ができます。 これは、エンドユーザーの為にインストール プロセスを単純化し、アプリケーションの為に 要求されるコンポーネントが ターゲットのユーザーマシン上で 常に利用可能である事を 保証します。

DirectX 9.0 は、いくつかの異なった手段で 再配布され得るもので、そのそれぞれが MSDN の Installing DirectX with DirectSetup アーティクルで 略述されています。この How To は、 特定の DirectX コンポーネントだけに依存してインストールされているアプリケーションを想定して Vista マシン上で DirectX 9.0 をインストールするのに dxsetup.exe アプリケーションを 使用する事を 述べています。

DirectX バイナリーを再配布する前に、redistributable files についてのライセンス契約条項を 読んで、理解しなければなりません。このライセンス契約条項は、DirectX SDK をインストールして Documentation\License Agreements\DirectX Redist.txt ファイルで 見つけられると思います。

Step 1: WiX プロジェクトに インストーラー ファイルを 追加する

WiX プロジェクトにファイルを追加するのは How To: インストーラーに ファイルを追加するで述べられているのと 同じ作業手順に従って下さい。以下の例は、 必要なファイルをインクルードする典型的な fragment を示しています:

<DirectoryRef Id="APPLICATIONROOTDIRECTORY">
    <Directory Id="DirectXRedistDirectory" Name="DirectX9.0c">
        <Component Id="DirectXRedist" Guid="PUT-GUID-HERE">
            <File Id="DXSETUPEXE"
		  Source="MySourceFiles\DirectXMinInstall\dxsetup.exe"
		  KeyPath="yes"
		  Checksum="yes"/>
            <File Id="dxupdate.cab"
		  Source="MySourceFiles\DirectXMinInstall\dxupdate.cab"/>
            <File Id="dxdllreg_x86.cab"
		  Source="MySourceFiles\DirectXMinInstall\dxdllreg_x86.cab"/>
            <File Id="dsetup32.dll"
		  Source="MySourceFiles\DirectXMinInstall\dsetup32.dll"/>
            <File Id="dsetup.dll"
		  Source="MySourceFiles\DirectXMinInstall\dsetup.dll"/>
            <File Id="DEC2006_d3dx9_32_x86.cab"
		  Source="MySourceFiles\DirectXMinInstall\DEC2006_d3dx9_32_x86.cab"/>
        </Component>
    </Directory>
</DirectoryRef>

<Feature Id="DirectXRedist"
	 Title="!(loc.FeatureDirectX)"
	 AllowAdvertise="no"
	 Display="hidden" Level="1">
    <ComponentRef Id="DirectXRedist"/>
</Feature>

インクルードされているファイルは、MSDN の解説に述べられている様に、DirectX 9.0 インストール プロセスで要求される the minimal set of files です。リスト中 最後のファイル DEC2006_d3dx9_32_x86.cab は、インストールされた アプリケーションで要求される 特定の DirectX コンポーネントを含んでいます。これらの ファイルは、パッチを当てている状況でさえも すべてのファイルが相伴っていなければ ならないので、単一のコンポーネントに すべてインクルードされています。DirectX インストール 固有の feature を作成するのに Feature エレメントが 使われていて、その Display アトリビュートは、インストーラーの一部であっても どの UI でもユーザーから見えないように hidden にセットされています。

Step 2: インストーラーを起動するのに カスタムアクションを 追加する

DirectX 9.0 インストーラーを実行するのに、InstallFinalize の前に カスタムアクションが 追加されます。以下のサンプルで 説明されるように、カスタムアクションを作成するのに <CustomAction> <InstallExecuteSequence> <Custom> エレメントが 使われています。

<CustomAction Id="InstallDirectX"
	     FileKey="DXSETUPEXE"
              ExeCommand="/silent"
	     Execute="deferred"
	     Impersonate="no"
	     Return="check" />

<InstallExecuteSequence>
    <Custom Action="InstallDirectX" Before="InstallFinalize">
        <![CDATA[NOT REMOVE]]>
    </Custom>
</InstallExecuteSequence>

CustomAction エレメントは、セットアップを実行するカスタムアクションを作成します。 ユニーク id が与えられ、インストーラー アプリケーションをステップ1から参照するのに FileKey アトリビュートが使われています。ExeCommand アトリビュートは、ユーザーが DirectX インストーラーの どのユーザーインターフェースも提示されない事を 確かにするのに /silent フラグをインストーラーに追加しています。Execute アトリビュートは deferred にセットされて、Impersonate アトリビュートは、もし必要なら カスタムアクションが 昇格して実行される事を 保証するのに no にセットされています。Return アトリビュートは カスタムアクションが同期的に実行される事を 保証するのに check にセットされています。

カスタムアクションを実際のインストールプロセスに追加するのに Custom エレメントが InstallExecuteSequence の中で使われています。Action アトリビュートは カスタムアクションを そのユニーク id で参照しています。Before アトリビュートは、インストール全体が 完了する前に カスタムアクションを実行するのに InstallFinalize にセットされています。 DirectX コンポーネントはアンインストールする事ができないので、Condition は ユーザーが アプリケーションをアンインストールする時に、DirectX インストーラーが実行されるのを 妨げます。

Step 3: カスタムアクションの為に ProgressText を インクルードする

もし スタンダードな WiX UI ダイアログを使っているなら、DirectX インストールが 行われている間の表示用 カスタム プログレス テキストをインクルードする事ができます。 以下の例で説明されるように、 <UI> <ProgressText> エレメントが 使われています。

<UI>
    <ProgressText Action="InstallDirectX">Installing DirectX 9.0c</ProgressText>
</UI>

ProgressText エレメントは、カスタムアクションをそのユニーク id で参照するのに Action アトリビュートを使います。ProgressText エレメントの値は、インストール プログレス用 表示テキスト にセットされています。