我有一个带有第三方安装程序的文件夹,该文件夹包含setup.exe及其旁边的所有CAB文件(以及许多相关文件夹)。
我希望能够将此第三方安装程序重新打包为可以在我的主应用程序安装程序中使用的必备软件(或作为链接的msi软件包)。
我不仅要提取/复制客户端计算机上的那些文件,还要运行安装程序。
是否可以使用Installshield从所有这些文件创建MSI?我似乎找不到能做到这一点的项目类型。
答案 0 :(得分:0)
我是一个InstallShield菜鸟,正在寻求类似问题的帮助,但对于您的需要,基本的MSI项目就足够了。
如果您使用的是Project Assistant向导,则在转到“应用程序文件”部分时,将各种文件夹和setup.exe拖放到向导中的INSTALLDIR文件夹中,我想就是这样
从其他问题中回想起,我曾创建过非安装的SQL Server MSI,Install Shield将自动识别您的setup.exe,并在运行.MSI时运行它。
答案 1 :(得分:0)
问题方案 :您的方案是什么?
静音运行? :如果您只需要静默安装,则大多数 setup.exe
包装器将允许您执行此操作,但是对于用于创建setup.exe
文件的每个工具而言,包装器都不同。 Installshield的setup.exe文件需要一个静默响应文件,其他工具则采用不同的方式。 I wrote about Installshield silent uninstall a couple of days ago。还有here is a piece on regular silent install and various types of Installshield setup.exe files。
记录响应文件:
Setup.exe /r /f1”c:\temp\my-answer-file.iss”
基本静默安装:
Setup.exe /s /f1”c:\temp\my-answer-file.iss”
如果setup.exe
是MSI的包装,并且您有一个分发系统可用来分发必备组件,则通常最好在公司环境中提取MSI,并且使用MSI中的标准功能以静默方式运行( /QN
的 msiexec.exe
开关):
msiexec.exe /I "C:\Your.msi" /QN /L*V "C:\msilog.log" TRANSFORMS="C:\1031.mst;C:\My.mst"
快速参数说明:
/I = run install sequence
/QN = run completely silently
/L*V "C:\msilog.log" = verbose logging
TRANSFORMS="C:\1031.mst;C:\My.mst" = Apply transforms 1031.mst and My.mst (see below).
文件提取? :将文件从 setup.exe
中提取出来可能很困难,也很容易。它取决于构建它的目的,并且几乎可以是“任何东西”-从已建立的部署工具到“任何人”制作的专有软件。要从各种 setup.exe
中提取文件,您可以在此答案中找到大量信息:
基本上,您将 setup.exe /stage_only
用于Installshield Suite可执行文件。 setup.exe /a
用于基本MSI和Installscript MSI可执行文件。 setup.exe /s /extract_all
用于旧版Installscript可执行文件。以下说明。
MSI导入 :如果您要提取文件并在其中看到一个MSI文件, 那么您应该能够导入或打开该MSI文件 Installshield(或其他部署工具)。
我将尝试提取选项的快速“简短列表”(不确定是否是您真正需要的):
已经有MSI? :您知道 setup.exe
包含什么吗?从技术上讲,它可能已经是包含MSI文件的包装程序,或者它可能是某些旧式部署工具的输出,而不是Windows Installer。让我们只列出几个选项:
setup.exe /a
,以查看是否出现“提取文件”对话框。如果是这样,请指定输出位置并解压缩所有文件。这表明MSI设置包含在setup.exe中。setup.exe /s /extract_all
,以查看是否可以从CAB中提取文件。这用于Installscript设置。或也尝试 /extract_all:[path]
。setup.exe /stage_only
。 Lots of elaborate details here。setup.exe /extract "C:\My work"
或 setup.exe /x
> dark.exe -x outputfolder setup.exe
。只能使用dark.exe工具从框架本身提取WiX setup.exe文件。换句话说,您需要安装WiX才能提取WiX setup.exe(到目前为止)。setup.exe /X [path]
提取文件。不可能涵盖所有可能的setup.exe文件。它们可能具有各种不同的命令行开关。 There are so many possible tools that can be used。 ({non-MSI
,MSI
,admin-tools
,multi-platform
等)。
诸如Inno Setup
之类的常用工具似乎使提取变得困难(unofficial unpacker,不是我尝试过的,而是由virustotal运行的)。 NSIS
似乎使用标准存档软件可以打开的常规存档。
常规技巧 :一种技巧是启动setup.exe,并在 1)系统的临时文件夹中查找提取的文件。另一个技巧是使用 2)7-Zip,WinRAR,WinZip 或类似的存档工具来查看它们是否可以读取格式。有些人通过 3)在Visual Studio中打开setup.exe 来声明成功。不是我使用的技术。
某些链接 :
答案 2 :(得分:0)
这种外观类似于旧版Installshield
setup.exe
或 安装脚本MSIsetup.exe
。尽管外观相似,但它们是非常不同的野兽。我会尝试以下方法来确定您要处理的内容:
setup.exe /a
如果出现对话框询问您是否需要输出文件夹, 安装脚本MSI。提取文件,然后在中查找MSI 输出文件夹。
如果这样不起作用,请尝试
setup.exe /s /extract_all
或setup.exe /extract_all:[path]
。或try this answer。
Installshield Suite项目 :看到您想将此设置作为自己的应用程序部署的一部分进行分发时,我可能会使用 Installshield Suite Project >-如果您具有支持此项目类型的Installshield版本的许可证。 See screen shot here。
Silent_Install.bat
文件(以及相关的 Silent_Uninstall.bat
用于卸载)应包含将软件包插入其中时需要使用的命令行套件项目。然后,您还将自己的应用程序包含在套件安装中。确保在所有部署方案中都进行良好的测试:安装,升级,修改,卸载,修补等...总会有惊喜。
重新打包 :或者,您也可以使用捕获工具将安装程序重新打包,而不是以现有格式“按原样”运行它。然后,您基本上可以通过监视安装来“记录”安装程序所做的更改。在大多数情况下,此方法有效,但需要大量知识才能正确清理。 There are also challenges for multi-lingual setups - which this appears to be
。该方法已在公司中广泛使用,以将旧版安装程序转换为MSI格式-并且仍在使用。最终结果是可以以标准Windows Installer方式以静默方式安装MSI(这是可靠的-比以静默方式运行的旧版setup.exe更为可靠)。尽管原则上您可以将捕获的MSI包装到您自己产品的MSI中,但我仍会将其包装在套件项目中。我不建议这样做-有几个原因。最重要的是,您可能需要自行更新运行时设置-无需重建自己的MSI。