从 MSI 中删除默认对话框

Removing Default dialogs from MSI(从 MSI 中删除默认对话框)
本文介绍了从 MSI 中删除默认对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含许多 msi 文件的引导程序.其中一些需要用户输入来配置某些功能.这些需要自定义配置的 msi 文件显示了太多我需要删除的对话框,例如 WelcomeDlg.

I have a bootstrapper which wraps many msi files. Some of them require user input to configure some features. These msi files that need custom configuration show too many dialogs that I need to remove, such as WelcomeDlg.

我已经阅读过,但我没有找到任何适合我实际需求的解决方案,所以我想知道它是否真的可行.那么,是否有可能显示需要用户交互的对话框,例如避免 Welcome 或 Finish 对话框?

I've read around but I ain't found any solution that suits my actual requirement so I'm wondering if it's feasible actually. So, would it be possible to just show up the dialogs that need the user interaction, avoiding the Welcome or the Finish dialogs, for instance?

提前致谢!

推荐答案

定制的 GUI:在这里简单回答一下:您可以编写自己的 GUI,让您控制一切".在设置 GUI 中,在安装时禁止每个 MSI 自己的内部 GUI.

Customized GUI: To answer tersely at the top here: you can write your own GUI which gives you control of "everything" in the setup GUI, suppressing each MSI's own, internal GUI whilst installing.

您通过自己的 GUI 收集参数 - 无论您选择哪种方式进行设计 - 并在静默模式下调用每个 MSI 文件的安装 - 使用给定的参数 - 使用自定义引导程序应用程序中的命令来执行此操作.这是可能的,但不能野餐.请阅读下面的摘要 - 还不够,但这就是我为您准备的.

You gather parameters via your own GUI - designed whichever way you chose - and invoke the install of each MSI file in silent mode - with the given parameters - using commands to do so from within the custom bootstrapper application. This is possible, but no picnic. Please read the summary below - not enough, but that is what I got for you.

请注意,WiX 安装程序本身使用这种自定义的刻录 GUI(因此可以作为这种自定义 GUI 外观的实时样本).这里是 WiX 自己的托管引导程序应用程序的安装程序源代码 - 用于实际的 WiX 3 安装程序本身 - 换句话说.

Note that the WiX installer itself uses such a custom Burn GUI (and hence works as a live-sample of what such a custom GUI can look like). And here is WiX's own installer source code for its Managed Bootstrapper Application - for the actual WiX 3 installer itself - in other words.


燃烧

Burn 是一个 bootstrapperdownloaderchainer,以及一个引擎.每个 Burn 包 (setup.exe) 都有一个Bootstrapper Application".它本质上构成了设置的 GUI - 它驱动刻录引擎.默认情况下使用标准引导程序,但您可以完全编写自己的引导程序 GUI.引导应用程序 (BA) 是由 Burn 引擎加载的 DLL.


Burn

Burn is a bootstrapper, downloader, chainer, and an engine. Every Burn bundle (setup.exe) features a "Bootstrapper Application" which essentially constitutes the setup's GUI - it drives the Burn engine. There is a standard bootstrapper application that is used by default, but you can write your own bootstrapper GUI entirely. The bootstrapper application (BA) is a DLL loaded by the Burn engine.

标准引导应用程序可以通过多种方式进行定制,而自定义引导应用程序是完全可定制的——显然.该引导程序应用程序可以用托管代码或本机代码编写.

The standard bootstrapper application is customizable in various ways, whereas a custom bootstrapper application is entirely customizable - obviously. That bootstrapper application can be written in managed code or native code.

从这里开始阅读 Burn 文档:构建安装包包.

Read the Burn documentation starting from here: Building Installation Package Bundles.

这是官方 WiX 文档的摘录,以查看召唤"所需的基本标记.将标准引导程序应用程序编译到您的 setup.exe 中(唱几遍668 - 野兽的邻居",然后如果您在 Visual Studio 中,请点击构建"):

Here is an extract from the official WiX documentation to see the basic markup needed to "summon" the standard bootstrapper application to be compiled into your setup.exe (chant "668 - the neighbour of the beast" a few times and hit "Build" if you are in Visual Studio) :

<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Bundle>
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
    <Chain>
    </Chain>
  </Bundle>
</Wix>

让我不要复制更多内容,而是将您发送到有关该主题的官方文档:使用 WiX 标准引导程序应用程序.

Let me not duplicate any more content, but send you to the official documentation on the subject instead: Working with WiX Standard Bootstrapper Application.

在继续使用自定义引导程序之前:

And before moving on to custom bootstrappers:

  • 真实世界的刻录片段(包括先决条件).
  • 一个hello-world Burn片段(还有很多指向 Burn 信息的进一步链接).
  • A real-world Burn snippet (including prerequisites).
  • A hello-world Burn snippet (with lots of further links to Burn info).

就我的理解而言,编写自定义引导程序应用程序不是在公园里散步,也不是我曾经有机会做的事情.文档似乎很少:构建自定义引导程序应用程序(我知道的官方文档).

Writing a custom bootstrapper application is no walk in the park as far as I understand it, and not something I have ever had the chance to do. Documentation appears scarce: Building a Custom Bootstrapper Application (official documentation that I know about).

我在这里和那里找到了以下真实世界的样本,但还没有试穿它们的大小.如果您冒险走这条路,请分享您的观察:

I have found the following real-world samples here and there, but have not tried them on for size yet. Please share your observations should you venture down this path:

  • 编写您自己的 WiX Burn 设置 GUI 应用程序(高级)

https://github.com/rstropek/Samples/树/master/WiXSamples/CustomBurnUI

  • 更多关于 WiX 其他方面的 WiX 样本发现了一个或两个更高的级别


更多:

  • Visual Studio 2017 安装程序项目 - 包括VC++ 2015 可再发行版
  • SQL Server 命名实例Visual Studio 2017 安装程序项目(大量进一步的刻录链接)
  • Wix 刻录不允许删除文件
  • 在一个安装程序中合并 exe 和 msi 文件
  • 具有现代外观和感觉的 WIX 安装程序
  • https://github.com/frederiksen/Classic-WiX-Burn-Theme(这里是使用标准引导程序应用的一个很好的 Burn 示例)
  • https://www.firegiant.com/wix/教程/net-and-net/bootstrapping/
  • Visual Studio 2017 Installer Project - include VC++ 2015 Redistributable
  • SQL Server named instance with Visual Studio 2017 Installer project (lots of further Burn links)
  • Wix burn doesn't allow to remove file
  • Combine exe and msi file in one installer
  • WIX Installer with modern look and feel
  • https://github.com/frederiksen/Classic-WiX-Burn-Theme (a nice Burn sample using the standard bootstrapper application here)
  • https://www.firegiant.com/wix/tutorial/net-and-net/bootstrapping/

这篇关于从 MSI 中删除默认对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
quot;Overflowquot; compiler error with -9223372036854775808L(编译器错误-9223372036854775808L(Q;溢出Q))
Visual Studio 2010 ReportViewer Assembly References(Visual Studio 2010 ReportViewer程序集引用)
Weird behaviour when I open a reportviewer in WPF(在WPF中打开报表查看器时出现奇怪的行为)
how do i pass parameters to aspnet reportviewer(如何将参数传递给aspnet report查看器)