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

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

评论

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

#1 楼

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


单击“开始”按钮。
单击“所有程序”。
转到附件。
右-单击“命令提示符”。
选择“以管理员身份运行”。
当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


评论


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

–新
09年2月14日在13:36

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

–user6738
2010年8月9日7:07

@ user6738我已经测试过了,它没有安装软件。在appwiz中找不到该软件,也无法通过msi卸载该软件并报告未安装。它确实从我的测试中提取了文件。

–亚当·卡夫尼斯(Adam Caviness)
2012年1月18日15:43

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

– MattDMo
2014年6月2日在17:24

好答案!我把它放到了extractMSI.cmd文件中:msiexec / a%1 / qb TARGETDIR =“%〜d1%〜p1%〜n1” ||暂停并将其添加到msi文件的“使用...打开”选项

– Tobias Kienzler
2014年12月1日上午11:28

#2 楼

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

-EDIT-

及其开放源代码,因此没有烦人的消息乞求您购买这些东西

评论


尝试之后,msiexec做得更好(保留目录,正确命名文件等)。

–迈克尔·舒伯特(Michael Schubert)
2012年5月23日15:44

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

– ebyrob
2013年3月12日14:47



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

– Shekhar
13年3月13日在19:48

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

– mlt
13年10月1日在23:08

msiexec将正确修改msi文件的媒体表以使用提取的文件,而不使用内部驱动程序。始终喜欢使用管理员安装功能,而不是这种hacky的解压缩方法。有关更多详细信息,请参见下面的我的帖子。

–斯坦·奥斯姆(SteinÅsmul)
17年7月12日在15:10

#3 楼

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

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

评论


谢谢!这帮助我从MSI提取文件,而该MSI不能使用msiexec命令说出<安装程序包名称>的“不支持管理员安装”来提取文件。

–axk
2011年1月17日17:39

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

–阿卜杜勒·哈米德(Abdul Hameed)
19-09-13在10:02

#4 楼

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

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

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


管理员安装有很多用途

建议您阅读有关管理员安装的更多信息,因为它会是一个有用的概念,我写了一篇关于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: [路径]开关,如本pdf中所述。对于静默安装和其他方面,它也是一个很好的参考。另一个资源是Installshield setup.exe命令行参数的列表。

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

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

评论


另请参阅以下答案:superuser.com/questions/307678/…

–斯坦·奥斯姆(SteinÅsmul)
2014年10月10日21:32

关于stackoverflow的同一文章:stackoverflow.com/a/24987512/129130(我应该删除一个,但是两个都被赞成,并且它们最近被合并了)。

–斯坦·奥斯姆(SteinÅsmul)
2014-10-10 21:33



#5 楼

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

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


Universal Extractor是一个程序,可以准确地表达
:从任何类型的存档中提取文件,无论是否是
/>一个简单的zip文件,一个安装程序
或什至Windows Installer
(.msi)程序包。


#6 楼

如果安装Total Commander,则有一个插件可以打开和提取MSI文件。

评论


对。但不幸的是,仅适用于32位TC

– Timores
13年5月5日在9:42

#7 楼

您可以使用Orca这个应用程序是Platform SDK的一部分,但是您也可以从此处下载它http://astebner.sts.winisp.net/Tools/Orca.zip

评论


Orca更适合提取元数据,例如文件,文件夹和注册表。通常,对于提取实际文件不是很有用(如果文件未存储在二进制表中,则完全没有用)。

– Synetech
11年8月8日在19:53

#8 楼

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

#9 楼

您也可以尝试Heath Stewart的MSI提取器。

#10 楼

只需下载Universal Extractor。它提取所有类型的文件,包括.exe,.msi,.rar,.zip,.kgb等。

#11 楼

尝试将InstallSite上托管的MSITOOLS.EXE用于GUI提取程序。

#12 楼

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(尚未测试此产品)-可以打开这些文件。

评论


我执行此操作的要求现已通过-但我会在某个时候尝试您的建议,以查看是否可行。感谢您的回应。

–马丁
09年7月1日在9:54

#13 楼

将PeaZip添加到列表。像冠军一样工作

评论


请阅读“我如何推荐软件”以获取有关如何推荐软件的一些提示。至少您应该提供的不仅仅是链接,例如有关软件本身的一些其他信息,例如如何使用它来解决问题中的问题。

–DavidPostill♦
15年7月21日在22:01

#14 楼

如果要提取MSI文件,可以调用MsiInstallProductW
函数。我用Go编写了一个实现,只有一个文件50行。
它比LessMsi小,并且只有一个Exe。用法示例:
msi-extract test.msi