WiX捆绑包不允许我以静默方式安装SqlLocalDB.msi并错误地说明以下内容:
缺少必需的IACCEPTSQLNCLILICENSETERMS = YES命令行参数。通过指定此参数,即表示您确认接受SQL Server 2016的最终用户许可条款。
我尝试通过执行以下操作来插入命令行参数。
<MsiPackage SourceFile="SqlLocalDB.msi" Vital="yes" DisplayInternalUI="no">
<MsiProperty Name="CommandLineArgLocalDB" Value="IACCEPTSQLNCLILICENSETERMS=YES"/>
</MsiPackage>
我继续得到同样的错误。我的工作有什么问题吗?
编辑:
我发现MsiProperty主要用于传递命令行参数TO MY msi而不是内部msi。这不是我想要做的。
EDIT2:
我尝试过以赛亚的建议
<MsiProperty Name="IACCEPTSQLNCLILICENSETERMS" Value="YES"/>
但问题仍然存在。
签出日志后,我发现了这一行。
[0708:0C70] [2016-06-30T08:38:48] i301:应用执行包:SqlLocalDB.msi,action:Install,path:C:\ ProgramData \ Package Cache {E359515A-92E6-4FA3-A2C9 -E1BA02D8DE6E} v13.0.1601.5 \ SqlLocalDB.msi,参数:'ARPSYSTEMCOMPONENT =“1”MSIFASTINSTALL =“7”IACCEPTSQLNCLILICENSETERMS =“YES”'
这是不是意味着我已经在申请IACCEPTSQLNCLILICENSETERMS =“是”......?为什么我仍然无法正确安装?
可能是因为YES被引用所包围?
编辑3:
尝试做
<MsiProperty Name="IACCEPTSQLNCLILICENSETERMS=YES"/>
但它给了我编译错误。
谢谢
答案 0 :(得分:2)
你能试试吗?我现在无法测试,但我认为这应该可行。
<MsiPackage SourceFile="SqlLocalDB.msi" Vital="yes" DisplayInternalUI="no">
<MsiProperty Name="IACCEPTSQLNCLILICENSETERMS" Value="YES"/>
</MsiPackage>
答案 1 :(得分:2)
所以我实际上在邮件列表上问了这个并得到答案。
<MsiPackage SourceFile="SqlLocalDB.msi" Vital="yes" DisplayInternalUI="no">
<MsiProperty Name="ALLUSERS" Value="1"/>
<MsiProperty Name="IACCEPTSQLNCLILICENSETERMS" Value="YES"/>
</MsiPackage>
只需添加ALLUSERS,MsiProperty解决了这个问题。 我希望错误表明不同的信息。
答案 2 :(得分:1)
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”
答案 3 :(得分:0)
请记住,较新的SqlLocalDB安装程序会要求您接受“ sqllocaldb”许可条款,因此请添加属性
<MsiProperty Name="IACCEPTSQLLOCALDBLICENSETERMS" Value="YES" />