如何从MSI软件包中提取文件?


192

我们有一些旧的补丁程序,我们希望从中获取文件,但不想花费时间将它们安装到计算机上。

谁能建议一种从MSI安装包中提取文件的方法?


您能否提供有关您要提取的确切MSI安装软件包的详细信息,您的操作系统详细信息等?
Firee 2014年

Answers:


213

首先,访问提升权限的命令提示符,以执行以下操作:

  1. 单击开始按钮。

  2. 单击所有程序。

  3. 进入配件。

  4. 右键单击“命令提示符”。

  5. 选择以管理员身份运行。

  6. 出现“ UAC提示”时,单击“继续”。

提升命令提示符后,输入以下内容:

msiexec /a drive:\filepath\to\MSI\file /qb TARGETDIR=drive:\filepath\to\target\folder

使用所需的位置来填充上述文件路径。例:

msiexec /a c:\testfile.msi /qb TARGETDIR=c:\temp\test

5
另一个快速的Google出现了这个问题:legroom.net/software/uniextract 我更喜欢使用内置功能,但看起来像是可以接受的实用程序。

5
据我了解(从msiexec /?),此命令实际上会将程序安装到该位置;我认为这不是原始请求者的想法。

8
@ user6738我已经测试过了,它没有安装软件。在appwiz中找不到该软件,也无法通过msi卸载该软件并报告未安装。它真正从我的测试中提取文件。
亚当·卡维尼斯

17
我在锁定的Win8.1计算机(工作笔记本电脑)上运行了此文件,应注意,提取文件不需要管理员权限.msi
MattDMo

5
好答案!我将其放入extractMSI.cmd文件中:msiexec /a %1 /qb TARGETDIR="%~d1%~p1%~n1" || pause并将其添加到msi文件的“使用...打开”选项
Tobias Kienzler 2014年

74

使用7Zip
它会为您解压缩MSI,CAB,一些EXE和更多程序包。也不需要管理员特权即可运行此程序。

-编辑-

而且它是开源的,所以没有烦人的消息要你买东西


13
尝试之后,msiexec做得更好(保留目录,正确命名文件等)
Michael Schubert 2012年

在带有32位7-Zip的win7 x64上,这似乎对我不起作用。您必须告诉它打开文件的特定方式(不是拖放方式)吗?
ebyrob 2013年

右键单击文件时,上下文菜单中应该有7zip选项-它为您提供了提取文件的选项
Shekhar 2013年

7
我看到很多东西前面都带有感叹号,而不是实际文件。我想有些变化或我有一个奇怪的MSI文件。我尝试了7-Zip 9.20。
mlt

@MichaelSchubert-这取决于。如果运行的不是Windows计算机,则7Zip是一个不错的选择,因为命令行版本也可用于其他系统。取决于我要说的用例。
Per Lundberg

46

还有lessmsi,它是完全免费和开源的。

没有广告或or脚的消息,它将正确保留目录结构和文件名,具有完善的命令行界面以及图形用户界面,该界面允许浏览文件以及查看内部MSI表和其他MSI属性。


7
谢谢!这帮助我从一个MSI中提取,该MSI无法使用msiexec命令说出“安装软件包名称>不支持管理员安装”的提取
axk 2011年

1
这个帮助了.. msiexec出于某种原因没有提取..
Abdul Hameed

23

内置的MSI支持文件提取(管理员安装)

MSI或Windows Installer 对此具有内置支持 -从MSI文件提取文件。这称为管理安装。基本上,它旨在作为一种创建网络安装点的方法,从该网络安装点可以在许多目标计算机上运行安装。这样可以确保源文件始终可用于任何修复操作。

请注意,运行管理员安装与使用zip工具提取文件的方式有很大不同!后者将不会调整媒体表的媒体布局,因此该包将设置为使用外部源文件-这是正确的方法。始终喜欢在任何hacky zip解压缩上运行实际的管理员安装。关于压缩,实际上,MSI文件格式中的cab文件使用三种不同的压缩算法:MSZip,LZX和Storing(未压缩)。通过执行管理员安装可以正确处理所有这些。


管理员安装有很多用途

建议阅读更多有关admin-installs的信息,因为它是一个有用的概念,并且我在stackoverflow上写了一篇文章:使用msiexec / a启动管理安装的目的是什么?

