2016-06-29 78 views
2

維克斯束不允許我靜默安裝SqlLocalDB.msi和錯誤陳述了以下:安裝SqlLocalDB.msi默默地維克斯燒傷#EDIT3

所需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 \包緩存{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"/> 

,但它給我的編譯器錯誤。

謝謝

回答

1

所以我實際上在郵件列表上詢問了這個問題,並得到了答案。

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

只需添加ALLUSERS MsiProperty即可解決問題。 我希望錯誤指示不同的消息。

+0

請勿使用ALLUSERS屬性。將'MsiPackage'上的'ForcePerMachine'屬性設置爲'yes'。 –

+0

似乎這種方法運作良好。謝謝。爲了將來的參考,爲什麼每臺機器的強制力比使用所有用戶更好? –

+0

'ALLUSERS'從根本上改變了軟件包的安裝方式,v4不會允許設置這些屬性 - https://github.com/wixtoolset/issues/issues/5293。 –

1

你能試試嗎?我現在無法測試這個,但我認爲這應該起作用。

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

謝謝您的建議。我也嘗試過。但沒有運氣。必須是其他東西... –

1

維克斯V4

添加WixUtilExtension到您的項目引用然後添加維克斯標籤

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"/> 

然後內以下行在鏈標籤中添加

<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和Windows 10上鍵入「sqllocaldb信息」在CMD或PowerShell中,以確保它應該返回實例名稱,通常是「MSSQLLocalDB」

Sqllocaldb 2017與Windows 7將有問題除非你安裝點網核sdk v2(不要自己測試我使用sqllocaldb 2014) Error when start an instance of SQLLOCQLDB 2017 on windows 7 64bit (entry point not found except)

不要忘記更改「SourceFile」