You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WIX Installer配置问题:关闭SQL Express安装窗口时阻止主程序安装

问题根因

当前你的WIX Bootstrapper没有对SQL Express安装包的退出码做拦截配置,默认场景下用户手动取消SQL安装返回的退出码会被判定为非致命错误,安装链会继续向下执行主程序的MSI包。

解决方案

修改ExePackage节点的配置,新增退出码规则,将用户取消、安装失败等场景的返回值标记为致命错误,终止整个安装流程,修改后的完整代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
  <Bundle Name="Bootstrapper" Version="1.0.0.0" Manufacturer="MyCompany" AboutUrl="https://mycompany.ru/"
         Copyright="All rights reserved" UpgradeCode="1788BF21-18BD-49E8-A572-DD38F9B67A88">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"/>
    <!-- 可选优化:更精确的SQL Express检测逻辑,避免误判已装其他版本SQL的场景 -->
    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"
                         Value="SQLEXPRESS" Result="exists" Variable="SQLExpressInstalled_x64" Win64="yes"/>
    <Chain>
      <ExePackage SourceFile="SQL2019-SSEI-Expr.exe" DetectCondition="SQLExpressInstalled_x64" Permanent="no">
        <!-- 配置SQL安装包的退出码处理规则 -->
        <!-- 1602=用户手动取消安装,1603=安装失败,0=安装成功,其他非0返回值均判定为错误 -->
        <ExitCode Value="0" Behavior="success" />
        <ExitCode Value="1602" Behavior="error" />
        <ExitCode Value="1603" Behavior="error" />
        <ExitCode Behavior="error" />
      </ExePackage>
      <MsiPackage SourceFile="MyProgram.msi"></MsiPackage>
    </Chain>
  </Bundle>
</Wix>

配置说明

  • 新增的ExitCode节点会对SQL安装包的所有返回值做校验:只有返回0才会判定为安装成功,继续执行后续主程序安装;用户取消(返回1602)、安装失败(返回1603)或者其他异常返回值都会直接终止整个安装流程,不会再安装主程序。
  • 可选优化了注册表检测逻辑,原来的检测规则只要存在任意版本SQL Server就会跳过SQL安装,修改后只会检测是否存在默认实例名的SQL Express,避免误判。
  • 已修复原代码中Manufacturer属性漏写闭合引号的笔误。

内容的提问来源于stack exchange,提问作者trapped_in_a_corner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:09:02