Installation 以编程方式提取InstallShield setup.exe的内容

Installation 以编程方式提取InstallShield setup.exe的内容,installation,installshield,Installation,Installshield,我正在尝试提取InstallShield setup.exe文件的文件内容。(我的计划是在后台工具中使用它,因此这必须以编程方式完成,无需任何用户交互。) 这可能吗? (初步研究似乎表明它将失败。) 如果可能有一个通用的解决方案,对于所有最新版本的InstallShield,这将是最好的。 否则,如果一个解决方案只适用于某些版本的InstallShield,那么它将是一个进步。(通过查看exe文件的版本资源,可能可以推断InstallShield版本asetup.exe 我知道有些Install

我正在尝试提取InstallShield setup.exe文件的文件内容。(我的计划是在后台工具中使用它,因此这必须以编程方式完成,无需任何用户交互。)

这可能吗?
(初步研究似乎表明它将失败。)

如果可能有一个通用的解决方案,对于所有最新版本的InstallShield,这将是最好的。
否则,如果一个解决方案只适用于某些版本的InstallShield,那么它将是一个进步。(通过查看exe文件的版本资源,可能可以推断InstallShield版本a
setup.exe

我知道有些InstallShield版本支持
/b
/extract\u all
。但是没有好的方法知道,只是启动exe并希望它能有序地提取和终止,而不是显示GUI对话框似乎不是一个好的解决方案。因此,我正在寻找一种更稳定的方法。
欢迎提出意见。

用法:isxunpack.exe yourinstallshield.exe


它将在同一个文件夹中解压缩。

没有支持的方法来执行此操作,但是您不需要检查与每个安装程序相关的文件,以确定在解压缩后如何实际安装它们吗?假设您可以花时间找出哪个命令行适用,下面是一些候选参数,通常允许您提取安装

基于MSI(可能不会为InstallScript MSI安装生成可用映像):

  • setup.exe/a/s/v”/qn TARGETDIR=\“选择位置\”

    或者,也可以提取先决条件(适用于可用的版本)

  • setup.exe/a“选择另一个位置”/s/v/qn TARGETDIR=\“选择一个位置”
基于脚本的安装:

  • setup.exe/s/extract\u all
基于套件(可能不清楚如何安装生成的文件):

  • setup.exe/silent/stage\u仅ISRootStagePath=“choose-a-location”
从以下内容开始:

setup.exe /?

您应该会看到一个弹出对话框,其中显示了一些选项。

名为的免费开源程序不仅会列出并提取.cab文件的内容,还会提取Macrovision的存档:

% cabextract /tmp/QLWREL.EXE
Extracting cabinet: /tmp/QLWREL.EXE
  extracting ikernel.dll
  extracting IsProBENT.tlb
  ....
  extracting IScript.dll
  extracting iKernel.rgs

All done, no errors.

在Linux上有
unshield
,这对我来说很好(即使GUI包含自定义阻止,如许可证密钥提示)。它包含在所有主要发行版(基于arch、suse、debian和fedora)的存储库中其源代码位于

这适用于由任何版本的InstallShield生成的任何setup.exe,无论项目类型是什么,还是特定的setup.exe?感谢@Christopher。尝试增强question.FWIW Michael适用于InstallShield。另外,我想您可能可以通过查找嵌入式res来推断它是什么类型的setup.exe源或正在检查DLL依赖项。我看到MSI setup.exe依赖于MSI.DLL。我猜InstallScript exe不会。请参阅带有通用setup.exe命令行的。请在此处检查我的答案:对于可以与一些旧的非基于MSI的IS设置一起使用的工具。这是唯一适用于我解包ISv12安装的程序呃。这个程序报告了一个问题,但它提取了所有内容。非常好的工具,谢谢分享-对于我当前的安装程序来说效果很好,@MichaelUrman提到的提示不幸没有。cabextract将解包任何包含Microsoft cabinet文件的内容,但通常InstallShield不会,尽管有文件称为“data1.cab”。相反,要解压缩InstallShield“cab”文件,请使用作为SynCE项目一部分的程序。SynCE现在似乎已被放弃,事实上,您也可以在不使用任何exe的情况下使用Libunsield。