2013-05-16 6 views
3

Мое приложение Требуется MS SQL Server в качестве одного из своих предварительных требований. Теперь я хочу обновить клиентскую машину до версии MS SQL Server 2008 R2, если у них есть экспресс-выпуск MS SQL Server 2005 , Я не могу его реализовать. Ниже приведен код Wix, который я использую для загрузки и установки MS SQL Server 2008 R2 express edition, когда на клиентском компьютере не установлен SQL-сервер.Как обновить предварительное программное обеспечение Ms SQL-сервер с использованием Wix

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 
<Fragment> 
<util:RegistrySearch Root="HKLM" 
        Key="SOFTWARE\Microsoft\Microsoft SQL Server\MyInstanceName" 
        Variable="Instance" 
        Result="exists" 
        /> 
    <PackageGroup Id="SqlServer2008R2"> 
    <ExePackage InstallCommand='/q /action=INSTALL /HIDECONSOLE /IACCEPTSQLSERVERLICENSETERMS=1 /FEATURES=SQLEngine /INSTANCENAME=MyInstanceName /SQLSVCACCOUNT="NT AUTHORITY\SYSTEM" /SECURITYMODE=SQL /SAPWD=abc#Wd1234 /ADDCURRENTUSERASSQLADMIN=TRUE /SQLSYSADMINACCOUNTS="NT AUTHORITY\SYSTEM" /TCPENABLED=1 /NPENABLED=1' 
       InstallCondition="NOT VersionNT64" 
       DetectCondition="Instance" 
       Compressed="no" 
       Vital="yes" 
       PerMachine="yes" 
       Name="SQLEXPR32_x86_ENU.exe" 
       Permanent="yes" 
       Cache="no" 
       DownloadUrl="http://download.microsoft.com/download/5/1/A/51A153F6-6B08-   4F94-A7B2-BA1AD482BC75/SQLEXPR32_x86_ENU.exe" 
      > 
    <RemotePayload 
     Size="60995936" 
     ProductName="Microsoft SQL Server 2008 R2 Express" 
     Description="Microsoft SQL Server 2008 R2 Express" 
     Version="10.50.1600.1" 
     CertificatePublicKey="672605E36DD71EC6B8325B91C5FE6971390CB6B6" 
     CertificateThumbprint="9617094A1CFB59AE7C1F7DFDB6739E4E7C40508F" 
     Hash="ACF5494D18EDF117A2683D66A96FB8954F98D86D" 
     /> 
    </ExePackage> 
    </PackageGroup> 
    </Fragment> 
</Wix> 

ответ

1

Вы не можете использовать параметр /action=INSTALL для обновления экземпляра только установка нового. Вам придется создать еще один ExePackage с /action=UPGRADE и настройками InstallCondition выбрать правильную один на основе реестра ищет вас:

<ExePackage Id="SqlExpress2008R2_UpgradeNamedInstance" 
       Cache="no" 
       Compressed="no" 
       PerMachine="yes" 
       Permanent="no" 
       Vital="yes" 
       InstallCommand="/QS /ACTION=Upgrade /IACCEPTSQLSERVERLICENSETERMS /BROWSERSVCSTARTUPTYPE=Automatic /INSTANCENAME=&quot;[SqlInstance]&quot;" 
       Name="redist\SQLEXPR_x86_ENU.exe" 
       DownloadUrl="http://download.microsoft.com/download/D/1/8/D1869DEC-2638-4854-81B7-0F37455F35EA/SQLEXPR_x86_ENU.exe" 
       InstallCondition="SqlInstance AND SqlServerInstalled AND NOT SQLServer2008R2Installed"> 
    <RemotePayload ProductName="SQL Server 2008 R2 Express SP1" 
        Description="SQL Server 2008 R2 Express SP1" 
        CertificatePublicKey="5C499B10F7EF186DC729991A262AB52066423909" 
        CertificateThumbprint="93859EBF98AFDEB488CCFA263899640E81BC49F1" 
        Hash="6F399D641F322A3E47E3DD605F2A2EDF21074375" 
        Size="111274848" 
        Version="10.50.2500.0" /> 
    </ExePackage>