2016-07-25 16 views
0

Ich möchte einen Bootstrapper für eine Anwendung C# mit Visualstrudio 2015 erstellen. Ich möchte eine Voraussetzung für SharedManagementObject (von Microsoft, heruntergeladen that direct link). Ich folgte den Anweisungen auf the microsoft website.Verwalten Voraussetzungen Version in Bootstrapper

mein product.xml Es gibt:

<?xml version="1.0" encoding="utf-8" ?> 
<Product 
    xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" 
    ProductCode="Custom.Bootstrapper.SharedManagementObjects2014x86"> 

    <RelatedProducts> 
    <DependsOnProduct Code="Custom.Bootstrapper.SQLSysClrTypes2014x86" /> 
    </RelatedProducts> 

    <PackageFiles> 
    <PackageFile Name="SharedManagementObjects2014x86.msi"/> 
    </PackageFiles> 

    <InstallChecks> 
    <MsiProductCheck Product="IsMsiInstalled" 
     Property="{4E6202DE-B996-4736-A64B-09EE2A8469E6}"/> 
    </InstallChecks> 

    <Commands> 
    <Command PackageFile="SharedManagementObjects2014x86.msi" Arguments=""> 

     <InstallConditions> 
     <BypassIf Property="IsMsiInstalled" 
      Compare="ValueGreaterThan" Value="0"/> 
     <FailIf Property="AdminUser" 
      Compare="ValueNotEqualTo" Value="True" 
     String="NotAnAdmin"/> 
     </InstallConditions> 

     <ExitCodes> 
     <ExitCode Value="0" Result="Success"/> 
     <ExitCode Value="1641" Result="SuccessReboot"/> 
     <ExitCode Value="3010" Result="SuccessReboot"/> 
     <DefaultExitCode Result="Fail" String="GeneralFailure"/> 
     </ExitCodes> 
    </Command> 
    </Commands> 
</Product> 

Auf Setup richtig ein Dialogfeld fragen SharedManagementObjects2014x86.msi zu installieren, aber ich habe 2 Probleme:

  • Auf CPU nicht mit x86-kompatibel, Die Installation wird ausgeführt, schlägt jedoch fehl. Gibt es eine Anweisung, die CPU zu überprüfen und nur auf x86 zu installieren?
  • Auf x86-CPU ist die Installation in Ordnung. Aber wenn ich Setup.exe erneut ausführen, wird SharedManagementObjects2014x86.msi erneut installiert. Warum funktioniert <BypassIf Property="IsMsiInstalled" Compare="ValueGreaterThan" Value="0"/> nicht?

Behälter Sie

+0

löste ich das zweite Problem durch 'ersetzt ' 'von '. Aber ich kann immer noch nicht überprüfen, ob die CPU mit x86 kompatibel ist. –

Antwort

1

fand ich endlich die Antwort

  • Um nicht neu zu installieren: Überprüfen Sie Registrierungs

  • So installieren Sie auf der CPU abhängig: Check Processor

Mein Code:

<?xml version="1.0" encoding="utf-8" ?> 
<Product 
    xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" 
    ProductCode="Custom.Bootstrapper.SharedManagementObjects2014"> 

    <RelatedProducts> 
     <DependsOnProduct Code="Custom.Bootstrapper.SQLSysClrTypes2014" /> 
    </RelatedProducts> 

    <PackageFiles> 
     <PackageFile Name="SharedManagementObjects2014x64.msi"/> 
     <PackageFile Name="SharedManagementObjects2014x86.msi"/> 
    </PackageFiles> 

    <InstallChecks> 
     <!-- Check registry --> 
     <RegistryCheck Property="IsMsiInstalled" 
     Key="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SharedManagementObjects\CurrentVersion" 
     Value="Version" /> 
    </InstallChecks> 

    <Commands> 
     <!-- Install for x86 : ProcessorArchitecture = Intel --> 
     <Command PackageFile="SharedManagementObjects2014x86.msi" Arguments="">  
      <InstallConditions> 
       <BypassIf Property="IsMsiInstalled" 
       Compare="ValueGreaterThan" Value="0"/> 
       <BypassIf Property="ProcessorArchitecture" 
       Compare="ValueNotEqualTo" Value="Intel"/> 
       <FailIf Property="AdminUser" 
       Compare="ValueNotEqualTo" Value="True" 
       String="NotAnAdmin"/> 
      </InstallConditions> 

      <ExitCodes> 
       <ExitCode Value="0" Result="Success"/> 
       <ExitCode Value="1641" Result="SuccessReboot"/> 
       <ExitCode Value="3010" Result="SuccessReboot"/> 
       <DefaultExitCode Result="Fail" String="GeneralFailure"/> 
      </ExitCodes> 
     </Command> 

     <!-- Install for x64 : ProcessorArchitecture = amd64 --> 
     <Command PackageFile="SharedManagementObjects2014x64.msi" Arguments="">  
      <InstallConditions> 
       <BypassIf Property="IsMsiInstalled" 
       Compare="ValueGreaterThan" Value="0"/> 
       <BypassIf Property="ProcessorArchitecture" 
       Compare="ValueNotEqualTo" Value="amd64"/> 
       <FailIf Property="AdminUser" 
       Compare="ValueNotEqualTo" Value="True" 
       String="NotAnAdmin"/> 
      </InstallConditions> 

      <ExitCodes> 
       <ExitCode Value="0" Result="Success"/> 
       <ExitCode Value="1641" Result="SuccessReboot"/> 
       <ExitCode Value="3010" Result="SuccessReboot"/> 
       <DefaultExitCode Result="Fail" String="GeneralFailure"/> 
      </ExitCodes> 
     </Command> 
    </Commands> 
</Product>