次の方法で共有


IMsmMerge::OpenModule メソッド (mergemod.h)

OpenModule メソッドは、読み取り専用モードで Windows インストーラーマージ モジュールを開きます。 モジュールをインストール データベースとマージするには、まず開いておく必要があります。 詳細については、Merge オブジェクトの OpenModule メソッドを参照してください。

IMsmMerge2::OpenModule バージョン 2.0 以降 Mergemod.dll。

 
IMsmMerge::OpenModule すべての Mergemod.dll バージョン。

構文

HRESULT OpenModule(
  [in] const BSTR  Path,
  [in] const short Language
);

パラメーター

[in] Path

マージ モジュールを指す完全修飾ファイル名。 BSTR の代わりに LPCWSTR を使用できます。

[in] Language

言語識別子 (LANGID)。

戻り値

OpenModule 関数は、次の値を返します。

説明
E_ABORT
指定されたファイルは Windows インストーラー データベースですが、マージ モジュールではありません ( ModuleSignature テーブルがありません)。
HRESULT としてERROR_INSTALL_LANGUAGE_UNSUPPORTEDする
この言語は、モジュールではサポートされていません。
HRESULT としてERROR_INSTALL_TRANSFORM_FAILUREする
この言語はモジュールでサポートされていますが、変換の適用中にエラーが発生しました。
HRESULT としてERROR_OPEN_FAILEDする
ファイルを Windows インストーラー データベースとして開けませんでした。
HRESULT としてERROR_TOO_MANY_OPEN_FILESする
既にモジュールが開いています。 最初に現在のモジュールを閉じます。
S_OK
関数が正常に実行されました。

解説

この関数は、読み取り専用モード (MSIDBOPEN_READONLY) でマージ モジュールを開き、 CloseModule 関数が呼び出されるまで、他のプログラムがマージ モジュールに書き込むのを除外します。 マージ モジュールは、マージする前に開く必要があります。

インストーラーは、 Language で指定された言語またはそれ以上の一般的な言語でモジュールを開こうとします。 たとえば、 Language 値で 1033 が指定されている場合、既定の言語が 1033、9、または 0 のモジュールが既定の言語で開かれます。 Language の値が 9 の場合は、既定の言語が 9 または 0 のモジュールが開きます。 モジュールの既定の言語が指定された要件を満たしていない場合は、モジュールを要求された言語に変換しようとします。 失敗した場合、インストーラーはモジュールをますます一般的な言語に変換し、言語に依存しない言語に変換しようとします。 どの変換も成功しない場合、モジュールは開けません。 この場合、msmErrorLanguageUnsupported 型のエラー リストにエラーが追加され、関数は HRESULT としてERROR_INSTALL_LANGUAGE_UNSUPPORTEDを返します。

モジュールを目的の言語に変換中にエラーが発生した場合は、msmErrorLanguageFailed 型のエラーが作成され、関数は HRESULT としてERROR_INSTALL_TRANSFORM_FAILUREを返します。

詳細については、Error オブジェクトの Type プロパティを参照してください。

マージ モジュールが開かれるとと、まだ取得されていないエラーはクリアされます。

要件

   
サポートされている最小のクライアント Mergemod.dll 1.0 以降
対象プラットフォーム Windows
ヘッダー mergemod.h
[DLL] Mergemod.dll

関連項目

マージ モジュールのオートメーション