我對我的C#項目使用wix。我有一個安裝程序的引導程序。該引導程序安裝:使用wix安裝軟件包
- SQL服務器2014
- CLR類型2014
- 系統管理對象2014 (三個來自微軟的站點)
- 我的應用程序
我的問題是系統2014年的管理對象取決於CLR類型2014.當我的安裝程序正在執行時,安裝了SQL服務器,然後CLR類型爲2014,安裝時必須安裝System Management Object 2014 I有一個錯誤消息「需要CLR類型」。如果我取消設置並重新啓動,它工作正常。
如何編寫我的Bundle.wxs來檢測以前的安裝(或重新啓動安裝程序)?
有我的代碼:
<!-- SQL CLR Types -->
<util:RegistrySearch Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server 2014 Redist\SQL Server System CLR Types\CurrentVersion"
Value="Version"
Variable="CLRTypesx86"/>
<util:RegistrySearch Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server 2014 Redist\SQL Server System CLR Types\CurrentVersion"
Value="Version"
Variable="CLRTypesx64"
Win64="yes"/>
<!-- System Managment Objects -->
<util:RegistrySearch Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\SharedManagementObjects\CurrentVersion"
Value="Version"
Variable="SMO2014x86"/>
<util:RegistrySearch Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\SharedManagementObjects\CurrentVersion"
Value="Version"
Variable="SMO2014x64"
Win64="yes"/>
<!-- Install SQL CLR Types -->
<PackageGroup Id="SQLCLRTypes">
<MsiPackage Id="SQLCLRTypesx86"
SourceFile=".\Resources\SQLSysClrTypes2014x86.msi"
ForcePerMachine="yes"
Cache="no"
Compressed="no"
DownloadUrl="https://download.microsoft.com/download/1/3/0/13089488-91FC-4E22-AD68-5BE58BD5C014/ENU/x86/SQLSysClrTypes.msi"
Permanent="no"
Vital="yes"
InstallCondition="NOT VersionNT64 AND NOT CLRTypesx86" />
<MsiPackage Id="SQLCLRTypesx64"
SourceFile=".\Resources\SQLSysClrTypes2014x64.msi"
ForcePerMachine="yes"
Cache="no"
Compressed="no"
DownloadUrl="https://download.microsoft.com/download/1/3/0/13089488-91FC-4E22-AD68-5BE58BD5C014/ENU/x64/SQLSysClrTypes.msi"
Permanent="no"
Vital="yes"
InstallCondition="VersionNT64 AND NOT CLRTypesx64" />
</PackageGroup>
<!-- Install System Managment Objects -->
<PackageGroup Id="SMO2014">
<MsiPackage Id="SharedManagementObjects2014x86"
SourceFile=".\Resources\SharedManagementObjects_x86.msi"
ForcePerMachine="yes"
Cache="no"
Compressed="no"
DownloadUrl="https://download.microsoft.com/download/1/3/0/13089488-91FC-4E22-AD68-5BE58BD5C014/ENU/x86/SharedManagementObjects.msi"
Permanent="yes"
Vital="yes"
InstallCondition="NOT VersionNT64 AND NOT SMO2014x86" />
<MsiPackage Id="SharedManagementObjects2014x64"
SourceFile=".\Resources\SharedManagementObjects_x64.msi"
ForcePerMachine="yes"
Cache="no"
Compressed="no"
DownloadUrl="https://download.microsoft.com/download/1/3/0/13089488-91FC-4E22-AD68-5BE58BD5C014/ENU/x64/SharedManagementObjects.msi"
Permanent="yes"
Vital="yes"
InstallCondition="VersionNT64 AND NOT SMO2014x64" />
</PackageGroup>
SQLCLRTypes安裝是否在執行後請求重新引導?引導程序日誌應該提及是否是。日誌行如下所示:'應用執行包:SQLCLRTypesx64,結果:0x0 [或其他值],重新啓動:必需' –
SQLCLRTypes不需要重新啓動,但SMO2014需要它。看起來安裝程序在安裝過程中並未刷新已安裝的軟件包。第一次運行:安裝了1- SQLCLRTypes 2- SMO2014有錯誤「缺少SQLCLRTypes」。如果我退出安裝程序並重新啓動:1- SQLCLRTypes存在,因此未安裝SMO2014安裝 –
我高度懷疑SQLCRLTypes請求重新啓動,因爲SMO2014無法安裝,但可以在重新啓動後進行。僅僅因爲在安裝SQLCLRTYpes之後引導程序不重新啓動並不意味着它不需要重新啓動。引導程序的默認行爲是阻止重新啓動,直到安裝完所有程序包。您需要查看日誌並驗證SQLCLRTypes不需要重新啓動。如果確實如此,那麼我們可以強制引導程序重新啓動,然後繼續。 –