64 ビット Windows インストーラー パッケージ または Windows インストーラーを呼び出して 64 ビット パッケージをインストールするアプリケーションを作成する場合は、次の操作を行います。
- 200 以上の Windows インストーラー データベース スキーマを使用します。 Page Count Summary プロパティを整数 200 に設定して、バージョン 2.0 がパッケージのインストールに必要なインストーラーの最小バージョンであることを指定します。 以前のバージョンの Windows インストーラーでは、64 ビット パッケージのインストールが拒否されました。 Arm64 プラットフォーム上の 64 ビット パッケージの場合、Windows インストーラー データベース スキーマは 500 以上である必要があります。
- パッケージ概要情報ストリームの テンプレートの概要 プロパティで、これが 64 ビット パッケージであることを示します。 パッケージを Intel64 プロセッサで実行する場合は、テンプレートの概要 プロパティのプラットフォーム フィールドに「Intel64」と入力します。 パッケージを 64 ビット拡張プロセッサで実行する場合は、「x64」と入力します。 パッケージを Arm64 プロセッサで実行する場合は、「Arm64」と入力します。 Intel64 プラットフォームと x64 プラットフォームの両方をサポートするパッケージとしてマークすることはできません。テンプレートの概要 プロパティ値 "Intel64,x64" が無効です。 32 ビットプラットフォームと 64 ビット プラットフォームの両方をサポートするパッケージとしてマークすることはできません。テンプレートの概要 プロパティ値 "Intel,x64" または "Intel,Intel64" が無効です。
- コンポーネント テーブルの [属性] 列で msidbComponentAttributes64bit を設定して、64 ビット コンポーネントごとに識別します。
- VersionNT64 プロパティを参照して、64 ビット オペレーティング システムのバージョンを確認するオプションの条件付きステートメントを使用します。 Windows インストーラーは、このプロパティを 64 ビットの Windows バージョンに設定し、オペレーティング システムが 64 ビット Windows でない場合は VersionNT64 を未定義のままにします。 詳細については、「条件ステートメントでのプロパティの使用 」を参照してください。
- Intel64 または Msix64 プロパティを参照して、コンピューターの数値プロセッサ レベルを確認するオプションの条件付きステートメントを使用します。 Windows インストーラーは、これらのプロパティをコンピューターの現在の数値プロセッサ レベルに設定し、Intel64 プロパティが Itanium ベースのプロセッサでない場合は未定義のままにします。 詳細については、「条件ステートメントでのプロパティの使用 」を参照してください。
- AppSearch Table と AppSearch Action を使用して、既存の 64 ビット コンポーネントのレジストリを省略可能に検索します。 既存の 64 ビット コンポーネントを検索するには、RegLocator Tableの Type 列に msidbLocatorType64bit ビットを含めます。 詳細については、「既存のアプリケーション、ファイル、レジストリ エントリ、または .ini ファイル エントリプロパティの検索」を参照
- System64Folderプロパティ、ProgramFiles64Folder プロパティ、CommonFiles64Folder プロパティを参照して、64 ビットフォルダーへのパスを取得します。また、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 ビット アプリケーションとしてコンパイルします。
- 特定のコンポーネントの影響を受けるレジストリ キー レジストリ リフレクション を無効にするには、コンポーネント テーブルの [属性] フィールドに msidbComponentAttributesDisableRegistryReflection ビットを設定します。 これは、同じアプリケーションの 32 ビットと 64 ビットのコピーが共存する必要がある場合があります。 このビットが設定されている場合、Windows インストーラーは、コンポーネントによってアクセスされる各キーに対して RegDisableReflectionKey 関数を呼び出します。 このビットは、Windows インストーラー バージョン 4.0 で使用できます。 このビットは、32 ビット システムでは無視されます。 このビットは、Windows XP および Windows 2000 の 64 ビット バージョンでは無視されます。
手記
MsiGetComponentPath 関数の lpPathBuf パラメーターによって返される数値レジストリ ルートの値は、32 ビットオペレーティング システムと 64 ビット オペレーティング システムのコンポーネントを区別します。 詳細については、MsiGetComponentPath 関数 を参照してください。
関連トピック