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 |
|
IID |
IID_IInstaller 定义为 000C1090-0000-0000-C000-000000000046 |