不借助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 的工作。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我们都知道通过VS工具自带的打包后会生成两个文件,一个是exe文件,一个是msi文件。 需要说明的是msi文件时window installer开发出来的程序安装文件,它可以让你安装、修改、卸载你所安装的程序,也就是说VS工具打包生成的msi文件就是window installer的数据包,把所有和安装文件相关的内容封装在一个包里。VS工具打包生成的exe文件是主要是用于检查安装的环境,当安装的环境检查成功后,会自动再安装msi文件。当然可能会有exe文件也能直接安装的,但是开发exe的时候要比msi困难多,因为需要编写和安装、修改、卸载相关的很多内容,而msi把这些功能都集成化了,易于开发windows程序安装包。 而这个编辑器就是可以自由修改MSI中的各项值, 比如VS生成的安装包安装后,桌面快捷图标的属性中“查找目标”和“更改图标”这两个按钮不能使用,可使用以下方法: (1)下载此软件(免费破解版) (2)安装orca后,用orca打开msi安装包,在左边的Table列表中找到Shourtcut表,在右边记录中找到桌面快捷方式的记录,修改该记录的Target属性为 [TARGETDIR]应用程序名称.exe(看Directory列中值为DesktopFolder的那一行) (3)保存修改后的msi文件,重新安装后生成的快捷方式就可以查找图片和更改图标了。 再安装这两个按钮就可以使用了。。。 这只是此工具牛刀小试一下而已, 更多功能等待你去挖掘。。。。。
要将Python程序换为MSI文件,可以使用以下步骤: 1. 安装Python的打包工具py2exe。 ``` pip install py2exe ``` 2. 创建一个setup.py文件,用于配置打包选项。 例如,以下是一个简单的setup.py文件: ```python from distutils.core import setup import py2exe setup(console=['hello.py']) ``` 其中,`console`参数指定要打包的Python程序文件名。 3. 在命令行中运行以下命令,将Python程序打包为exe文件。 ``` python setup.py py2exe ``` 4. 安装WiX(Windows Installer XML)工具,用于创建MSI文件。 5. 创建一个WiX配置文件,用于配置MSI文件的安装选项。 例如,以下是一个简单的WiX配置文件: ```xml <Wix> <Product Id="*" Name="Hello World" Language="1033" Version="1.0.0.0" Manufacturer="My Company"> <Package InstallerVersion="200" Compressed="yes" /> <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="MyCompany" Name="My Company"> <Directory Id="INSTALLDIR" Name="Hello World" /> </Directory> </Directory> </Directory> <Component Id="MainExecutable" Guid="*"> <File Id="HelloWorldEXE" Name="hello.exe" Source="hello.exe" DiskId="1" /> <Shortcut Id="HelloWorldShortcut" Directory="ProgramMenuFolder" Name="Hello World" Target="[INSTALLDIR]hello.exe" /> </Component> <Feature Id="MainFeature" Title="Main Feature" Level="1"> <ComponentRef Id="MainExecutable" /> </Feature> </Product> </Wix> ``` 其中,`Product`元素指定MSI文件的基本信息和安装目录,`Component`元素指定要安装的文件和快捷方式,`Feature`元素指定要包含的组件。 6. 在命令行中运行以下命令,使用WiX工具创建MSI文件。 ``` candle.exe HelloWorld.wxs light.exe HelloWorld.wixobj -o HelloWorld.msi ``` 其中,`candle.exe`用于编译WiX配置文件,`light.exe`用于将编译后的文件打包为MSI文件。 7. 最后,你就可以在Windows上运行Hello World.msi安装程序,并将Python程序安装到指定目录中了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值