Я использую wix для моего проекта C#. У меня есть bootstrapper для настройки. Это Загрузчик установки:Установить пакеты с помощью wix
- SQL сервер 2014
- типы CLR 2014
- Management System Object 2014 (все три с сайта Microsoft)
- мое приложение
Моя проблема заключается в том, что система Объект управления 2014 зависит от типов CLR 2014. Когда моя установка выполняется, устанавливается SQL-сервер, затем CLR-типы 2014 и когда установка должна установить объект управления системой 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 Install (s) запросами перезагрузки после его выполнения? Журналы bootstrapper должны указывать, есть ли это или нет. Строка журнала выглядит следующим образом: 'Прикладной пакет выполнения: SQLCLRTypesx64, result: 0x0 [или какое-то другое значение], перезагрузка: Обязательно' –
SQLCLRTypes не требует перезагрузки, но SMO2014 ему нужен. Похоже, что установщик не обновляет установленные пакеты во время установки. При первом запуске: 1- SQLCLRTypes установлен 2 SMO2014 имеют ошибку «Отсутствуют SQLCLRTypes». Если я выйду из программы установки и заново запустил: 1- SQLCLRTypes присутствует, поэтому не установлен. 2 Установлен SMO2014. –
. Я очень подозреваю, что SQLCRLTypes запрашивает перезагрузку, поскольку SMO2014 не может установить, но может после перезапуска. Просто потому, что bootstrapper не перезапускается после установки SQLCLRTYPE, это не означает, что перезагрузка не требуется. Поведение загрузчика по умолчанию - это приостановить перезапуск до тех пор, пока не будут установлены все пакеты. Вам нужно посмотреть журналы и убедиться, что SQLCLRTypes не требует перезагрузки.Если это произойдет, мы можем заставить перезагружать загрузчик, а потом продолжить. –