WIX 安装程序工具集 - SQL Server 和 IIS 快速安装 [已关闭]

2023-12-25

我有带有一些自定义 UI 屏幕的 WIX 安装程序,其中有一个自定义 UI 屏幕,上面有两个单选按钮。我只想安装 SQL Server Express 和 IIS Express,具体取决于单选按钮选择。我如何实现此功能。 我在我的项目中使用 WIX 3.11.2 和 Visual Studio 2019。 任何人都可以提供参考链接或代码片段,这将帮助我进一步进行,因为我对 WIX 安装程序完全陌生?


您可以尝试使用 InstallCondition

你的bundle.wxs会有这样的东西

   <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
    xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
      <Bundle Name="YourProductName" Version="1.0.0.0" Manufacturer="" UpgradeCode="aa89733d-62f6-44e9-80c7-04a69cb7c077">
        <Variable Name="InstallIISEXPRESS" Value="0" bal:Overridable="yes" Type="string" />
        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
        <Chain>
          <!-- TODO: Define the list of chained packages. -->
          <!-- <MsiPackage SourceFile="path\to\your.msi" /> -->
          <PackageGroupRef Id ='DatabaseGrp'/>
        </Chain>
      </Bundle>
      <Fragment>
        <PackageGroup Id ='DatabaseGrp'>
          <MsiPackage Id="SQLServerExpress_x86_msi"
                      Cache="yes"
                      InstallCondition= "NOT(InstallIISEXPRESS = 1)"
                      Visible ="yes"
                      Permanent="yes"
                      SourceFile="Path\To\Your\SQLServerExpressMSI">
            <MsiProperty Name="IACCEPTQLServerExpressLICENSETERMS"
                         Value="YES"/>
          </MsiPackage>

          <MsiPackage Id="IISExpress_x86_msi"
                      Cache="yes"
                      Visible ="yes"
                      InstallCondition= "InstallIISEXPRESS = 1"
                      Permanent="yes"
                      SourceFile="Path\To\Your\IISExpressMSI">
            <MsiProperty Name="IACCEPTIISExpressLICENSETERMS"
                         Value="YES"/>
          </MsiPackage>
        </PackageGroup>
      </Fragment>
    </Wix>

You need to add a reference to the BalExtension in your Bundle ProjectReferences required to your bundle project

您需要从 Bootstrapper(自定义 UI)项目中设置变量 InstallIISExpress 的值,这将决定将安装哪个数据库 MSI。 您可以像这样从 Bootstrapper 项目设置该值

Bootstrapper.Engine.StringVariables["InstallIISExpress"] = "0";
// If you want to install SQLEXPRESSSERVER then set it to "0"
// If you want to install IISEXPRESS then set it to "1"
// You can decide this value from radio button selected by user

InstallCondition 指示是否应安装该包。如果条件评估为真,则可以安装该包。如果条件评估为 false,则不应安装该包。如果该包存在并且条件评估为 false,则该包将被卸载。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WIX 安装程序工具集 - SQL Server 和 IIS 快速安装 [已关闭] 的相关文章

  • 如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?

    该表单有一个 NotifyIcon 对象 当用户单击 关闭 按钮时 我希望表单不关闭而是变得不可见 然后 如果用户想再次查看该表单 可以双击系统托盘中的图标 如果用户想关闭表单 可以右键单击该图标并选择 关闭 有人可以告诉我如何使关闭按钮不
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • const、span 和迭代器的问题

    我尝试编写一个按索引迭代容器的迭代器 AIt and a const It两者都允许更改容器的内容 AConst it and a const Const it两者都禁止更改容器的内容 之后 我尝试写一个span
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif

随机推荐