2009-07-15 6 views
11

Ich muss das vollständige .NET 3.5 SP1-Installationsprogramm in mein Installationsprogramm, das in WiX ist, aufnehmen.Wie mache ich ein WiX-Installationsprogramm mit einem vollständig eigenständigen .NET 3.5 SP1-Installationsprogramm?

Ich brauche diesen borderrapper, um völlig selbstständig zu sein, mit überhaupt keinem Netzzugang. Es ist einfach nicht erlaubt, dass dieses Installationsprogramm das Web benötigt; Wir haben Kunden in der äußeren Mongolei (ich meine es ernst, nicht nur den Ortsnamen, weil es entfernt ist), denen wir CDs schicken, weil sie überhaupt keinen Internetzugang haben.

Die Tutorial Staaten 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> 

Die obige Bootstrap-Programm erfordert die Bahn. Wie mache ich ein Installationsprogramm, das nicht funktioniert?

Antwort

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> 

In Ihrem Fall würde die $(bootstrapperPackagesFolder) Variable C :\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\ zeigen. Die Variable $(cddir) ist der Ordner, in dem Sie den Inhalt Ihrer Installations-CD erstellen.

Die Task GenerateBootStrapper generiert nicht nur eine Bootstrapper-Exe, sondern kopiert auch einen DotNetFX35SP1- und einen WindowsInstaller3_1-Ordner an denselben Speicherort. Während der Installation sucht die Bootstrapper-EXE nach diesen Ordnern und verwendet die darin enthaltenen Dateien, anstatt sie herunterzuladen.

Ich bin mir nicht sicher, ob sich mein Beispiel von dem unterscheidet, was Sie bereits tun; Vielleicht haben Sie einfach vergessen, den Ordner DotNetFX35SP1 auf der Installations-CD einzubinden?

+0

Nachdem Sie das getan, bekomme ich folgende Fehlermeldung: C: \ Dokumente und Einstellungen \ hudson \ .hudson \ Jobs \ \ Arbeitsplatz \ \ main \ SetupWiX \ SetupWiX.wixproj (164,5): Fehler MSB3152: Der Installationsort für die Voraussetzungen wurde nicht auf die Website des Komponentenherstellers festgelegt, und die Datei "DotNetFX35SP1 \ dotNetFX20 \ aspnet.msp" im Element ".NET Framework 3.5 SP1" kann nicht auf dem Datenträger gefunden werden. Weitere Informationen finden Sie in der Hilfe. – mmr

+0

auch, es scheint, dass die setup.bin im Bootstrapper-Engine-Verzeichnis einfach nicht das richtige Verzeichnis für sp1 finden, was für mich seltsam ist. – mmr

+0

Sorry, Bootstrapper – mmr

0

Sie könnten diese Microsoft sample code auschecken, die Sache ist, dass WiX bietet keinen Bootstrapper/Chainer - das kommt nicht bis WiX 3.5 als "Burn" -Tool.

Ich bin mir nicht sicher, was Sie in Ihrem ursprünglichen Beispiel verwenden, ich gehe davon aus msbuild oder etwas - das ist keine WiX-Komponente.