IMsmMerge::OpenModule 方法 (mergemod.h)

OpenModule 方法以只读模式打开 Windows Installer 合并模块。 必须先打开模块,然后才能将其与安装数据库合并。 有关详细信息,请参阅 Merge 对象的 OpenModule 方法。

IMsmMerge2::OpenModule Mergemod.dll 2.0 及更高版本。

 
IMsmMerge::OpenModule 所有 Mergemod.dll 版本。

语法

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

parameters

[in] Path

指向合并模块的完全限定文件名。 可以使用 LPCWSTR 代替 BSTR

[in] Language

LANGID) (语言标识符。

返回值

OpenModule 函数返回以下值。

含义
E_ABORT
指定的文件是 Windows Installer 数据库,但不是合并模块, (缺少 ModuleSignature 表) 。
ERROR_INSTALL_LANGUAGE_UNSUPPORTED为 HRESULT
该模块不支持该语言。
ERROR_INSTALL_TRANSFORM_FAILURE为 HRESULT
该语言受模块支持,但应用转换时出错。
ERROR_OPEN_FAILED 为 HRESULT
无法以 Windows Installer 数据库的形式打开该文件。
ERROR_TOO_MANY_OPEN_FILES为 HRESULT
已打开一个模块。 首先关闭当前模块。
S_OK
函数成功。

注解

此函数在只读模式下打开合并模块 (MSIDBOPEN_READONLY) ,并在调用 CloseModule 函数之前排除其他程序写入合并模块。 必须先打开合并模块,然后才能进行合并。

安装程序尝试以 Language 指定的语言或任何更常规的语言打开模块。 例如,如果 语言 值指定 1033,则默认语言为 1033、9 或 0 的模块将以其默认语言打开。 如果 Language 值为 9,则会打开默认语言为 9 或 0 的模块。 如果模块的默认语言不符合指定要求,则会尝试将模块转换为请求的语言。 如果失败,安装程序会尝试将模块转换为越来越通用的语言,一直转换为非特定语言。 如果所有转换均未成功,则无法打开模块。 在这种情况下,错误将添加到类型为 msmErrorLanguageUnsupported 的错误列表中,函数返回ERROR_INSTALL_LANGUAGE_UNSUPPORTED HRESULT。

如果在将模块转换为所需语言时出错,则会创建 msmErrorLanguageFailed 类型的错误,并且该函数将ERROR_INSTALL_TRANSFORM_FAILURE作为 HRESULT 返回。

有关详细信息,请参阅 Error 对象的 Type 属性。

打开合并模块的操作会清除尚未检索到的任何错误。

要求

   
最低受支持的客户端 Mergemod.dll 1.0 或更高版本
目标平台 Windows
标头 mergemod.h
DLL Mergemod.dll

另请参阅

合并模块自动化