2016-05-17 14 views
0

Ich habe ein Wix-Bundle-Projekt, das ich bearbeite (Ver 3.10). Ich versuche, das wixnetfxextensions zu verwenden, um .net framework 4.6 zu installieren, wenn es nicht bereits installiert ist. Ich habe ein Exepackage erstellt, das die WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED-Eigenschaft verwendet. Ich schätze, ich benutze das nicht richtig. Irgendwelche Hilfe, wie man das benutzt? Derzeit wird das .net-Framework nicht installiert, egal was.Wix Toolset Voraussetzungen: Überprüfen Sie für .Net Framework

<Chain> 
     <PackageGroupRef Id="redist_vc140" /> 
     <PackageGroupRef Id="NetFx461Full" /> 
     <MsiPackage Id="MSI_Installer" SourceFile="C:\Installer.msi"/> 
    </Chain> 

    <Fragment> 
     <PropertyRef Id="WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED"/> 
     <!-- Install .NET 4.6.1 --> 
     <PackageGroup Id="NetFx461Full"> 
      <ExePackage Id="NetFx461" 
      DisplayName="Microsoft .NET Framework 4.6.1" 
      Compressed="no" 
      Cache="yes" 
      PerMachine="yes" 
      Permanent="yes" 
      Protocol="netfx4" 
      Vital="yes" 
      SourceFile="..\NDP461-KB3102436-x86-x64-AllOS-ENU.exe" 
      UninstallCommand="/q /norestart" 
      RepairCommand="/q /norestart" 
      DetectCondition="NOT WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED" /> 
     </PackageGroup> 
    </Fragment> 

Antwort

1

Sie tun viel zusätzliche Arbeit, um .net zu installieren, das Sie eigentlich nicht tun müssen.

Um .net 461 zu Ihrem Installateur ist nur die netfxextension hinzufügen und

<Bundle> 
    <PayloadGroup Id="NetFx461RedistPayload"> 
     <Payload Name="redist\NDP461-KB3102436-x86-x64-AllOS-ENU.exe" 
      SourceFile="C:\path\to\redists\in\repo\NDP461-KB3102436-x86-x64-AllOS-ENU.exe"/> 
    <PayloadGroup/> 
</Bundle> 

hinzufügen, so dass die volle Installateur in Ihrem Bootstrap-Programm enthalten ist. Sie können dies ignorieren und der Bootstrapper wird das Installationsprogramm herunterladen, aber wenn der Kunde keine Internetverbindung hat, kann er .net nicht installieren.

in der Kette Dann fügen Sie einfach

<PackageGroupRef Id="NetFx461Redist"/> 

I verwendet this als Referenz und überprüfte die wix source, um zu sehen, was die Namen .net 461 in netfxextension verwendet wird.


Sean Halle erwähnt, dass Bündel sogar Eigenschaften verwenden nicht so, was ich hier geschrieben hatte, gar nicht in dieser Situation gelten. (Und es war auch falsch)

+2

Die Eigenschaft 'WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED' funktioniert nicht, da die Eigenschaften für MSIs nicht Bundles sind. –

+0

Ja, das würde es auch tun. Die wix netfxextension verwendet als Standard-Erkennungsbedingung für das Net461-Ex-Paket. –

+0

Danke Brian, das hat funktioniert – AlThurm

0

Hat getan, was Brian Sutherland vorgeschlagen: Die WxsVariable hinzugefügt, die das .netframework mit der bestimmten minimalen Versionsnummer vergleicht. Machen Sie dann im exepackage eine detectcondition

Verwandte Themen