2011-12-30 72 views
20

我试图提取InstallShield setup.exe文件的文件内容。 (我的计划是在后台工具中使用它,所以这必须在没有任何用户交互的情况下以编程方式完成。)以编程方式提取InstallShield setup.exe文件的内容

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

如果有可能有一个通用的解决方案,为所有最新版本的InstallShield,这将是最好的。
否则,如果解决方案仅适用于某些版本的InstallShield,那么这将是一步。 (这很可能是可能通过查看EXE文件的版本资源来演绎其中的InstallShield版本setup.exe是。

found that一些的InstallShield版本支持/b/extract_all。然而,有知道的没有什么好办法,只是发射exe文件,并希望它会提取并终止有序而不是显示GUI对话框似乎不是一个好办法。所以我因此寻找一个更稳定的方式。
想法表示欢迎。

+0

是否适用于任何版本的InstallShield生成的setup.exe,无论项目类型如何为特定的setup.exe? – 2011-12-30 16:30:39

+0

谢谢@Christopher。试图加强问题。 – leiflundgren 2011-12-30 17:03:34

回答

30

有没有支持的方式来做到这一点,但是你不需要检查与每个安装程序相关的文件,以了解在提取它们后如何实际安装它们?假设您可以花时间弄清楚哪些命令行适用,以下是一些通常允许您提取安装的候选参数。

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

FWIW Michael为InstallShield工作。此外,我想你可能能够通过查找嵌入式资源或检查DLL依赖关系来推断出什么样的setup.exe。我看到MSI setup.exe对MSI.dll有依赖性。我猜InstallScript EXE不会。 – 2012-01-03 15:58:42

+1

用[链接到pdf文件]查看[**类似的答案] **(http://stackoverflow.com/a/24987512/129130)(http://www.itninja.com/static/090770319967727eb89b428d77dcac07 .pdf)和常用的setup.exe命令行。 – 2014-08-27 06:28:58

+0

查看我的答案:http://superuser.com/a/180980/47628可用于一些较早的非基于MSI的IS设置的工具。 – bshea 2017-01-05 01:48:11

8

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

用法:isxunpack.exe你的stallshield.exe

它会提取在同一个文件夹中。

+0

这可以通过ShellExecute()以编程方式完成。 – Motes 2011-12-30 18:02:01

+2

这是我解包ISv12安装程序时唯一的程序。这个程序报告了一个问题,但它提取了一切。 – TGP1994 2012-11-24 02:52:46

+0

伟大的工具,感谢分享 - 对我目前的安装程序倒车正常工作,而@MichaelUrman提到的提示不幸没有。 – Till 2013-10-28 19:02:16

4

开始:

setup.exe /? 

你会看到一个对话框弹出窗口,显示一些选项。

+0

不会多次工作 – 2013-10-23 11:43:13

1

自由和开放源码程序cabextract将列出和提取的内容不只是。驾驶室文件,​​但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. 
+1

cabextract将解压缩包含Microsoft机柜文件的任何内容,但通常InstallShield不会打开任何文件,尽管文件名为“data1.cab”。相反,要解压缩InstallShield“cab”文件,请使用属于SynCE项目一部分的[unshield](http://sourceforge.net/projects/synce/files/Unshield/0.6/)程序。 – 2015-03-23 09:50:57

+1

SynCE似乎现在已经被放弃了,[现在在github上托管](https://github.com/twogood/unshield) – 2015-03-23 10:04:37

2

在Linux上有unshield,这对我来说效果很好(即使GUI包括定制的威慑样的许可证密钥的提示)。它包含在所有主要发行版(arch,suse,debian和fedora-based)的软件仓库中,其源代码位于https://github.com/twogood/unshield

相关问题