2010-03-29 7 views
4

J'ai un programme d'installation WiX que je voudrais vérifier pour .Net 3.5, et l'installer s'il n'existe pas. J'ai les lignes suivantes dans mon fichier wixproj:WiX: .Net 3.5 prérequis

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

Lorsque je crée le programme d'installation, un dossier DotNetFX35 est créé, et il y a 4 différentes versions de .Net (y compris 3,5) et un fichier d'installation.

J'ai deux questions:

  1. Comment puis-je l'ai seulement apporter dans la version 3.5 (de sorte que l'utilisateur ne dispose pas installer plus de 100 Mo de fichiers)? Comment puis-je dire à WiX d'empaqueter ces fichiers dans le fichier MSI, de sorte que l'utilisateur ne doive télécharger qu'un seul fichier?

+0

vous avez ce que vous avez déjà fait d'ici? http://wix.sourceforge.net/manual-wix3/install_dotnet.htm – BlackICE

+0

Quelle version de WiX utilisez-vous? –

+1

cette question est en fait sur la tâche de msbuild "GenerateBootstrapper", pas wix. La documentation du projet wix va dans ce sens car leur propre programme d'amorçage "burn" n'est pas encore prêt. –

Répondre

1
  1. Je pense que vous êtes mieux de créer un projet distinct pour le programme d'amorçage. Si une web-installation est suffisante, le modèle de projet devrait fonctionner:

    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> 
    <ItemGroup> 
        <BootstrapperFile Include="Microsoft.Windows.Installer.3.1"> 
         <ProductName>Windows Installer 3.1</ProductName> 
        </BootstrapperFile> 
        <BootstrapperFile Include="Microsoft.Net.Framework.3.5.SP1"> 
         <ProductName>.NET Framework 3.5 SP1</ProductName> 
        </BootstrapperFile> 
    </ItemGroup> 
    <Target Name="Bootstrapper"> 
        <GenerateBootstrapper 
         ApplicationFile="MyProject.msi" 
         ApplicationName="MyProject" 
         BootstrapperItems="@(BootstrapperFile)" 
         OutputPath="$(OutputPath)" 
         Culture="en-US" 
         CopyComponents="true" 
         ComponentsLocation="HomeSite" 
         Path="$(BootstrapperPath)" /> 
    </Target></Project> 
    
  2. L'équipe Wix travaille sur Graver, un nouveau programme d'amorçage, mais jusqu'à ce qu'il soit prêt à l'emploi de la production, vous pouvez utiliser l'un des (commercial) solutions pour construire un seul exécutable auto-extractible qui exécute automatiquement "setup.exe".

+0

Une installation Web est correcte. J'ai modifié mon fichier de projet avec ce qui précède, mais il ne m'incite pas à installer le programme d'installation Windows, .Net 3.5. Je suis positif .Net n'est pas déjà sur la machine, comme je viens de faire une nouvelle installation (Windows 7 Ultimate). Je ne vois pas non plus. Net dans la liste des programmes de désinstallation (bien qu'il n'y ait qu'un seul article là-bas, alors peut-être que Windows me protège de moi-même, là-bas). Tout ce que j'ai copié sur la machine de test était le fichier msi. Ai-je besoin d'autre chose pour une installation Web? –

+0

Je dois noter que j'ai seulement changé les propriétés ApplicationFile et ApplicationName. Tout le reste, je suis parti pareil. J'ai mis le fichier ApplicationFile au nom de mon fichier msi (je n'ai pas ajouté de chemin), et j'ai défini le nom de l'application sur le nom de mon application, mais je ne sais pas si cela est censé correspondre avec autre chose. Je viens d'écrire ce qui semblait juste. –

+0

Vous avez besoin du programme d'amorçage (setup.exe) qui aurait dû être créé par le projet ci-dessus, les prérequis (.NET) sont ensuite chargés avant l'exécution du fichier MSI. – Armin

1

Pour répondre à la partie 2 de votre question:

L'idée d'un programme d'amorçage est de fournir un .exe qui ne dispose pas de dépendances beaucoup (le cas échéant). Cela garantit que vous pouvez également amorcer des choses comme Windows Installer. Pour cette raison, le programme d'amorçage est le fichier .exe qui contient ou télécharge les fichiers requis.

Ceci permet également de s'assurer que lorsque vous avez déjà installé un composant, il ne sera pas téléchargé à nouveau. Vous ne pouvez pas tout empaqueter dans un msi pour cette raison, et aussi parce que cela signifierait que quand il y a un correctif de sécurité à .NET, vous avez pour le patcher. Lorsque .NET est installé à l'aide de son propre programme d'installation, Microsoft peut libérer des correctifs à ce

3

Comment puis-je l'ai seulement apporter dans la version 3.5 (de sorte que l'utilisateur ne dispose pas installer plus de 100 Mo de fichiers)?

Vous avez mentionné qu'il y a "4 versions différentes" de .NET là-dedans. Il n'y a en fait que 3: DotNetFX20, DotNetFX30, et DotNetFX35 et quelques mises à jour de Windows. La raison en est que .NET 3.5 et .NET 3.0 sont en fait des versions plus additives au-dessus des bibliothèques de framework .NET 2.0 et de l'environnement d'exécution. En d'autres termes, .NET 3.0 et .NET 2.0 sont tous les deux des pré-requis de .NET. 3.5. Vous avez besoin de tous ces fichiers si votre application cible .NET 3.5.

Toutefois, certaines applications nécessitent uniquement le sous-ensemble de .NET 3.5 appelé .NET 3.5 client profile. Vous pouvez essayer ceci en cochant la case "cadre du client seulement" dans les options de construction de vos projets de studio visuel.

Si votre application est toujours construite et fonctionne correctement avec le profil client, vous pouvez modifier "Microsoft.Net.Framework.3.5" dans « Microsoft.Net.Client.3.5 ». Ceci est seulement 28Mo.

Comment puis-je dire WiX pour emballer ces fichiers vers le haut dans le fichier MSI, de sorte que l'utilisateur ne ?. a télécharger 1 fichier

les conditions préalables doivent être installés avant le MSI est lancé, afin qu'ils ne peuvent pas faire partie de la MSI Cependant, vous pouvez faire le contraire: paquet à la fois les conditions préalables et le MSI dans une archive auto-extractible, par exemple avec WinZip Self-Extractor L'archive auto-extractible peut appeler le fichier setup.exe extrait

1

Découvrez dotNetInstaller http://dotnetinstaller.codeplex.com. Il s'agit d'un programme d'amorçage d'installation que vous pouvez utiliser pour vérifier et installer les dépendances pour votre application. Vous pouvez également intégrer les programmes d'installation pour produire un seul fichier setup.exe. Voici un extrait de leur fichier d'aide: «Distribuer une configuration unique, compressée et exécutable avec tous les pré-requis.

Questions connexes