64 ビット Windows インストーラー パッケージを使用する

64 ビット Windows インストーラー パッケージまたは Windows インストーラーを呼び出して 64 ビット パッケージをインストールするアプリケーションを作成する場合は、次のようにします。

  • 200 以上の Windows インストーラー データベース スキーマを使います。 Page Count Summary プロパティを整数 200 に設定して、バージョン 2.0 がパッケージのインストールに必要なインストーラーの最小バージョンであることを指定します。 以前のバージョンの Windows インストーラーでは、64 ビット パッケージをインストールしようとすると拒否されます。 Arm64 プラットフォーム上の 64 ビット パッケージの場合、Windows インストーラー データベース スキーマは 500 以上である必要があります。
  • パッケージ概要情報ストリームの Template Summary プロパティで、これが 64 ビット パッケージであることを示します。 パッケージを Intel64 プロセッサで実行する場合は、Template Summary プロパティのプラットフォーム フィールドに「Intel64」と入力します。 パッケージを 64 ビット拡張プロセッサで実行する場合は、「x64」と入力します。 パッケージを Arm64 プロセッサで実行する場合は、「Arm64」と入力します。 Intel64 と x64 の両方のプラットフォームをサポートするように、パッケージをマークすることはできません。Template Summary プロパティの値として "Intel64,x64" は無効です。 32 ビットと 64 ビットの両方のプラットフォームをサポートするように、パッケージをマークすることはできません。Template Summary プロパティの値として "Intel,x64" または "Intel,Intel64" は無効です。
  • Component テーブルの Attributes 列に msidbComponentAttributes64bit を設定して、すべての 64 ビット コンポーネントを示します。
  • VersionNT64 プロパティを参照することで 64 ビット オペレーティング システムのバージョンをチェックするオプションの条件付きステートメントを使います。 Windows インストーラーは、このプロパティに 64 ビット Windows のバージョンを設定し、オペレーティング システムが 64 ビット Windows でない場合は VersionNT64 を未定義のままにします。 詳しくは、「条件付きステートメントでのプロパティの使用」をご覧ください。
  • Intel64 または Msix64 プロパティを参照することでコンピューターの数値プロセッサ レベルをチェックするオプションの条件付きステートメントを使います。 Windows インストーラーは、これらのプロパティにコンピューターの現在の数値プロセッサ レベルを設定し、Itanium ベースのプロセッサでない場合は Intel64 プロパティを未定義のままにします。 詳しくは、「条件付きステートメントでのプロパティの使用」をご覧ください。
  • 必要に応じて、AppSearch テーブルAppSearch アクションを使って、既存の 64 ビット コンポーネントのレジストリを検索します。 既存の 64 ビット コンポーネントを検索するには、RegLocator テーブルの Type 列に msidbLocatorType64bit ビットを含めます。 詳しくは、既存のアプリケーション、ファイル、レジストリ エントリまたは .ini ファイル エントリのプロパティの検索に関する記事をご覧ください
  • 64 ビット フォルダーの場合は System64Folder プロパティ、ProgramFiles64Folder プロパティ、CommonFiles64Folder プロパティを参照し、32 ビット フォルダーの場合は SystemFolder プロパティ、ProgramFilesFolder プロパティ、CommonFilesFolder プロパティを参照して、システム フォルダーへのパスを取得します。
  • 64 ビット コンポーネントを参照するときは、アプリケーションで正しい GUID が使われていることを確認します。 特定のコンポーネントの 32 ビットバージョンと 64 ビット バージョンがある場合、コンポーネント ID の GUID が異なるはずです。
  • 64 ビット アプリケーションをインストールするときは、新しい環境変数を定義する必要があるかどうかを判断します。
  • 64 ビット ODBC ドライバー マネージャーをインストールする場合、それを含むコンポーネントの名前を ODBCDriverManager64 にする必要があります。 ODBC ドライバー マネージャーはインストーラー パッケージで作成する必要があり、ODBCDriverManager64 という名前のコンポーネントを含める必要があります。 必要に応じてマネージャーがインストールされます。
  • 実行可能ファイルとして実行される 32 ビット サービスのみをアプリケーションで呼び出していることを確認します。 DLL で実行される 32 ビット サービスをアプリケーションで呼び出すことはできません。
  • アプリケーションでコンポーネントの 32 ビットと 64 ビットの共存バージョンをインストールする場合は、アプリケーションが .ini ファイルの情報を正しく共有していることを確認します。
  • アプリケーションで 32 ビット パッチを 32 ビット バイナリのみに適用し、64 ビット パッチを 64 ビット バイナリのみに適用していることを確認します。
  • 32 ビットと 64 ビット両方のバージョンについて将来のアップグレード シナリオを検討し、アップグレード コードを維持します。 詳細については、修正プログラムの適用とアップグレードに関するページを参照してください。
  • ブートストラップ アプリケーションを使って 64 ビット Windows インストーラー パッケージをインストールする場合は、ブートストラップ アプリケーションを 64 ビット アプリケーションとしてコンパイルします。
  • 特定のコンポーネントの影響を受けるレジストリ キーのレジストリ リフレクションを無効にするには、Component テーブルの Attributes フィールドで msidbComponentAttributesDisableRegistryReflection ビットを設定します。 同じアプリケーションの 32 ビットと 64 ビットのコピーを共存させるに、これが必要な場合があります。 このビットを設定した場合、コンポーネントによってアクセスされるキーごとに、Windows インストーラーは RegDisableReflectionKey 関数を呼び出します。 このビットは Windows インストーラー バージョン 4.0 で使用できます。 このビットは 32 ビット システムでは無視されます。 このビットは、Windows XP と Windows 2000 の 64 ビット バージョンでは無視されます。

Note

MsiGetComponentPath 関数の lpPathBuf パラメーターによって返される数値レジストリ ルートの値では、32 ビットと 64 ビットのオペレーティング システム上のコンポーネントが区別されます。 詳しくは、MsiGetComponentPath 関数に関する記事をご覧ください。

 

64 ビット カスタム アクション