从EXE中提取MSI

时间:2009-10-10 12:25:19

标签: installation wix windows-installer extract installshield

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

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

8 个答案:

答案 0 :(得分:88)

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

setup.exe /s /x /b"C:\FolderInWhichMSIWillBeExtracted" /v"/qn"

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

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

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

答案 1 :(得分:40)

  

快速列表 :有许多常见类型的 setup.exe 文件。以下是一些"短名单"。 More fleshed-out details here   (朝下)。

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

dark.exe 是一个WiX二进制文件 - install WiX,用于提取WiX setup.exe(截至目前)。 More(第4节)。

总有:

setup.exe /?

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

 msiexec /a File.msi
 msiexec /a File.msi TARGETDIR=C:\MyInstallPoint /qn

许多设置工具 :无法涵盖所有​​不同类型的 setup.exe 文件。它们可能具有各种不同的命令行开关。 There are so many possible tools that can be used。 (non-MSIMSIadmin-toolsmulti-platform等等。)。

NSIS / Inno: Commmon, Inno Setup 等免费工具似乎难以提取(unofficial unpacker,我未尝试过,运行通过virustotal.com)。而 NSIS 似乎使用常规档案,标准档案软件(7-zip等)可以打开和提取。

  

常规技巧 :一招是启动 setup.exe 并查看 1) system's temp folder for extracted files。   另一个技巧是使用 2) 7-Zip, WinRAR, WinZip或类似的   存档工具,看看他们是否可以阅读格式。一些人声称成功   通过 3) opening the setup.exe in Visual Studio。不是技术   我用。 4) And there is obviously application repackaging -   捕获设置运行后对计算机所做的更改   清理它 - requires a special tool(大多数免费的   来来去去,Advanced Installer Architect和AdminStudio都很棒   玩家)。


  

更新 :快速介绍用于创建的各种部署工具   安装:   How to create windows installer(综合链接)。

     

现在更简单list view of the most used development tools(2018年),以便更快地阅读和概述。

     

保管:

     

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

更新:在使用管理员安装的MSI文件提取描述之前,现在已经在下面直接添加了几个部分。最重要的是关于提取WiX setup.exe捆绑包(块上的新孩子)的模糊。 请记住,"最后的手段"找到提取的安装文件,是启动安装程序,然后在临时文件夹中查找提取的文件 (按住 Windows键,点击 R ,键入%temp%%tmp%并点击输入) - 首先尝试其他选项 - 出于可靠性原因。

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

常规链接:

提取内容:

供应商链接:


WiX Toolkit&刻录捆绑包(setup.exe文件)

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

dark.exe -x outputfolder MySetup.exe

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

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

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

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

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

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


    Admin-installs有很多用途

    建议阅读有关admin-installs的更多信息,因为它是一个有用的概念,我在stackoverflow上写了一篇文章:What is the purpose of administrative installation initiated using msiexec /a?

    从本质上讲,管理员安装非常重要:

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

    请阅读上面链接的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 文件类型 - a众所周知的错误的Installshield项目类型,具有混合的非标准兼容的MSI格式。它本质上是一个带有自定义,更高级GUI的MSI,但它也充满了bug。

    对于旧版setup.exe文件 / a 将不执行任何操作,但您可以尝试 / extract_all:[路径]开关this pdf中解释。它也是静音安装和其他东西的一个很好的参考。另一个资源是this list of Installshield setup.exe command line parameters

    MSI补丁文件(* .MSP)可以applied to an admin image来正确提取其文件。 7Zip也可以提取文件,但格式不正确。

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

答案 2 :(得分:18)

7-Zip应该可以做到这一点。

有了它,你可以提取EXE中的所有文件(因此,也是一个MSI文件)。

虽然您可以使用7-Zip执行此操作,但更好的方法是Stein Åsmul指出的管理安装。

答案 3 :(得分:15)

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

C:\> installer.exe /extract

将MSI放在安装程序旁边的文件夹中。

答案 4 :(得分:7)

从参数:

开始
setup.exe /A

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

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

答案 5 :(得分: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

答案 6 :(得分:3)

启动安装程序,但不要按安装&gt; 按钮。然后

cd "%AppData%\..\LocalLow\Sun\Java"

并在其中一个子目录中找到您的MSI文件(例如jre1.7.0_25)。

请注意,该子目录中也需要Data1.cab

答案 7 :(得分:0)

无需使用任何工具!我们可以按照简单的方式。

我不知道哪个工具构建了您的自解压安装程序,因此,我将不得不提供一般响应。

这种性质的大多数程序都将包文件(.msi)解压缩到TEMP目录中。此行为是InstallShield Developer的默认行为。

如果没有其他信息,我建议您只需启动设置,一旦显示第一个MSI对话框,您就可以检查TEMP目录中是否有新创建的子目录或MSI文件。在取消/停止安装程序之前,只需从TEMP文件夹中复制该MSI文件即可。之后,您可以取消安装。