从EXE中提取MSI

emd*_*ar2 53 installation windows-installer installshield wix extract

我想提取EXE设置的MSI以通过网络发布.

例如,使用Universal Extractor,但它不适用于Java Runtime Environment.

Dan*_*odt 92

对于基于InstallShield MSI的项目,我发现以下工作:

setup.exe /s /x /b"C:\FolderInWhichMSIWillBeExtracted" /v"/qn"
Run Code Online (Sandbox Code Playgroud)

此命令将导致在您可以自由指定的目录中提取的MSI以及无提示的产品卸载失败.

命令行基本上告诉setup.exe尝试卸载产品(/ x)并以静默方式(/ s)执行此操作.这样做时,它应该将MSI提取到特定位置(/ b).

/ v命令将参数传递给Windows Installer,在本例中为/ qn参数./ qn参数禁用安装程序的任何GUI输出.

  • 我实际上只是在一些产品文档中使用了这个答案!不过,我确实稍微调整了它:`setup.exe /s /bC:\msidir`,然后在向导出现时取消安装。我更喜欢这个,因为它不会卸载任何东西。 (2认同)

Ste*_*mul 47

快速列表:有许多常见类型的setup.exe文件.以下是其中一些"短名单".这里有更多充实的细节 (朝下).

Setup.exe提取:(尝试各种口味)

setup.exe /a
setup.exe /s /extract_all
setup.exe /s /extract_all:[path]
setup.exe /stage_only
setup.exe /extract "C:\My work"
setup.exe /x
setup.exe /x [path]
setup.exe /s /x /b"C:\FolderInWhichMSIWillBeExtracted" /v"/qn"

dark.exe -x outputfolder setup.exe
Run Code Online (Sandbox Code Playgroud)

dark.exe是一个WiX二进制文件 - 安装WiX以提取WiX setup.exe(截至目前).更多(第4节).

总是:

setup.exe /?
Run Code Online (Sandbox Code Playgroud)

MSI提取物: msiexec.exe /File.msi提取:

 msiexec /a File.msi
 msiexec /a File.msi TARGETDIR=C:\MyInstallPoint /qn
Run Code Online (Sandbox Code Playgroud)

许多设置工具:不可能涵盖所有不同类型的可能setup.exe文件.它们可能具有各种不同的命令行开关.可以使用许多可能的工具.(non-MSI,MSI,admin-tools,multi-platform,等...).

NSIS/Inno: Commmon,免费工具,例如Inno Setup似乎难以提取(非官方的解包器,我没有尝试过,由virustotal.com运行).而NSIS似乎使用标准存档软件(7-zip等)可以打开和提取的常规存档.

一般技巧:一个技巧是启动setup.exe并查看.另一个技巧是使用或类似的归档工具,看看他们是否可以读取格式.有些人声称成功了.不是我使用的技术.- 在设置运行并清理后捕获对计算机所做的更改 -需要一个特殊工具(大多数免费的工具来去匆匆,Advanced Installer Architect和AdminStudio都是大玩家).1) system's temp folder for extracted files2) 7-Zip, WinRAR, WinZip3) opening the setup.exe in Visual Studio4) And there is obviously application repackaging


更新:用于创建安装程序的各种部署工具的快速演示: 如何创建Windows安装程序(综合链接).

以及截至目前(2018年)最常用的开发工具的简单列表视图,以便更快地阅读和概述.

并保管:


只是一个免责声明:setup.exe文件可以包含嵌入式MSI,它可以是传统样式(非MSI)安装程序,也可以只是一个常规可执行文件,无法提取任何内容.下面的"讨论"首先介绍了MSI文件的管理映像的使用以及如何从setup.exe文件中提取MSI文件.然后它提供了一些处理其他类型的setup.exe文件的链接.另请参阅评论部分.

更新:在使用管理安装的MSI文件提取描述之前,现在已经在下面直接添加了几个部分.最重要的是关于提取WiX setup.exe捆绑包(块上的新孩子)的模糊.请记住,"不得已而为之"找到提取的安装文件,是启动安装程序,然后寻找临时文件夹中提取的文件(按住Windows Key,轻按R,类型%temp%%tmp%命中Enter) -首先尝试其他选项虽然-为了可靠性的原因.

抱怨所有这些沉重的相互联系的"广义混乱".如果你在链接中挖掘得足够多,我相信你会找到你需要的东西,但内容应该真的得到清理和整理.

一般链接:

提取内容:

供应商链接:


WiX Toolkit和Burn Bundles(setup.exe文件)

技术说明:WiX工具包现在提供setup.exe使用引导程序工具构建的文件Burn,您需要工具包自己的dark.exe反编译器来提取.Burn用于构建setup.exe文件,可以按指定顺序安装多个嵌入式MSI或可执行文件.这是一个示例提取命令:

