【发布时间】:2021-12-31 23:21:38
【问题描述】:
我找不到 MSI 格式规范。它说它是一个开放标准,但我没有看到任何文档 - 只是零星的信息。
我想修改一些 .msi 安装程序,但我想先了解它在做什么。
【问题讨论】:
-
MSI 文件格式没有记录,你从哪里读到它是一个开放标准?
-
MSI文件是COM结构化存储文件中的SQL数据库,后者本质上是文件中的文件系统(文件流)。
我找不到 MSI 格式规范。它说它是一个开放标准,但我没有看到任何文档 - 只是零星的信息。
我想修改一些 .msi 安装程序,但我想先了解它在做什么。
【问题讨论】:
二进制格式不开放,我什至不会称其为标准。
但我认为这不是您关心的文件格式(未记录),而是通过 Windows Installer SDK、API、Orca 与 MSI 交互时可见的表格、操作、序列等等。
SDK 文档中涵盖了所有内容,但由于某些原因,搜索引擎对该文档的排名不高。此外,您不能再单独下载 Windows Installer SDK,它现在捆绑为 Windows SDK 的一部分。
【讨论】:
MSI 文件是 COM 结构化存储,此处描述:Structured Storage (Windows)。
【讨论】:
MSI 文件格式未打开并且实际上没有记录,但是访问这些文件所需的 API 是 Windows Installer SDK 的一部分。该链接描述了访问和修改 MSI 数据库(文件)所需的 API 函数,以及 MSI 数据库中表的内容。
也就是说,如果您想修改或查看 MSI 的内容,那么最简单的方法可能就是使用其他人制作的编辑器(这将反过来使用这些功能)。我知道的有:
如果您真的想了解更多有关 MSI 文件格式内部细节的信息,请阅读 Rob Mensching(WiX 的作者)的这两篇博客文章
【讨论】:
听起来你误解了微软的承诺。
公开规范承诺
发布日期:2006 年 9 月 12 日。修订日期:2007 年 2 月 15 日
Microsoft 不可撤销地承诺不主张任何 Microsoft 必要 因制造、使用、销售、要约出售而对您提出的索赔, 在符合的范围内导入或分发任何实现 涵盖的规范(“涵盖的实施”),受制于 下列的。这是 Microsoft 直接向您作出的个人承诺, 并且您承认从中受益的一个条件是,没有 Microsoft 权利是从供应商、分销商或 否则与此承诺有关。如果您归档、维护或 自愿参加针对某公司的专利侵权诉讼 Microsoft 实施此类涵盖规范,然后此 个人承诺不适用于任何涵盖 实施您制定或使用的相同涵盖规范。 澄清一下,“Microsoft 必要声明”是 微软拥有或微软控制的专利,这些专利是必要的 仅实施涵盖规范的所需部分 被详细描述,而不只是在这样的引用 规格。下面列出了“涵盖的规格”。
此承诺也不保证 (i) Microsoft 的任何 已发布的专利权利要求涵盖涵盖的实施或 可执行或 (ii) 涵盖实施不会侵犯 任何第三方的专利或其他知识产权。不 除本承诺中明确规定的权利外,其他权利应为 默示、用尽、被视为授予、放弃或接受, 禁止反言,或其他。
开放规范的完整列表可以在
找到http://www.microsoft.com/openspecifications/en/us/programs/osp/default.aspx
由于 MSI 未在其中列出,您可以放心地假定它是一个私有标准,不会向公众共享。
【讨论】:
您确定修改某些安装程序需要 .MSI 数据库格式吗?您听说过 Orca 工具吗?如果没有,这篇 MS 知识库文章适合您:
【讨论】:
在我与 MSI 的合作中,此链接 Windows Installer Tools & Tips 非常有帮助。
【讨论】:
Microsoft 已发布 MSI 文件格式详细信息。您可以在这里下载各种版本的规格:[MS-CFB]: Compound File Binary File Format
撰写本文时的最新版本是 9.0,于 2018 年 9 月 12 日发布。您可以将其下载为 PDF here。
【讨论】:
不要忘记MakeMSI,这是一个免费的应用程序来创建 MSI 文件。
【讨论】:
这可能对某些人有所帮助。
https://docs.microsoft.com/en-us/windows/win32/msi/windows-installer-portal
您可以构建自己的安装程序构建器应用程序,前提是您通过此操作并了解此处说明的 Windows 安装程序 API。使用此处提到的 API,您可以构建自己的应用程序,也可以编辑 .msi 文件。
【讨论】: