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

Wix制作SQL Server多语言安装包时内置账户属性为空问题求助

问题原因

仅使用PropertyRef无法触发WiX对内置账户名的本地化查询逻辑,需要配合WixUtilExtension的相关配置才能正确获取到对应账户的本地化名称。


解决方案

  1. 引入WixUtilExtension依赖

    • 若使用Visual Studio的WiX Toolset项目,右键项目「引用」,添加WixUtilExtension引用
    • 若使用命令行编译,链接阶段需添加参数:light -ext WixUtilExtension.dll
  2. 添加UtilExtension命名空间
    在.wxs源文件的根<Wix>节点上添加util命名空间声明:

    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
         xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
    
  3. 替换原有的PropertyRef配置
    把原有的两行<PropertyRef>替换为以下代码,触发WiX自动查询本地化账户名:

    <util:AccountProperty Id="WIX_ACCOUNT_ADMINISTRATORS" Name="Administrators" Domain="BUILTIN" />
    <util:AccountProperty Id="WIX_ACCOUNT_NETWORKSERVICE" Name="NETWORK SERVICE" Domain="NT AUTHORITY" />
    
  4. 修正InstallCommand的引号问题
    原配置中SQLSYSADMINACCOUNTS参数没有包裹引号,当本地化名称带空格时会解析错误,修改为:

    /SQLSYSADMINACCOUNTS=&amp;quot;[WIX_ACCOUNT_ADMINISTRATORS]&amp;quot;
    

修正后完整代码片段

<Fragment>
    <util:AccountProperty Id="WIX_ACCOUNT_ADMINISTRATORS" Name="Administrators" Domain="BUILTIN" />
    <util:AccountProperty Id="WIX_ACCOUNT_NETWORKSERVICE" Name="NETWORK SERVICE" Domain="NT AUTHORITY" />

    <PackageGroup Id="SQLSERVER">
      <ExePackage Id="Sql2019Express"
                 DisplayName="SQL Server 2019 Express"
                 Cache="yes"
                 Compressed="yes"
                 PerMachine="yes"
                 Permanent="no"
                 Vital="yes"
                 Name="SQLEXPR_x64_ENU.exe"
                 SourceFile="Resources\SQLEXPR_x64_ENU.exe"
                 InstallCommand="/ACTION=Install 
                                 /INSTANCENAME=$(var.InstanceName) 
                                 /FEATURES=SQL 
                                 /SECURITYMODE=SQL 
                                 /SAPWD=[SqlVariable] 
                                 /TCPENABLED=1 
                                 /SQLSVCACCOUNT=&amp;quot;[WIX_ACCOUNT_NETWORKSERVICE]&amp;quot;
                                 /SQLSVCSTARTUPTYPE=Automatic 
                                 /SQLSYSADMINACCOUNTS=&amp;quot;[WIX_ACCOUNT_ADMINISTRATORS]&amp;quot;
                                 /ADDCURRENTUSERASSQLADMIN=FALSE 
                                 /Q 
                                 /IAcceptSQLServerLicenseTerms"
                 UninstallCommand="/Action=Uninstall /INSTANCENAME=$(var.InstanceName) /FEATURES=SQL /Q ">

        <ExitCode Value ="3010" Behavior="forceReboot" />
      </ExePackage>
    </PackageGroup>
  </Fragment>

验证方法

安装时添加/l*v install.log参数输出完整日志,搜索WIX_ACCOUNT_开头的属性,可确认是否已经正确获取到本地化的账户名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:15:08