0

我正在为具有 MariaDB 前提条件的 .NET Framework 4.7.2 应用程序开发 WixSharp 安装程序。我找到了如何引导 .NET Framework 4.7.2[1][2] 的好信息,并且有一些现成的 NuGet 包[3][4] 可用于此任务。引导程序示例文件夹 [5] 也有一些 .NET Framework 先决条件的示例。

但是,我没有找到关于使用静默安装、删除功能和设置属性 [6] 安装 MariaDB(或任何其他 MSI)的太多信息。

MariaDB MSI 支持使用/qn开关进行静默安装、设置属性(例如端口、默认用户或密码)和删除功能,例如跳过安装客户端工具。

我创建了一个包含 Net472(参见 CodeProject[1])、MariaDB MSI 和我的应用程序的 Bundle。当我运行生成的 Setup.exe 时,会安装 .NET Framework(如果需要),然后会弹出 MariaDB Setup-UI,并启用所有功能。根据 [7],我尝试了一些属性,例如DisplayInternalUIorMsiPackage.ActualFeatures并将其设置IsEnabled为 false,但这不起作用。请参阅以下 -非工作- 示例代码。

        string productMsi = BuildMsi();
        var mariadb = new MsiPackage("mariadb-10.3.28-winx64.msi")
        {
            DisplayInternalUI = true,
            Compressed = true
        };
        var features = mariadb.ActualFeatures;
        foreach (var feature in features)
        {
            if (feature.Name == "HeidiSQL")
            {
                feature.IsEnabled = false;
            }
        }

        var bootstrapper =
          new Bundle("SampleInstaller",
          Net472(),
          mariadb,
              new MsiPackage(productMsi)
              {
                  DisplayInternalUI = true,
                  Compressed = true
              })
          //new PackageGroupRef("NetFx47Web"))
          {
              UpgradeCode = new Guid("3940B263-C028-4561-8BAE-32AA32B6A946"),
              Version = new Version(1, 0, 1, 0),
          };

显然,我在这里完全走错了路。如何删除外部 MSI 的功能、如何设置属性、如何使用 WixSharp 运行静默安装?

生成的安装程序也是一个 Exe 文件。我了解 MSI 是每个 MSI 文件 [8] 的一个应用程序。然而,在评估安装工具时,我发现,例如 Advanced Installer[9] 可以将 .NET Framework、MariaDB 和应用程序引导到单个 MSI 设置中,生成的设置是一个 MSI 文件。是否可以使用带有链接 MSI 文件的 WixSharp 构建类似的东西,并且生成的安装程序是一个 MSI 文件。这里的诀窍是什么?

[1]创建包含先决条件的 Wix# 安装程序 - 第 2 部分
[2]使用 wixsharp 安装 dotnetcore3.1
[3] WixSharp 扩展库
[4] WixSharp.DotNetBootstrapper
[5] Bootstrapper 示例文件夹
[6] MariaDB - 静默安装
[7 ]如何一次安装多个 Msi
[8] windows MSI 可以安装多个包吗?
[9] Bundles-Wix 与高级安装程序

4

0 回答 0