2016-08-24 3 views
0

SQL Express 2014를 전제 조건으로 설치를 설정하려고합니다. 설치 자체는 정상적으로 작동하지만 제거 할 때 인스턴스가 제거되지 않습니다. 난 여전히 내 SQL 관리자를 통해 액세스 할 수 있으며 레지스트리에서 찾으십시오. = "NO" 패키지를 제거하는주의를 기울여야에 내가 이해에서SQL Express 2014 인스턴스가 제거시 제거되지 않음

<PackageGroup Id="Sql2014Express"> 
    <ExePackage Id="SQL2014Expressx64" 
       InstallCondition="VersionNT64 AND NOT SQL2014x64InstanceInstalled" 
       SourceFile="packages\SQLEXPR_x64_ENU.exe" 
       DownloadUrl="$(var.SqlWebLink64)" 
       DisplayName="Installing Microsoft SQL Express 2014" 
       InstallCommand="/ACTION=Install /INSTANCENAME=$(var.InstanceName) /FEATURES=SQLENGINE /Q /HIDECONSOLE /SkipRules=RebootRequiredCheck /IAcceptSQLServerLicenseTerms /SQLSVCSTARTUPTYPE=Automatic /SQLSVCACCOUNT=&quot;NT AUTHORITY\NETWORK SERVICE&quot; /AGTSVCACCOUNT=&quot;NT AUTHORITY\NETWORK SERVICE&quot; /ASSYSADMINACCOUNTS=BUILTIN\Administrators /SQLSYSADMINACCOUNTS=BUILTIN\Administrators /BROWSERSVCSTARTUPTYPE=Disabled /ADDCURRENTUSERASSQLADMIN=true /TCPENABLED=1" 
       UninstallCommand="/Action=Uninstall /INSTANCENAME=$(var.InstanceName) /FEATURES=SQLENGINE /Q /HIDECONSOLE" 
       Cache="yes" 
        Vital="yes" 
       Compressed="no" 
       PerMachine="yes" 
       Permanent="no"/> 
... 
     </PackageGroup> 

영구 : 이것은 내 ExePackage입니다

<Chain> 
     <ExePackage 
      Id="Netfx4Full" 
      Name="dotNetFx40_Full_x86_x64.exe" 
      Cache="no" 
      Compressed="no" 
      PerMachine="yes" 
      Permanent="yes" 
      Vital="yes" 
      SourceFile="packages\dotNetFx40_Full_x86_x64.exe" 
      DownloadUrl="https://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe" 
      DetectCondition="Net4FullVersion AND (NOT VersionNT64 OR Net4x64FullVersion)" 
      InstallCondition="(VersionNT &lt; v6.0 OR VersionNT64 &lt; v6.0) AND (NOT (Net4FullVersion OR Net4x64FullVersion))"> 
     </ExePackage> 

     <PackageGroupRef Id="Sql2014Express"/> 

     <RollbackBoundary /> 

     <MsiPackage Id="MainPackage" SourceFile="MyApplication.msi" DisplayInternalUI="yes" Compressed="yes" Vital="yes" /> 
    </Chain> 

:

내 체인 없다 제거. 나는 심지어 포함하고 UninstallCommand,하지만이 중 하나를 인스턴스를 제거하지 않습니다.

무엇이 여기에 있습니까?

이 문제를 해결하는 데 필요한 다른 정보가 있으면 알려주십시오. - 고마워!

답변

2

Exe 패키지에는 패키지 설치 여부를 확인할 수있는 DetectCondition이 필요합니다. 당신이 당신의 그물의 exepackage에 통지하는 경우에는이 조건이 참 IFF에이 패키지가 설치되는 설치 프로그램을 알려줍니다

DetectCondition="Net4FullVersion AND (NOT VersionNT64 OR Net4x64FullVersion)" 

있습니다. SQL exe 패키지에서 동일한 작업을 수행해야합니다.

DetectCondition

패키지 대상 시스템에 존재 하는지를 결정하는 조건이다. 이 조건은 검색에서 반환 된 기본 제공 변수 및 변수를 사용할 수 있습니다. 이 조건은 Windows가 ExePackage의 존재를 감지하는 방법을 제공하지 않기 때문에 필요합니다. Burn은이 조건을 사용하여 번들 동작 중에이 패키지를 처리하는 방법을 결정합니다. 예를 들어,이 조건이 false이거나 생략되고 번들이 설치되는 경우 Burn은이 패키지를 설치합니다.

일부 변수를 설정하는 일부 레지스트리 검색을 생성하면됩니다. 그런 다음 SQL에 대한 ExePackage 당신이 DetectCondition="MicrosoftSQLInstalled"을 넣을 수 있습니다이 레지스트리 검색

<util:RegistrySearch 
     Id='MicrosoftSQLInstalledCheck' 
     Root='HKLM' 
     Key='SOFTWARE\Microsoft\Microsoft SQL Server\$(var.InstanceName)\Setup' 
     Win64='yes' 
     Value='SQLPath' 
     Result='exists' 
     Variable='MicrosoftSQLInstalled'/> 

을 시도하고 레지스트리 검색이 지정된 키의을 SQLPath 레지스트리 항목을 발견하면 그건 사실이 될 것입니다.

+0

내게 이것을 지적 해 주셔서 감사합니다! 이것이 초기 문제를 해결하는 동안 새로운 문제를 제시합니다. 주 패키지를 업그레이드 할 때 SQL Express 인스턴스를 감지하고 제거하기 시작합니다. 주 패키지를 제거 할 때 SQL Express 인스턴스를 제거하는 방법은 무엇입니까? (제거하고 싶습니다.) – ullern

+0

'InstallCondition = "VersionNT64 AND NOT SQL2014x64InstanceInstalled"로 인해. InstallCondition이 false이고 패키지가 설치되어 있으면 (DetectCondition이 true 인 경우) 패키지가 제거됩니다. InstallCondition은 실제로 당신이 생각하는대로하지 않습니다. –

관련 문제