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

lei*_*ren 22 installer installshield

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

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

如果可以使用通用解决方案,那么最适合所有最新版本的InstallShield.
否则,如果解决方案仅适用于某些版本的InstallShield,那么这将是一个步骤.(setup.exe通过查看exe文件的版本资源,可能会推断出哪个InstallShield版本是a .

发现一些InstallShield版本支持/b/extract_all.然而,没有好的方法可以知道,只需启动exe并希望它将有序地提取和终止,而不是显示GUI对话框似乎不是一个好的解决方案.因此,我正在寻找一种更稳定的方式.
想法欢迎.

Mic*_*man 35

没有支持的方法可以执行此操作,但是您不必检查与每个安装程序相关的文件,以确定如何在提取它们之后实际安装它们吗?假设您可以花时间确定应用哪个命令行,这里有一些通常允许您提取安装的候选参数.

基于MSI(可能不会导致InstallScript MSI安装的可用映像):

  • setup.exe /a /s /v"/qn TARGETDIR=\"choose-a-location\""

    或者,还提取先决条件(对于其工作的版本),

  • setup.exe /a"choose-another-location" /s /v"/qn TARGETDIR=\"choose-a-location\""

基于InstallScript:

  • setup.exe /s /extract_all

基于套件(可能不明显如何安装生成的文件):

  • setup.exe /silent /stage_only ISRootStagePath="choose-a-location"

  • FWIW Michael 为 InstallShield 工作。此外,我认为您可以通过查找嵌入式资源或检查 DLL 依赖项来推断它是哪种 setup.exe。我看到 MSI setup.exe 依赖于 MSI.dll。我猜 InstallScript EXE 不会。 (2认同)

Mot*_*tes 11

http://www.compdigitec.com/labs/files/isxunpack.exe

用法:isxunpack.exe yourinstallshield.exe

它将在同一文件夹中提取.

  • 这是解压ISv12安装程序时唯一适合我的程序.该程序报告了一个问题,但无论如何它都提取了一切. (2认同)

ste*_*nct 5

在Linux上有unshield,它对我来说效果很好(即使GUI包含自定义的威慑力量,如许可证密钥提示)。它包含在所有主要发行版(基于arch,suse,基于debian和fedora的版本)的存储库中,其来源可从https://github.com/twogood/unshield获得。