我正在尝试提取InstallShield setup.exe文件的文件内容。 (我的计划是在后台工具中使用它,因此必须以编程方式完成,无需任何用户交互。)
这可能吗?
(初步研究似乎表明它会失败。)
如果可以使用通用解决方案,那么最适合所有最新版本的InstallShield
否则,如果解决方案仅适用于某些版本的InstallShield,那么这将是一个进步。 (通过查看exe文件的版本资源,可能会推断出setup.exe
是哪个InstallShield版本。
我found that一些InstallShield版本支持/b
或/extract_all
。然而,没有好的方法可以知道,只需启动exe并希望它将有序地提取和终止,而不是显示GUI对话框似乎不是一个好的解决方案。因此,我正在寻找一种更稳定的方式
欢迎提示。
答案 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.