Windows installer Windows安装程序MSI格式

Windows installer Windows安装程序MSI格式,windows-installer,Windows Installer,我找不到MSI格式规范。它说这是一个开放的标准,但我没有看到任何文档,只是一些零碎的信息 我想修改一些.msi安装程序,但我想先了解它在做什么。听起来你对微软的承诺有误解 开放规范承诺 出版日期:2006年9月12日。修订日期:2007年2月15日 微软不可撤销地承诺不主张任何微软必要的权利 针对您制造、使用、销售、提供销售、, 导入或分发任何实现,使其符合 适用于适用规范(“适用实施”),符合 下列的这是微软直接向您作出的个人承诺, 你承认,作为从中受益的一个条件 从供应商、分销商或供应商处获

我找不到MSI格式规范。它说这是一个开放的标准,但我没有看到任何文档,只是一些零碎的信息


我想修改一些.msi安装程序,但我想先了解它在做什么。

听起来你对微软的承诺有误解

开放规范承诺

出版日期:2006年9月12日。修订日期:2007年2月15日

微软不可撤销地承诺不主张任何微软必要的权利 针对您制造、使用、销售、提供销售、, 导入或分发任何实现,使其符合 适用于适用规范(“适用实施”),符合 下列的这是微软直接向您作出的个人承诺, 你承认,作为从中受益的一个条件 从供应商、分销商或供应商处获得Microsoft权限 否则与本承诺有关。如果您归档、维护或 自愿参与针对一家公司的专利侵权诉讼 微软实现了这样的覆盖规范,那么这个 个人承诺不适用于任何承保范围 实施您制定或使用的同一涵盖规范。 为了澄清,“微软必要声明”是指 微软拥有或控制的专利是 仅实施涵盖规范中要求的部分 详细描述,而不仅仅是在此类文件中引用 规范。“涵盖规范”如下所示

此承诺也不能保证(i)微软 已发布的专利权利要求涵盖涵盖的实现或 可强制执行或(ii)涵盖的实施不会违反 任何第三方的专利或其他知识产权。不 除本承诺中明确规定的权利外,其他权利应: 被视为通过暗示、用尽方式授予、放弃或接收, 禁止反悔或其他

有关开放规范的完整列表,请访问


由于MSI未在中列出,您可以放心地假设它是一个私有标准,不会向公众共享。

在我使用MSI的工作中,此链接非常有用

您确定修改某些安装程序需要.MSI数据库格式吗?你听说过虎鲸工具吗?如果没有,则此MS KB文章适用于您:


二进制格式是不开放的,我甚至不想把它称为标准格式

但是,我假设您关心的不是文件格式(未记录),而是通过Windows Installer SDK、API、Orca等与MSI接口时可见的表、操作、序列等

SDK文档涵盖了所有内容,但是由于某些原因,搜索引擎对文档的排名不高。此外,您不能再单独下载Windows Installer SDK,它现在是Windows SDK的一部分


MSI文件是COM结构化存储,如下所述:。

MSI文件格式是未打开的,实际上未记录,但是访问这些文件所需的API是。该链接描述了访问和修改MSI数据库(文件)所需的API函数,以及MSI数据库中表的内容

也就是说,如果你想修改或查看MSI的内容,那么最简单的方法可能就是使用其他人制作的编辑器(后者将反过来使用这些函数)。我所知道的是:

  • InstallShield还具有MSI编辑器
如果你真的想知道更多关于MSI文件格式内部细节的信息,那么请通读一下Rob Mensching(WiX的作者)的这两篇博客文章


别忘了哪款是创建MSI文件的免费应用。

微软已经发布了MSI文件格式的详细信息。您可以在此处下载各种版本的规范:


撰写本文时的最新版本是9.0,于2018年9月12日发布。您可以下载为PDF格式。

我正在使用Orca修改文件。这很好,但这不是重点——有时我能猜出每个参数的含义,有时我不能。我正在寻找的是一个规范,它定义了Windows Installer如何使用.MSI数据库中的参数来安装软件。然而,有一些第三方产品可以创建和修改.MSI文件。这些第三方公司可能与Microsoft有协议,他们在协议中支付额外的支持和信息。实际上,所有这些第三方产品参与方产品使用公共Microsoft API读取/写入MSI文件。它都包含在Windows SDK中。MSI文件格式没有文档记录,您在哪里读到它是一个开放标准?MSI文件是COM结构化存储文件中的SQL数据库,后者本质上是文件(文件流)中的文件系统。MSI文件格式为COM结构化存储文件,包含MS-SQL数据库和相关文件流。官方网站的该页面提供下载链接,向下滚动至下载MAKEMSI v16.059标头