【问题标题】:Removing Default dialogs from MSI从 MSI 中删除默认对话框
【发布时间】:2018-09-21 15:18:04
【问题描述】:

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

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

提前致谢!

【问题讨论】:

标签: .net wix windows-installer


【解决方案1】:

WiX 替代品:在描述了 WiX 的刻录功能之后,我开始认为这可能不是您完成工作所需要的。它是开发人员的繁重和参与——尽管对于开发人员来说,在没有太多问题的情况下实现所需的东西应该是完全可以管理的。灵活性非常高。

商业部署工具选项InstallshieldAdvanced Installer 具有可用于创建setup.exe 的GUI 界面,该界面将使用您收集的参数启动MSI 文件。

安装屏蔽

Installshield 中,最近版本中有一个相当新的功能,称为 Installshield Suite Projects。我不确定它有哪些版本(更高版本 - 例如“Premium”)。它允许您“按顺序”安装各种文件:MSIMSPEXE MSUetc...

虽然我从未经常使用它,但我很确定您可以相当轻松地创建套件 GUI,并控制从什么设置中显示的对话框。我会用命令行静默安装它们。请至少查看下面的第一个链接 - 屏幕截图。它应该让您了解事物的基本概念。

一些链接

高级安装程序

高级安装程序具有高级选项,可在您的主 MSI 安装程序中包含先决条件和软件包,并允许您像 Installshield 一样创建新对话框。再说一次,我还没有时间对其进行全面测试,但下面是一些关于它的使用指南。

此功能以视图“Prerequisites”、“Build”和“Dialogs”为中心。在“Build”视图中设置EXE输出。在“Prerequisites”中选择顶级“Packages”项以获取内置的可用先决条件列表。右击“Pre-Install”添加自己的包。我不熟悉对话细节,但您可以在“Dialogs”视图中处理它们。不是火箭科学是好消息。

一些链接

我会就此打住。已经有太多链接了。

【讨论】:

    【解决方案2】:

    定制的 GUI:在这里简单回答一下:您可以编写自己的 GUI,让您控制设置 GUI 中的“一切”,抑制每个 MSI 的安装时拥有自己的内部 GUI。

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

    注意the WiX installer itself uses such a custom Burn GUI (因此可以作为这种自定义 GUI 外观的实时样本)。 here is WiX's own installer source code for its Managed Bootstrapper Application - 即实际的 WiX 3 安装程序本身 - 换句话说。


    燃烧

    Burn 是 bootstrapperdownloaderchainerengine >。每个 Burn 包 (setup.exe) 都有一个“Bootstrapper Application”,它本质上构成了设置的 GUI - 它驱动 Burn 引擎。默认使用 a standard bootstrapper application,但您可以完全编写自己的引导程序 GUI。引导应用程序 (BA) 是由 Burn 引擎加载的 DLL。

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

    从这里开始阅读刻录文档:Building Installation Package Bundles

    1 - 标准引导程序应用程序

    这是官方 WiX 文档的摘录,以查看“summon”标准引导程序应用程序所需的基本标记,以将其编译到您的 setup.exe(赞“668 - 野兽的邻居”几次,如果你在 Visual Studio 中点击“构建”):

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

    让我不要复制更多内容,而是将您发送到有关该主题的官方文档:Working with WiX Standard Bootstrapper Application

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

    2 - 自定义引导程序应用程序

    就我的理解而言,编写自定义引导程序应用程序不是在公园里散步,也不是我曾经有机会做的事情。文档似乎稀缺:Building a Custom Bootstrapper Application(我知道的官方文档)。

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


    更多

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 2017-12-20
      • 2017-09-07
      • 1970-01-01
      相关资源
      最近更新 更多