2015-01-08 3 views
1

부트 스트 래퍼에 wix burn을 사용하고 있으며 응용 프로그램을 업그레이드 할 때마다 Crystal Reports 런타임이 제거됩니다. 누군가이 문제를 해결하도록 도와 줄 수 있습니까?Wix Burn 부트 스트 래퍼 주요 업그레이드시 Crystal 보고서 제거

Bundle.wxs

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" 
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 

    <?include Variables.wxi ?> 

    <Bundle Name="!(loc.BundleName)" 
      Version="$(var.Version)" 
       Manufacturer="!(loc.Manufacturer)" 
       HelpTelephone="!(loc.HelpPhone)" 
       Copyright="!(loc.Copyright)" 
      UpgradeCode="$(var.UpgradeCode)" 
      IconSourceFile="$(var.MainApplicationImagesFolder)\Car_Count_Report_Flat.ico" > 
    <!--SplashScreenSourceFile="$(var.MainApplicationImagesFolder)\BurnSplashScreen.bmp" >--> 

    <bal:Condition Message="This install requires Windows 7 Service Pack 1 or Higher"> 
     ((VersionNT >= v6.1) AND (ServicePackLevel >= 1) OR (VersionNT >= v6.3)) 
    </bal:Condition> 

    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" /> 
    <WixVariable Id="WixStdbaLicenseRtf" Value="$(var.EULAFolder)\EULA_en-US.rtf" /> 
    <WixVariable Id="WixStdbaLogo" Value="$(var.MainApplicationImagesFolder)\car_counter_report_icon_64.png" /> 

    <!-- Checks the Crystal Reports Registry Values --> 
    <!--<util:RegistrySearch Root="HKLM" Key="SOFTWARE\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Crystal Reports" 
         Value="CRRuntime64Version" Format="raw" Variable="CRRuntime64Version" Result="value" Win64="yes"/>--> 

    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Crystal Reports" 
         Value="CRRuntime32Version" Format="raw" Variable="CRRuntime32Version" Result="value"/> 

    <!-- Checks the Main Application Registry Values --> 
    <!--<util:RegistrySearch Root="HKLM" Key="Software\Saunders Creative Strategies\Kaady\Car Count Report" 
         Value="Version" Format="raw" Variable="x64Version" Result="value" Win64="yes"/>--> 

    <util:RegistrySearch Root="HKLM" Key="Software\Saunders Creative Strategies\Kaady\Car Count Report" 
         Value="Version" Format="raw" Variable="x86Version" Result="value"/> 

    <!-- Adds Local Variables --> 
    <Variable Name="CRRUNTIMEUPGRADE" bal:Overridable="yes" Type="numeric" Value="1" /> 

    <Chain> 
     <!-- TODO: Define the list of chained packages. --> 
     <!-- <MsiPackage SourceFile="path\to\your.msi" /> --> 
     <PackageGroupRef Id="NetFx45Redist"/> 
     <PackageGroupRef Id ="CrystalReportsRuntime"/> 
     <PackageGroupRef Id="MainApplicationFile"/> 
    </Chain> 
    </Bundle> 
</Wix> 

