首页 > 解决方案 > 从提取的安装文件创建 MSI

问题描述

我有一个带有 3rd 方安装程序的文件夹,该文件夹包含一个 setup.exe 及其旁边的所有 CAB 文件(以及许多相关文件夹)。

文件夹内容

我希望能够将此第 3 方安装程序重新打包成我可以在我的主应用程序安装程序中使用的东西,作为先决条件(或作为链接的 msi 包)。

我不仅要在客户端机器上提取/复制这些文件,还要运行安装程序。

是否可以使用 Installshield 从所有这些文件创建 MSI?我似乎找不到可以做到的项目类型。

标签: installationwindows-installerinstallshield

解决方案


问题场景:你的场景是什么?

  • 您是否正在接管旧设置的处理和更新并需要将其转换为正确的格式?
  • 您是否尝试重新打包第三方供应商 setup.exe?
  • 您是否试图获取 CAB 内的文件?或者只是提取文件,以便可以以其他方式重新打包它们。由于某些原因?
  • 您是否尝试在静音模式下尽可能轻松可靠地安装整个 shebang?
  • 其他一些问题场景?

静音运行?:如果您只需要静默安装,那么大多数包装器都有命令行开关setup.exe可以让您执行此操作,但用于创建setup.exe文件的每个工具都不同。Installshield 的 setup.exe 文件需要一个静默响应文件,其他工具的做法不同。几天前我写了一篇关于 Installshield 静默卸载的文章。这是关于常规静默安装和各种类型的 Installshield setup.exe 文件的文章

记录响应文件:

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 可执行文件。对于 Basic MSI和setup.exe /aInstallscript MSI 可执行文件。setup.exe /s /extract_all对于旧版 Installscript 可执行文件。以下说明。

MSI 导入:如果您设法提取文件并在那里看到一个 MSI 文件,那么您应该能够在 Installshield(或其他部署工具)中导入或打开该 MSI 文件。


我将尝试提取选项的快速“短名单”(不确定这是否是您真正需要的):

已经是微星了?: 你知​​道setup.exe里面有什么吗?从技术上讲,它可能已经是包含 MSI 文件的包装器,或者它可能是某些旧版部署工具的输出,而根本不是 Windows 安装程序。让我们列出几个选项:

  1. 管理安装:尝试setup.exe /a从命令提示符处执行,看看是否出现“提取文件”对话框。如果是这样,请指定输出位置并提取所有文件。这表示一个 MSI 安装程序包含在 setup.exe 中
  2. Installscript setup:尝试setup.exe /s /extract_all从命令提示符执行一个,看看您是否可以从 CAB 中提取文件。这适用于 Installscript 设置。或者也试试/extract_all:[path]
  3. Installshield Suite 设置:尝试setup.exe /stage_only从命令提示符执行。这里有很多详细的细节
  4. 高级安装程序:尝试做setup.exe /extract "C:\My work"setup.exe /x
  5. WiX:从命令提示符尝试以下操作:dark.exe -x outputfolder setup.exe. 只能使用框架本身的 dark.exe 工具提取 WiX setup.exe 文件。换句话说,您需要安装 WiX 以提取 WiX setup.exe(截至目前)。
  6. Wise:Wise 不再销售,但许多旧设置仍然存在。您可以尝试使用setup.exe /X [path].
  7. 重新打包:从旧式的传统 setup.exe 安装程序创建 MSI 包的一种方法是使用应用程序重新打包工具在 setup.exe 运行时监控对系统所做的更改正在运行。

不可能涵盖所有可能的 setup.exe 文件。它们可能具有各种不同的命令行开关。有很多可能的工具可以使用。( non-MSI, MSI, admin-tools, multi-platform, 等...)。

诸如Inno Setup似乎使提取变得困难的常用工具(非官方解包器,我没有尝试过,由virustotal运行)。而NSIS似乎使用标准存档软件可以打开的常规存档。

一般技巧:一个技巧是启动 setup.exe 并在1) 系统的临时文件夹中查找提取的文件。另一个技巧是使用2) 7-Zip、WinRAR、WinZip或类似的存档工具来查看它们是否可以读取该格式。有些人声称通过3) 在 Visual Studio 中打开 setup.exe获得了成功。不是我使用的技术。


一些链接


推荐阅读