在哪里可以找到 msi table 列属性?

Where can i find msi table column properties?

CREATE TABLE `Directory` 
(
     `Directory` CHAR(72) NOT NULL, 
     `Directory_Parent` CHAR(72),
     `DefaultDir` CHAR(255) NOT NULL LOCALIZABLE PRIMARY KEY `Directory`
)

在哪里可以找到有关上述创建语句中使用的数据类型的信息?

我需要所有 msi 表的信息。

MSI SDK:MSI SDK 中的此部分列出了 built-in MSI 表:https://docs.microsoft.com/en-us/windows/win32/msi/database-tables -有关更多技术信息,请参阅下面的 Orca 部分:Orca 安装文件夹中的文件 "orca.dat" 包含架构。

技术:首先要注意几点:下划线开头的表格:_ 例如 _Validation_Streams 是特殊表 - 其中大部分在 Orca 中是不可见的。

  • _Validation table is a system table that essentially shows the database schema. It is used during MSI database validation (recommended read). You can see the different: Database Column Data Types.

    • 验证对 MSI 数据库及其内容运行一系列检查以检查常见问题以及与数据库架构的一致性。
    • 数据库检查在*.CUB files中实现。它们可以包含针对数据库的可运行代码 - 例如 VBScript 文件。用Orca打开*.CUB files可以看到内容
    • 可以从 Orca 或通过命令行以交互方式调用验证。
  • _Streams table is a temporary table which is involved with SQL statements. Same thing with _Storages。而且还有几个这样的系统表。

Orca: Orca是查看和修改MSI数据库文件的SDK工具。

  • 可以使用Orca打开MSI,select Tables => Export Tables...指定输出目录,select导出所有表。您会得到 *.idt 个文件,其中包含内容描述。在记事本或任何文本编辑器中打开。

  • 在 Orca 安装文件夹中有一个名为 "orca.dat" 的文件。这显然是 MSI 文件的数据库架构。在 Orca 中打开此文件后,您可以使用 "Export Tables" 方法。只需导出所有表,这应该是导出为 *.idt 格式的所有有效 MSI 表。将有 headers 表示数据类型:

MSI SDK VBScript:包含在随 Visual Studio 安装的 SDK 中,您会发现许多 VBScript 文件显示处理 MSI 文件时可以使用的多种技术。 Windows Installer Scripting Examples. Look under: %ProgramFiles(x86)%\Windows Kits\bin.0.17134.0\x86 - replace with the current numbers for the penultimate folder name. Quick preview of the files here.