2009-07-15 19 views
11

Ho bisogno di includere l'installazione completa di .NET 3.5 sp1 nel mio programma di installazione, che è in WiX.Come posso creare un programma di installazione WiX con un programma di installazione di .NET 3.5 sp1 completamente autonomo?

Ho bisogno che boostrapper sia completamente autonomo, senza alcun accesso web. Non è consentito a questo programma di installazione di richiedere il web; abbiamo clienti nella Mongolia esterna (sono serio, non sto solo usando il nome del luogo perché è remoto) a cui spediamo i CD perché non hanno accesso a internet.

il tutorial stati WiX:

<Target Name="AfterBuild"> 
    <GenerateBootstrapper ApplicationFile="$(TargetFileName)" 
         ApplicationName="My Application Name" 
         BootstrapperItems="@(BootstrapperFile)" 
         ComponentsLocation="Relative" 
         CopyComponents="True" 
         OutputPath="$(OutputPath)" 
         Path="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\"/> 
</Target> 

È possibile che questo programma di avvio automatico richiede il web. Come faccio a fare un installatore che non lo fa?

risposta

8

<Project ToolsVersion="3.5" 
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <ItemGroup> 
     <BootstrapperFile Include="Microsoft.Net.Framework.3.5.SP1" > 
      <ProductName>.NET Framework 3.5 SP1</ProductName> 
     </BootstrapperFile> 
     <BootstrapperFile Include="Microsoft.Windows.Installer.3.1" > 
      <ProductName>Windows Installer 3.1</ProductName> 
     </BootstrapperFile> 
    </ItemGroup> 

    <Target Name="setup"> 
     <GenerateBootstrapper 
      ApplicationFile="myproduct.msi" 
      ApplicationName="myproduct" 
      BootstrapperItems="@(BootstrapperFile)" 
      Path="$(bootstrapperPackagesFolder)" 
      ComponentsLocation="Relative" 
      OutputPath="$(cddir)" 
      Culture="en"/> 
    </Target> 

</Project> 

Nel tuo caso, la variabile $(bootstrapperPackagesFolder) indicherebbe C :\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\. La variabile $(cddir) è la cartella in cui si compone il contenuto del CD di installazione.

L'attività GenerateBootStrapper non solo genererà un exe bootstrapper, ma copierà anche una cartella DotNetFX35SP1 e una cartella WindowsInstaller3_1 nella stessa posizione. Durante l'installazione, il bootstrapper exe cercherà quelle cartelle e userà i file lì, piuttosto che scaricarli.

Non sono sicuro che il mio esempio sia diverso da quello che state già facendo; forse hai appena dimenticato di includere la cartella DotNetFX35SP1 sul CD di installazione?

+0

Dopo aver fatto questo, ottengo il seguente errore: C: \ Documents and Settings \ Hudson \ .hudson \ lavori \ \ workspace \ \ Main \ SetupWiX \ SetupWiX.wixproj (164,5): l'errore MSB3152: Il percorso di installazione per i prerequisiti non è stato impostato su "sito Web del fornitore del componente" e il file "DotNetFX35SP1 \ dotNetFX20 \ aspnet.msp" nell'elemento ".NET Framework 3.5 SP1" non può essere posizionato su disco. Vedere la Guida per ulteriori informazioni. – mmr

+0

inoltre, sembra che setup.bin nella directory del motore boostrapper non trovi la directory corretta per sp1, il che è strano per me. – mmr

+0

mi spiace, bootstrapper – mmr

0

È possibile eseguire il checkout di questo Microsoft sample code, il fatto è che WiX non fornisce un bootstrap/chainer, che non arriverà fino a WiX 3.5 come strumento "Masterizza".

Non sono sicuro di cosa si sta utilizzando nell'esempio originale, sto assumendo msbuild o qualcosa - che non è un componente WiX.

Problemi correlati