Installer.OpenDatabase 方法

Installer 对象的 OpenDatabase 方法打开一个现有数据库或新建一个数据库,并返回一个 Database 对象。 如果无法成功创建并打开数据库对象,它会生成一个错误。

语法

Installer.OpenDatabase(
  name,
  openMode
)

参数

name

包含数据库路径名的必需字符串。 如果输入空字符串,则会创建非永久性的临时数据库。

openMode

下表中的参数,或包含提交时要写入的新输出数据库文件的路径名的字符串。

参数 含义
msiOpenDatabaseModeReadOnly
0
以只读方式打开数据库,没有永久性更改。
msiOpenDatabaseModeTransact
1
以事务模式打开数据库读/写。
msiOpenDatabaseModeDirect
2
在不打开事务模式的情况下打开数据库直接读/写。
msiOpenDatabaseModeCreate
3
新建一个数据库,事务模式读/写。
msiOpenDatabaseModeCreateDirect
4
新建一个数据库,直接模式读/写。
msiOpenDatabaseModeListScript
5
打开数据库,查看播发脚本文件,例如 CreateAdvertiseScript 方法生成的文件。
msiOpenDatabaseModePatchFile
32
添加此标志,以指示修补文件。

 

返回值

Database 对象,表示已打开的现有的或新的安装程序数据库。

备注

当数据库作为另一个数据库的输出打开时,输出数据库的摘要信息流实际上是原始数据库的只读镜像,因此无法更改。 此外,它不会永久性保存在数据库中。 若要创建或修改输出数据库的摘要信息,必须将其关闭并重新打开。

若要对数据库进行更改并保存更改,首先在事务 (msiOpenDatabaseModeTransact)、创建(msiOpenDatabaseModeCreate 或 msiOpenDatabaseModeCreateDirect)或直接 (msiOpenDatabaseModeDirect) 模式下打开数据库。 进行更改后,始终在关闭数据库句柄之前调用 Commit 方法。 Commit 方法刷新所有缓冲区。

在关闭数据库之前,始终对以直接模式(msiOpenDatabaseModeDirect 或 msiOpenDatabaseModeCreateDirect)打开的数据库调用 Commit 方法。 否则,可能会损坏数据库。

由于 OpenDatabase 方法会启动数据库访问,因此它不能用于正在运行的安装。

如果该方法失败,可以使用 LastErrorRecord 方法获取扩展的错误信息。

要求

要求
版本
Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows Installer
DLL
Msi.dll
IID
IID_IInstaller 定义为 000C1090-0000-0000-C000-000000000046