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

时间:2011-12-30 15:50:36

标签: installer installshield

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

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

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

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

5 个答案:

答案 0 :(得分:34)

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

基于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"

答案 1 :(得分:10)

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

用法:isxunpack.exe yourinstallshield.exe

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

答案 2 :(得分:4)

开始于:

setup.exe /?

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

答案 3 :(得分:4)

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

获得。

答案 4 :(得分:1)

名为cabextract的免费开源程序将列出并提取不仅仅是.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.