dark.exe -x outputfolder MySetup.exe
Run Code Online (Sandbox Code Playgroud)

在运行此类提取之前,需要执行一些必备步骤:

  1. 下载并安装WiX工具包(通过WiX上的一些额外上下文信息链接到之前的答案 - 以及下载链接).
  2. 安装WiX后,只需打开一个command prompt,CDsetup.exe所在的文件夹即可.然后指定上面的命令并按Enter
  3. 输出文件夹将包含几个子文件夹,其中包含已提取的MSI和EXE文件以及Burn GUI的清单和资源文件(如果首先存在于setup.exe文件中的任何文件).
  4. 现在,您现在可以提取提取的MSI文件(或EXE文件)的内容.对于意味着运行管理员安装的MSI - 如下所述.

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

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

请注意,运行管理安装与使用zip工具提取文件是完全不同的!后者不会调整媒体表的媒体布局,以便将包设置为使用外部源文件 - 这是正确的方法.总是喜欢在任何hacky zip提取上运行实际的管理员安装.至于压缩,实际上有三种不同的压缩算法用于MSI文件格式内的cab文件:MSZip,LZX和存储(未压缩).通过执行管理员安装可以正确处理所有这些问题.

重要: Windows Installer会在系统上缓存已安装的MSI文件,以便进行修复,修改和卸载方案.从Windows 7(MSI版本5)开始,MSI文件现在缓存为完整大小,以避免破坏阻止设置启动时UAC提示的文件签名(已知的Vista问题).这可能会导致磁盘空间消耗大幅增加(某些系统为几千兆字节).要防止缓存巨大的MSI文件,您应该在安装之前运行该程序包的admin-install.这就是在托管网络中正确部署的公司如何做事,它将剥离cab文件,并使用小的MSI文件和除此之外的文件创建网络安装点.


管理员安装有很多用途

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

从本质上讲,管理员安装对于:

  • 提取和检查安装程序文件
    • 了解实际安装的内容和位置
    • 确保文件看起来值得信赖和安全(没有病毒 - 恶意软件和病毒仍然可以隐藏在MSI文件中)
  • 通过系统管理软件进行部署(例如SCCM)
  • 公司申请重新包装
  • 修理,修改和自我修复操作
  • 修补和升级
  • MSI广告(其他细节包括" 从源代码运行 "功能,您可以直接从网络共享运行,只安装快捷方式和注册表数据)
  • 其他一些较小的细节

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


管理员安装,实用的操作方法

您可以通过几种不同的方式执行admin-install,具体取决于安装程序的交付方式.基本上它既可以作为MSI文件提供,也可以包含在setup.exe文件中.

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

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

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

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

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

  • +1.有没有一个网站可以展示出优秀答案的例子,比如这个? (2认同)

Bur*_*ard 19

7-Zip应该可以解决问题.

有了它,您可以提取EXE中的所有文件(因此,也可以是MSI文件).

虽然您可以使用7-Zip,但更好的方法是SteinÅsmul指出的管理安装.

  • 不适用于多种原因,包括vc_redist (7认同)

jav*_*ard 15

我猜这个问题主要是关于给出标签的InstallShield,但是如果有人为这些基于WiX的软件包(可能还有其他软件包)带来同样的问题,只需用/ extract调用安装程序,如下所示:

C:\> installer.exe /extract
Run Code Online (Sandbox Code Playgroud)

这将把MSI放在安装程序旁边的文件夹中.


小智 8

从参数开始:

setup.exe /A
Run Code Online (Sandbox Code Playgroud)

要求保存包含的文件(包括MSI).

这可能取决于创建的软件setup.exe.

  • 然后在系统临时目录中找到msi文件.然后msiexec/a"some_file.msi"/ qb TARGETDIR ="D:\ some_file \" (3认同)
  • 这不会提取 MSI,而是执行“管理员安装”,而不是简单地提取原始 MSI 文件。目标目录中的 MSI 不会将安装文件压缩到其中,但安装文件将位于目标目录的子文件夹中,而这些子文件夹又会被新的 MSI 文件引用。因此,如果这是您的目标,那么 MSI 不能用于轻松的重新分发。 (2认同)

小智 6

唯一的方法是运行exe并收集MSI.你必须要注意的是,如果你使用MST转换MSI,它们可能会丢失.

我使用这个批处理命令行:

SET TMP=c:\msipath

MD "%TMP%"

SET TEMP=%TMP%

start /d "c:\install" install.exe /L1033

PING 1.1.1.1 -n 1 -w 10000 >NUL

for /R "%TMP%" %%f in (*.msi) do copy "%%f" "%TMP%"

taskkill /F /IM msiexec.exe /T
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

215626 次

最近记录:

6 年,8 月 前