本质上,管理员安装对于以下方面很重要:

  • 提取并检查安装程序文件
  • 通过系统管理软件(例如SCCM)进行部署(避免从C:\ Windows \ Installer中缓存大量的MSI文件,因为文件是从内部驾驶室提取的)
  • 企业应用程序重新包装
  • 维修,修改和自我修复操作
  • 修补和升级
  • MSI广告(“ 从源运行 ”功能)
  • 其他一些较小的细节

请阅读上面链接的stackoverflow帖子以获取更多详细信息。这是相当长的一个重要的概念系统管理员应用程序打包安装程序开发者发布经理,以及甚至普通用户,看看他们正在安装等..


管理员安装,实用方法

您可以通过几种不同的方式执行管理安装,具体取决于安装程序的交付方式。本质上,它要么作为MSI文件提供,要么包装在setup.exe文件中

提升的命令提示符运行这些命令,并按照GUI中有关交互式命令行的说明进行操作:

  • MSI文件

    msiexec /a File.msi
    

    这是要与GUI一起运行,您也可以无声地执行此操作:

    msiexec /a File.msi TARGETDIR=C:\MyInstallPoint /qn
    
  • setup.exe文件

    setup.exe /a
    

一个SETUP.EXE文件,也可以是一个传统风格的设置(非MSI)或可怕的InstallScript MSI文件类型-一个众所周知的越野车Installshield的项目类型与混合非符合标准的MSI格式。它本质上是带有自定义更高级GUI的MSI,但同时也充满了错误。

对于旧版setup.exe文件/ a将不执行任何操作,但您可以尝试使用/ extract_all:[path]开关,本pdf中所述。对于静默安装和其他方面,它也是一个很好的参考。另一个资源是Installshield setup.exe命令行参数的列表

MSI修补程序文件(* .MSP)可以应用于管理映像,以正确提取其文件。7Zip也将能够解压缩文件,但是它们的格式不正确。

最后,如果没有其他方法,可以清除系统上的temp文件夹,以交互方式启动setup.exe,然后等待显示第一个对话框,以获取提取的安装文件。在大多数情况下,安装程序会将一堆文件提取到temp文件夹中。有时文件是普通格式,有时是CAB格式,但是Winzip,7Zip甚至是Universal Extractor(尚未测试过此产品)-可以打开这些文件。



关于stackoverflow的同一文章:stackoverflow.com/a/24987512/129130(我应该删除一个,但是两个都被赞成,并且它们最近被合并了)。
斯坦·奥斯穆尔(SteinÅsmul)2014年

8

我会建议UniExtract制作neoice的解决方案更容易。它做同样的事情,只是自动化程度更高,并且允许采用多种方法来提取MSI文件,而不仅仅是管理安装(因为他的解决方案正在使用中)。

UniExtract还可以处理与WISE或InstallShield打包在一起的exe,以及其他各种压缩格式。哦,它是免费的。

通用提取器是一种完全按照其说的做的程序:从任何类型的存档中提取文件,无论是简单的zip文件,安装程序,甚至是Windows Installer(.msi)软件包。




1

lessmsi确实是最好的选择,因为它使您可以准确选择要提取的文件以及将文件放在何处。另外,可以使用apt-getWindows框架轻松地安装它Choclatey。以上lessmsi网站已移动,也可以在GitHub上找到/下载。此外,您还可以在此处找到许多其他工具和与MSI相关的信息。:(对不起,我不能发布2个以上的链接!)






0

Installshield .exe设置(如您所称)有多种形式,通常可以从它们中提取文件。

Installshield setup.exe可以包含旧的旧版非msi安装程序或新的msi安装程序。

如果setup.exe包装了MSI安装程序,则可以指定setup.exe / a,MSI的管理员安装将运行,从而允许您指定和输出文件的位置。

如果setup.exe是旧版Installshield安装程序,则它可能支持或可能不支持通过/ extract_all:[path]开关提取文件。请在此处查看(2011年7月更新,Acresso链接不再有效,2014年2月再次更新-现在指向itninja)。

另请注意,保留这些文件的另一种方法是清除系统上的temp文件夹,以交互方式启动setup.exe,然后等待第一个对话框出现。在大多数情况下,安装程序会将一堆文件提取到temp文件夹中。有时文件是普通格式,有时是CAB格式,但是Winzip,7Zip甚至是Universal Extractor(尚未测试过此产品)-可以打开这些文件。


我执行此操作的要求现在已经通过-但我会在某些时候尝试您的建议,以查看是否可行。感谢您的回应。
马丁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.