【问题标题】:Install SqlLocalDB.msi silently with WiX Burn #EDIT3使用 WiX Burn #EDIT3 静默安装 SqlLocalDB.msi
【发布时间】:2016-06-29 22:51:54
【问题描述】:

WiX 捆绑包不允许我静默安装 SqlLocalDB.msi,并且错误提示如下:

缺少必需的 IACCEPTSQLNCLILICENSETERMS=YES 命令行参数。通过指定此参数,您确认您接受 SQL Server 2016 的最终用户许可条款。

我尝试通过执行以下操作来插入命令行参数。

<MsiPackage SourceFile="SqlLocalDB.msi" Vital="yes" DisplayInternalUI="no">
    <MsiProperty Name="CommandLineArgLocalDB" Value="IACCEPTSQLNCLILICENSETERMS=YES"/>
</MsiPackage>

我继续收到同样的错误。我所做的有什么问题吗?

编辑:

我发现 MsiProperty 主要用于将命令行参数传递给我的 msi 而不是内部 msi。那不是我想做的。

EDIT2:

我已经尝试过以赛亚的建议

    <MsiProperty Name="IACCEPTSQLNCLILICENSETERMS" Value="YES"/>

但问题依然存在。

查看日志后,我找到了这一行。

[0708:0C70][2016-06-30T08:38:48]i301:应用执行包:SqlLocalDB.msi,操作:安装,路径:C:\ProgramData\Package Cache{E359515A-92E6-4FA3-A2C9 -E1BA02D8DE6E}v13.0.1601.5\SqlLocalDB.msi,参数:' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7" IACCEPTSQLNCLILICENSETERMS="YES"'

这是否意味着我已经在应用 IACCEPTSQLNCLILICENSETERMS="YES"...?为什么我仍然无法正确安装它?

可能是因为 YES 被引号包围了?

编辑 3:

尝试过

    <MsiProperty Name="IACCEPTSQLNCLILICENSETERMS=YES"/>

但它给了我编译器错误。

谢谢

【问题讨论】:

    标签: wix installation bundle command-line-arguments burn


    【解决方案1】:

    你可以试试这个吗?我现在无法对此进行测试,但我认为这应该可行。

    <MsiPackage SourceFile="SqlLocalDB.msi" Vital="yes" DisplayInternalUI="no">
        <MsiProperty Name="IACCEPTSQLNCLILICENSETERMS" Value="YES"/>
    </MsiPackage>
    

    【讨论】:

    • 感谢您的建议。我也试过了。但没有运气。一定是别的东西……
    【解决方案2】:

    所以我实际上在邮件列表上问了这个问题并得到了答案。

    <MsiPackage SourceFile="SqlLocalDB.msi" Vital="yes" DisplayInternalUI="no">
        <MsiProperty Name="ALLUSERS" Value="1"/>
        <MsiProperty Name="IACCEPTSQLNCLILICENSETERMS" Value="YES"/>
    </MsiPackage>
    

    只需添加 ALLUSERS MsiProperty 即可解决问题。 我希望错误指示不同的消息。

    【讨论】:

    • 不要使用 ALLUSERS 属性。将MsiPackage 上的ForcePerMachine 属性改为yes
    • 似乎这种方法运作良好。谢谢你。供将来参考,为什么每台机器的力比使用所有用户更好?
    • ALLUSERS 从根本上改变了软件包的安装方式,v4 不允许设置这些属性 - github.com/wixtoolset/issues/issues/5293
    • 新手问题:我应该把这个 MsiPackage 标签放在哪里?我想安装 SqlLocalDB,但我不知道实际在哪里安装(就像先决条件一样)
    【解决方案3】:

    WIX V4

    将 WixUtilExtension 添加到您的项目引用中,然后在 Wix 标记内添加以下行

    xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"
    

    添加它以检查它是否已经安装

    <util:RegistrySearch Id="Sql32" Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions\12.0" Value="ParentInstance" Result="exists" Variable="Sql32"/>
    <util:RegistrySearch Id="Sql64" Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions\12.0" Value="ParentInstance" Result="exists" Variable="Sql64" Win64="yes"/>
    

    然后在Chain标签中添加

    <MsiPackage Id="SqlLocalDB2014x32" SourceFile="..\..\Prerequisites\SqlLocalDB-x32.msi" Permanent="yes" ForcePerMachine="yes" Vital="no" DisplayInternalUI="no" InstallCondition="NOT (Sql32)">
          <MsiProperty Name="IACCEPTSQLLOCALDBLICENSETERMS" Value="YES" />
      </MsiPackage>
      <MsiPackage Id="SqlLocalDB2014x64" SourceFile="..\..\Prerequisites\SqlLocalDB-x64.msi" Permanent="yes" ForcePerMachine="yes" Vital="no" DisplayInternalUI="no" InstallCondition="NOT (Sql64)">
          <MsiProperty Name="IACCEPTSQLLOCALDBLICENSETERMS" Value="YES" />
      </MsiPackage>
    

    32 位版本无法在 64 位系统中运行,并且会显示错误消息,但引导程序应该会继续运行而不会出现问题

    该程序不会显示在控制面板的已安装程序列表中,并且可能需要重新启动系统才能在 Windows 8 和 10 上运行,在 CMD 或 PowerShell 中键入“sqllocaldb info”以确保它应该这样做返回实例名称通常是“MSSQLLocalDB”

    带有 Windows 7 的 Sqllocaldb 2017 会出现问题,除非您安装 dot net core sdk v2(不要自己测试,我使用的是 sqllocaldb 2014) Error when start an instance of SQLLOCQLDB 2017 on windows 7 64bit (entry point not found except)

    别忘了更改“SourceFile”

    【讨论】:

      【解决方案4】:

      请记住,较新的 SqlLocalDB 安装程序会要求您接受“sqllocaldb”许可条款,因此请添加属性

      <MsiProperty Name="IACCEPTSQLLOCALDBLICENSETERMS" Value="YES" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-30
        • 1970-01-01
        相关资源
        最近更新 更多