私はC#プロジェクトにwixを使用しています。私はセットアップのためのブートストラップを持っています。このブートストラップは、インストールします。wixでパッケージをインストールする
- SQLサーバー2014
- CLR型2014
- システム管理オブジェクト2014 (Microsoftのサイトからのすべての3つの)
- 私のアプリケーション
私の問題は、そのシステムであります管理オブジェクト2014はCLRタイプ2014に依存します。セットアップが実行されているときにSQL Serverがインストールされ、次にCLR 2014がタイプされ、セットアップでシステム管理オブジェクト2014 Iエラーメッセージ "Needs CLR Types"が表示されます。セットアップをキャンセルして再起動しても正常に動作します。
以前のインストール(または再起動のセットアップ)を検出するために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インストールの実行後に再起動を要求していますか?ブートストラップのログには、それがあるかどうかを記述する必要があります。 'Applied execute package:SQLCLRTypesx64、result:0x0 [または他の値]、restart:Required' –
SQLCLRTypesは再起動を必要としませんが、SMO2014はそれを必要とします。インストーラーがインストール中にインストールされたパッケージを更新しないようです。最初の実行時に:1- SQLCLRTypesがインストールされています。2- SMO2014に「missing SQLCLRTypes」というエラーがあります。インストーラを終了して再起動すると:1- SQLCLRTypesがインストールされていないため、インストールされていません。2- SMO2014がインストールされています。 –
SMO2014はインストールできませんが、再起動後にSQLCRLTypesが再起動を要求します。ブートストラップがSQLCLRTYpesのインストール後に再起動しないからといって、再起動が必要ないわけではありません。ブートストラップのデフォルトの動作は、すべてのパッケージがインストールされるまで再起動を保留することです。ログを調べて、SQLCLRTypesが再起動を必要としないことを確認する必要があります。もしそうなら、ブートストラップを強制的に再起動させ、その後に続行することができます。 –