InstallationFiles.wxs

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 

    <?include Variables.wxi ?> 
    <Fragment> 
    <!-- Crystal Reports Runtime --> 
    <PackageGroup Id="CrystalReportsRuntime"> 

     <!--<?if $(var.Platform) = x64 ?>--><!-- 
     --><!--<MsiPackage Id ="CRRuntime64" 
        DownloadUrl="$(var.CRHttp)/$(var.CRx64Msi)" 
        SourceFile="$(var.3rdPartyApplicationFiles)\$(var.CRx64Msi)" 
        Name="$(var.CRx64Msi)" 
        Vital ="yes" 
        Compressed="no" 
        ForcePerMachine="yes" 
        InstallCondition="NOT CRRuntime64Version OR (CRRuntime64Version &lt; &quot;$(var.CRVersion)&quot;)" > 
     <MsiProperty Name="UPGRADE" Value="[CRRUNTIMEUPGRADE]" /> 
     </MsiPackage>--><!-- 
     --><!--<?else ?>--> 
     <MsiPackage Id ="CRRuntime32" 
       DownloadUrl="$(var.CRHttp)/$(var.CRx86Msi)" 
       SourceFile="$(var.3rdPartyApplicationFiles)\$(var.CRx86Msi)" 
       Name="$(var.CRx86Msi)" 
       Vital ="yes" 
       Compressed="no" 
       ForcePerMachine="yes" 
       Visible="yes" 
       Permanent="yes" 
       InstallCondition="NOT CRRuntime32Version AND (NOT (CRRuntime32Version = &quot;$(var.CRVersion)&quot;))" > 
     <MsiProperty Name="UPGRADE" Value="[CRRUNTIMEUPGRADE]" /> 
     </MsiPackage> 
     <!--<?endif ?>--> 
    </PackageGroup> 

    <PackageGroup Id="MainApplicationFile"> 
     <!--<MsiPackage Id="MainApplicationx64Msi" Vital="yes" Compressed="yes" ForcePerMachine="yes" Cache="yes" 
       Name="$(var.Mainx64Msi)" 
       InstallCondition="NOT x64Version OR (x64Version &lt; &quot;$(var.Version)&quot;)" 
       SourceFile="$(var.MainApplicationx64MsiFile)\$(var.Mainx64Msi)"/>--> 

     <MsiPackage Id="MainApplicationx86Msi" Vital="yes" Compressed="yes" ForcePerMachine="yes" Cache="yes" 
        Name="$(var.Mainx86Msi)" 
        Visible="no" 
        InstallCondition="NOT x86Version OR (x86Version &lt; &quot;$(var.Version)&quot;)" 
        SourceFile="$(var.MainApplicationx86MsiFile)\$(var.Mainx86Msi)"/> 
    </PackageGroup> 
    </Fragment> 
</Wix> 

는 셰인이

답변

3

사용자의 temp 디렉토리에서 설치 로그를 보면 InstallCondition이 false이므로 업그레이드 번들에서 CRRuntime32를 설치한다고 생각하지 않습니다. Burn은 MSI의 업그레이드 테이블을 사용하여 수행하려는 것과 동일한 논리를 수행합니다. Crystal Reports MSI가 올바르게 작성된 경우 설치 조건을 제거하고 Burn에서 설치해야하는지 여부를 결정할 수 있어야합니다.

+0

Crystal Reports가 이미 설치되어 있으며 이미 설치되어 있으면 false로 표시됩니다. 나는 wix에서 찾고 있었어 .net dll과 나는 이것을'CRRuntime32Version < " $ (var.CRVersion) "'으로 바꿨다.하지만 나는 설치 프로그램에있는 논리를 제거하고 화상을하도록했다. – asparatu

+0

설치 조건을 제거하고 정상적으로 작동합니다. 이전 버전의 Crystal Reports를 설치하고 최신 버전의 응용 프로그램을 설치하면 업그레이드 할 수있었습니다. 당신의 답변에 감사드립니다. – asparatu

0

대신 InstallCondition의 DetectCondition를 사용해야합니다 감사합니다. 첫 번째 답변 : 설치되어 있습니까?; 두 번째 : 번들 설치의 경우 원하는가요?

당신이 가지고있는 방식대로, 설치 중에 논리가 필요 없다고 말하면 화상은 CR을 제거합니다.

+0

MSI는 EXE가 아니므로 InstallCondition을 사용해야하며 DetectCondition은 사용하지 않아야합니다. 예, 설치되어 있습니다. 예, 처음 설치할 때 응용 프로그램을 설치하고 업데이트를 원한다면 업데이트를 원하지만 @Sean Hall 회신을 사용하여 문제를 해결할 수 있습니다. – asparatu

관련 문제