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