不借助windows之外任何工具解压msi文件并提取其中文件

核心:

如需把f盘下test.msi文件解开到目录f:\dir,操作如下:

打开命令提示符,输入

msiexec /a "F:\test.msi" /qb TARGETDIR="F:\dir"  //注释:其中F:\test.msi是msi文件的路径,F:\dir 是解压路径。

回车,将会显示跟安装 msi文件类似的界面,但速度很快,因为只有解压而没有安装的过程。

操作日志记录:

同事拿来一张光盘,里面是一个查询系统功能,需要把其中查询出来的结果导出为电子表格。打开光盘看里面主要文件是一个msi文件,其它还有.net framwork、字体图片等文件,不用说,数据库应该在msi文件里面,一般msi要安装才能使用,但习惯上msi安装很慢,要“配置”老半天。前些天观察nod32扫描,它可以扫描msi文件的内部,也就是说msi也是一个公开的压缩格式。首先怀疑是zip格式,修改文件名后缀为.zip,打开,显示格式错误,又尝试.cab,也不对。于是上网搜索得解决之法如上。

msi文件是使用msiexec打开的。

网上有很多第三方的工具,用于解压缩提取msi文件,但其实根本没有必要,会想到解压缩msi文件的人,肯定不是菜鸟,对命令行多少都会懂得一些,使用命令行,更快捷,且不用安装乱七八糟的第三方软件。

参考:

在命令行下输入msiexec,不加任何参数,显示msiexec 文档如下

------------- msiexec 文档----------------------------------------------------

Windows (R) Installer. V 4.5.6001.22159

msiexec /Option <Required Parameter> [Optional Parameter]

安装选项
</package | /i> <Product.msi>
安装或配置产品
/a <Product.msi>
管理安装 - 在网络上安装产品
/j<u|m> <Product.msi> [/t <Transform List>] [/g <Language ID>]
公布产品 - m 公布到所有用户,u 公布到当前用户
</uninstall | /x> <Product.msi | ProductCode>
卸载产品
显示选项
/quiet
安静模式,无用户交互
/passive
无人参与模式 - 只显示进度栏
/q[n|b|r|f]
设置用户界面级别
n - 无用户界面
b - 基本界面
r - 精简界面
f - 完整界面(默认值)
/help
帮助信息
重新启动选项
/norestart
安装完成后不重新启动
/promptrestart
必要时提示用户重新启动
/forcerestart
安装后始终重新启动计算机
日志选项
/l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <LogFile>
i - 状态消息
w - 非致命警告
e - 所有错误消息
a - 操作的启动
r - 操作特定记录
u - 用户请求
c - 初始用户界面参数
m - 内存不足或致命退出信息
o - 磁盘空间不足消息
p - 终端属性
v - 详细输出
x - 额外调试信息
+ - 扩展到现有日志文件
! - 每一行刷新到日志
* - 记录所有信息,除了 v 和 x 选项
/log <LogFile>
与 /l* <LogFile> 相同
更新选项
/update <Update1.msp>[;Update2.msp]
应用更新
/uninstall <PatchCodeGuid>[;Update2.msp] /package <Product.msi | ProductCode>
删除产品的更新
修复选项
/f[p|e|c|m|s|o|d|a|u|v] <Product.msi | ProductCode>
修复产品
p - 仅当文件丢失时
o - 如果文件丢失或安装了更旧的版本(默认值)
e - 如果文件丢失或安装了相同或更旧的版本
d - 如果文件丢失或安装了不同版本
c - 如果文件丢失或较验和与计算的值不匹配
a - 强制重新安装所有文件
u - 所有必要的用户特定注册表项(默认值)
m - 所有必要的计算机特定注册表项(默认值)
s - 所有现有的快捷键方式(默认值)
v - 从源运行并重新缓存本地安装包
设置公共属性
[PROPERTY=PropertyValue]

请查阅 Windows (R) Installer SDK 获得有关
命令行语法的其他文档。

版权所有 (C) Microsoft Corporation. 保留所有权利。
此软件的部分内容系基于 Independent JPEG Group 的工作。

-----------------------------------------------------------------