【问题标题】:Create MSI from extracted setup files从提取的安装文件创建 MSI
【发布时间】:2018-08-20 14:12:12
【问题描述】:

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

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

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

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

【问题讨论】:

  • 检查您是否找到了可行的选择?
  • 还没有,现在正在休假,但我会在下面看看你的长答案。
  • 我会使用一个应用合适的静默响应文件的套件项目以静默模式安装它。多语言设置通常不能很好地重新打包/捕获。
  • @SteinÅsmul 我没有找到解决方案;我会尝试看看是否可以重新激活我们的 Installshield 支持。
  • @SteinÅsmul 我得到的一个建议是使用必备编辑器,但它不支持文件夹,只支持单个文件夹中的文件。

标签: installation windows-installer installshield


【解决方案1】:

我是 InstallShield 新手,正在寻求类似问题的帮助,但对于您的需要,基本 MSI 项目应该就足够了。

如果您使用的是 Project Assistant 向导,当您进入应用程序文件部分时,您将各种文件夹和 setup.exe 拖放到向导中的 INSTALLDIR 文件夹中,我想就差不多了.

我从其他问题中回忆起我曾创建 SQL Server 的非安装 MSI,Install Shield 将自动识别您的 setup.exe 并在 .MSI 运行时运行它。

【讨论】:

  • " Install Shield 将自动识别您的 setup.exe 并在运行 .MSI 时运行它。"哇哦,会试试的。
【解决方案2】:

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

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

静默运行?:如果您只需要静默安装,那么大多数 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 中的标准功能以静默运行(msiexec.exe/QN 开关):

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 安装程序。让我们列出几个选项:

  1. Administrative Installation:尝试在命令提示符下执行 setup.exe /a 以查看是否出现“提取文件”对话框。如果是这样,请指定输出位置并提取所有文件。这表示一个 MSI 安装程序包含在 setup.exe 中
  2. 安装脚本设置:尝试从命令提示符执行 setup.exe /s /extract_all 以查看是否可以从 CAB 中提取文件。这适用于 Installscript 设置。或者也试试 /extract_all:[path]
  3. Installshield Suite Setups:尝试在命令提示符下执行 setup.exe /stage_onlyLots of elaborate details here
  4. Advanced Installer:试试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. Repackaging:从旧式的传统 setup.exe 安装程序创建 MSI 包的一种方法是使用Application Repackaging Tool 在运行 setup.exe 时监控对系统所做的更改。

不可能涵盖所有不同种类的 setup.exe 文件。它们可能具有各种不同的命令行开关。 There are so many possible tools that can be used。 (non-MSIMSIadmin-toolsmulti-platform 等...)。

Inno Setup 等常用工具似乎很难提取(unofficial unpacker,我没试过,由 virustotal 运行)。而NSIS 似乎使用标准存档软件可以打开的常规存档。

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


一些链接

【讨论】:

  • 我正在尝试“您是否要重新打包第三方供应商 setup.exe?”;我将编辑我原来的问题。
【解决方案3】:

那种看起来像 旧版 Installshield setup.exe安装脚本 MSI setup.exe。尽管外观相似,但它们是截然不同的野兽。

我会尝试以下方法来确定您正在处理的内容:

setup.exe /a

如果您收到一个对话框,询问您可能有一个输出文件夹 安装脚本 MSI。提取文件,然后在其中查找 MSI 输出文件夹。

如果这不起作用,请尝试 setup.exe /s /extract_allsetup.exe /extract_all:[path]。或try this answer


Installshield Suite 项目:看到您希望将此设置作为您自己的应用程序部署的一部分进行分发,我可能会使用 Installshield Suite 项目 - 如果您拥有支持此项目类型的 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多