谁能建议一种从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
评论
您能否提供有关要提取的确切MSI安装软件包,操作系统详细信息等的更多信息。