Wix - 如何在没有UI

时间:2018-01-08 10:57:25

标签: c# windows-installer exe vix

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

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

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

有可能吗?如何。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

MSI安装通常遵循以下内容:https://msdn.microsoft.com/en-us/library/windows/desktop/aa372024(v=vs.85).aspx因此您可以使用/ quiet作为选项来禁止用户界面,并且只需"执行此操作"

答案 1 :(得分:0)

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

好的,问题不是100%清楚,但我会试一试。以这种方式提供EXE文件 - 嵌入在MSI文件中 - 并不理想。事实上,这是一个非常糟糕的主意 - 说实话。通常不应将MSI文件用作包装器来提供嵌入式setup.exe文件。 MSI的高度复杂性及其先进的模拟,排序和调节使得这非常容易出错,难以实施和测试。此外,如果您嵌入的二进制文件是一个包含在setup.exe二进制文件中的MSI文件,那么MSI将失败,因为它不允许两个并发安装序列 - 除非您从用户界面序列安装它们(无声地跑步时不会工作。

以静默方式运行setup.exe文件或使用Application Repackaging?

传统样式设置无法匹配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的专业任务,但一旦正确完成就能产生出色的结果,而且静音安装是轻而易举的,因为你不依赖于虚弱的静音响应文件"如上所述。

Bootstrappers / Chainers

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

关于Burn:

  • 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文件。 Burn setup.exe文件也是从WiX XML源文件构建的,但架构显然不同。仅适用于从未见过这些工具的人。上面的示例将显示与WiX MSI项目和WiX Burn项目的不同之处。它还有一个构建二进制文件的项目,然后包含在MSI和setup.exe中。