【问题标题】:Wix - How to run/install application without UIWix - 如何在没有 UI 的情况下运行/安装应用程序
【发布时间】:2018-06-17 08:21:10
【问题描述】:

我有 exe 文件,需要将其转换为 msi 并使用组策略在域中的更多计算机上安装它,而无需用户交互。

我找到了这个教程https://stackoverflow.com/questions/19271862/wix-how-to-run-exe-files-after-installation-from-installed-directory/19274431#=

但这使用 UI,用户必须点击按钮。我需要安装 msi 启动 exe 文件并在后台安装到计算机 - 没有任何 ui。

有可能吗?如何。

感谢您的帮助。

【问题讨论】:

  • 是的,但是在上面的 msi 安装教程结束时。用户必须点击检查按钮和“完成”按钮。然后从 msi 提取到文件夹的 exe 文件正在运行并开始程序安装。当我使用 /quiet msi 时,只将 exe 提取到文件中,但没有开始安装。
  • “有 exe 文件并需要将其转换为 msi”是什么意思?您有要放入 MSI 文件的 exe 文件吗?或者您已经有一个您想要的 MSI 格式的 exe 安装程序?
  • 我有 exe,我想在域控制器上使用 GPO 策略将它安装在域中的更多计算机上。当我想使用 GPO 时,我必须从 msi 文件安装。我需要从 msi 安装 exe。将 exe 从 msi 提取到文件夹并静默运行此文件就足够了。但我不知道怎么做。

标签: c# windows-installer exe vix


【解决方案1】:

由于 MSI 安装通常遵循 Standard Installer Command-Line Options,因此您可以使用 /quiet 作为抑制 UI 的选项,安装程序只会“执行”。

【讨论】:

    【解决方案2】:

    不要在 MSI 文件中嵌入安装程序可执行文件

    好的,问题不是 100% 清楚,但我会试一试。以这种方式交付 EXE 文件(嵌入在 MSI 文件中)并不理想。事实上,这是一个非常糟糕的主意——说实话。 MSI 文件通常不应仅用作提供嵌入式 setup.exe 文件的包装器。 MSI 及其先进的模拟、排序和调节的绝对复杂性使得这种方法非常容易出错并且难以实施和测试。此外,如果您嵌入的二进制文件是一个包含在 setup.exe 二进制文件中的 MSI 文件,则 MSI 将失败,因为它不允许两个并发安装序列 - 除非您从用户界面序列安装它们(这不会'静默运行时不起作用)。


    静默运行 setup.exe 文件还是使用应用程序重新打包?

    MSI 文件在静默模式(无 GUI)下可靠运行的能力是传统风格设置无法比拟的。但是,您通常可以找到旧版(或现代)setup.exe 或安装二进制文件的开关,这将允许它以静默模式安装,但不能使用 MSI 提升的安装权限。您必须以真正的管理员权限运行。此外,您经常必须通过对话框“记录”一次运行并使用记录的响应来运行安装序列 - 这很容易出错,因为在没有记录“响应”的地方可能会出现意外的对话框。然后你就卡住了。 MSI's reliable silent running is one of the key corporate advantages of MSI.

    您可以在我不久前写的这个答案中找到很多关于此的信息:How can I use powershell to run through an installer?。不要让问题标题让您感到困惑,这个问题仍然与您所问的非常相似 - 至少我是这样认为的。请至少快速浏览一下。

    答案还描述了“应用程序重新打包” - 将旧版(或现代)setup.exe 安装程序转换为本机 MSI 格式的过程。这是一项需要对 MSI 有充分了解的专业任务,但一旦正确完成,就会产生出色的结果,而且静默安装轻而易举,因为您不必依赖上述脆弱的“静默响应文件”。


    引导程序/链接器

    虽然我不确定它们是否都允许您在静默模式下安装,但有一些工具可让您从启动程序 EXE 文件按顺序安装 MSI 文件和安装二进制文件。这里还有另一个讨论各种引导程序选项的答案:Wix and .NET Framework (prerequisites)。本次讨论中推荐的引导程序之一是dotNetInstaller。我从来没有用过它,所以我不能告诉你它是否有任何好处。它可能比 WiX 自己的称为Burn 的引导程序功能更基于 GUI,但是我不确定它是否是匹配功能。如果您进行测试,请报告您的发现。当然还有其他引导者,但这不是我的专业领域。诸如 Installshield 之类的商业工具(至少在其高级版本中)具有使用 GUI 构建此类引导程序的功能,我认为它们将它们称为“安装套件” - 或类似的东西。本质上只是一组安装程序和先决条件。我没试过this bootstrapper feature in Advanced Installer

    关于刻录:

    • Burn 基于 XML 标记和编译 - 通常使用 Visual Studio。
    • 这里是How to install the .NET Framework using Burn 的描述。
    • The official documentation for Burn
    • 正如您所见,它比允许您使用 GUI 构建安装程序序列或“链”的工具要复杂一些。
    • 它免费且可靠。
    • 我会尝试为您挖掘一个 Burn 样本。
    • 好的,这应该是 Burn 可以做的一个好的示例:https://github.com/frederiksen/Classic-WiX-Burn-Theme。我认为,此示例中有一些重复的 Visual Studio 项目 GUID,但这对您来说应该不是问题,除非您出于某种原因将两个项目都添加到构建过程中(然后重复的 GUID 可能会混淆您的构建工具 - 只是曾经发生在我身上的事情)。
    • 为了清楚起见,Burn 构建 setup.exe 引导程序包,能够包含 MSI 文件和 EXE 文件,以给定的顺序运行,它是 WiX 工具包的一部分。 WiX 本身从 WiX XML 源文件构建 MSI 文件。刻录 setup.exe 文件也是从 WiX XML 源文件构建的,但架构明显不同。只为那些从未见过这些工具的人准备。上面的示例将很好地显示 WiX MSI 项目和 WiX Burn 项目的差异。它还有一个项目来构建二进制文件,然后将其包含在 MSI 和 setup.exe 中。

    【讨论】:

      猜你喜欢
      • 2019-01-15
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 2012-11-09
      相关资源
      最近更新 更多