2012-09-27 26 views
5

Sto cercando di utilizzare Burn e WIX 3.6 per creare un programma di installazione per la mia app. Il programma di installazione deve essere in grado di installare .NET 3.5 SP1 dal sito Web di Microsoft. Sto lavorando da un progetto WIX funzionante creato con WIX 3.5. Funziona, se .NET 3.5 SP1 è stato precedentemente installato sul computer di destinazione. Il primo passo sembra essere quello di creare un pacchetto, quindi ho aggiunto un elemento al mio file Product.wxs. Quando faccio ciò ottengo un errore che dice che non è valido nello schema, ma devo avere un. Ciò significa che devo trasferire tutte le definizioni del prodotto in un frammento? Non è chiaro come lo faccio. Quindi la cosa diventa più complicata, dal momento che WixNetfxExtension fornisce solo PackageRef per .NET 4.0 e 4.5. Non sono pronto a passare la mia app a quella versione del framework. SO come faccio a ottenere .NET 3.5 SP1 da una fonte web nel mio pacchetto?utilizzando WIX3.6 per installare .NET Framework 3.5 SP1 con Burn

Esiste un esempio funzionante per farlo ovunque?

risposta

11

Non è chiaro nella tua domanda dove stai cercando di fare cose, quindi inizierò dall'inizio.

Creare un nuovo progetto bootstrap di masterizzazione Wix. Qui è dove verranno installate le tue dipendenze e da dove verrà generato il tuo attuale programma di installazione su Wix 3.5.

Scaricare il pacchetto completo .net 3.5 SP1 e prendere nota dell'url diretto utilizzato per scaricarlo.

Utilizzando heat.exe (nella directory bin 3.6 di wix) eseguire il seguente comando che genererà un file WXS con i dettagli del programma di installazione .net.

heat.exe payload [path_to_net_installer] -o [path_to_wxs] 

this.will darvi seguito in un WXS:

<RemotePayload CertificatePublicKey="F321408E7C51F8544B98E517D76A8334052E26E8" 
       CertificateThumbprint="D57FAC60F1A8D34877AEB350E83F46F6EFC9E5F1" 
       Description=".NET Framework 3.5 Setup" 
       Hash="3DCE66BAE0DD71284AC7A971BAED07030A186918" 
       ProductName=".NET Framework 3.5" 
       Size="242743296" 
       Version="3.5.30729.1" /> 

Aggiungi questo nel programma di avvio automatico nel progetto come un figlio di un elemento ExePackage e aggiornare l'elemento con il download url salvato in precedenza. Questo scaricherà automaticamente il programma di installazione .net o lo potrai posizionare accanto al bootstrap exe e lo rileverà.

Creare uno chain nello Bundle che contiene .net ExePackage e un MsiPackage per l'installazione. Sarà quindi finire con qualcosa di simile (un sacco di attributi richiesti Vi si lascio a riempire!):

<Bundle Name="$(var.SkuName)" 
     Copyright="$(var.Copyright)" 
     Manufacturer="$(var.Manufacturer)" 
     Version="$(var.ProductVersion)" 
     UpgradeCode="$(var.UpgradeCode)"> 
    <Chain> 
     <ExePackage Id="dotNetFX3.5"> 
      <RemotePayload /> 
     </ExePackage> 
     <MsiPackage Id="MyMsi" /> 
    </Chain> 
    </Bundle> 

Costruire e si dovrebbe quindi avere un grande exe con il msi incluso o se si sceglie per non comprimerlo un exe che esegue il tuo msi (dovrà essere nella stessa cartella).

+2

Grazie mille! Non è chiaro se mi serva più di un progetto WIX. La documentazione non è troppo chiara per portarti dalle basi a un progetto di lavoro (e non sto cercando di fare qualcosa di eccezionalmente complesso, ho pensato: cosa è difficile su un .NET con 3.5 SP1, e voglio installare .NET dal download di microsoft ?). Ad ogni modo, quello era il consiglio che mi serviva! –

Problemi correlati