导入表和导出表的代码页处理

通过使用 MsiDatabaseExportMsiDatabaseImport 导入和导出 ASCII 文本存档文件,可将本地化信息添加到安装数据库。 由于数据库字符串池使用 ANSI 代码页,因此数据库和导出的文本存档文件都有代码页。

从数据库导出文本存档文件时,存档文件的代码页与父级数据库的代码页相同。 有关数字代码页的列表,请参阅将错误和 ActionText 表本地化

注意

将表导出到文本存档文件会转换控制字符,以避免与文件分隔符产生冲突。

 

ASCII 文本存档文件

MsiDatabaseExport 导出的 ASCII 文本存档文件按以下格式进行说明:

  • 表列的名称写在第一行。
  • 列格式写在第二行。
  • 如果表仅包含 ASCII 数据,则文本文件的第三行是表名,且后跟主密钥列表。
  • 如果表包含非 ASCII 数据且数据库标记有数字代码页,则代码页编号显示在第三行的开头。
  • 如果数据库包含非 ASCII 数据,但数据库未标记有数字代码页,则当前系统代码页编号写在第三行的开头。
  • 文本文件的其余行是指定代码页中的数据。
  • 如果表包含流,MsiDatabaseExport 会将表中的每个流导出到一个单独的文件中。

中性和非中性代码页

可以先使用具有中性代码页的数据库来促进本地化:

  • 空白数据库具有中性代码页。
  • 不包含需使用代码页以 ASCII 形式来表示的扩展字符的数据库具有中性代码页。

有关详细信息,请参阅创建具有中性代码页的数据库

中性代码页和非中性代码页具有以下特征:

  • 如果将具有非中性代码页的文本存档文件导入具有另一个非中性代码页的数据库,则 Installer 会在调用 MsiDatabaseImport 时返回错误。
  • 可以将具有中性代码页的文本存档文件导入具有任何代码页的数据库。
  • 可以将具有任何代码页的文本存档文件导入具有中性代码页的数据库。
  • 文本存档文件导入具有中性代码页的数据库会将数据库的代码页设置为存档文件代码页。 随后导入数据库的所有存档文件必须与第一个文件具有相同的代码页。

有关详细信息,请参阅确定安装数据库代码页设置数据库代码页

MsiDatabaseExport 导出的文本存档文件可与版本控制系统结合使用。 使用数据库函数或数据库表编辑器编辑数据库。

可以使用数据库表编辑器或 Windows Installer API 将本地化信息添加到安装数据库。 有关详细信息,请参阅参数字符串的代码页处理