2009-05-25 12 views
2

Je souhaite créer un package x86 msi ainsi qu'un package x64 à l'aide du même projet de déploiement Visual Studio 2008.Créer des programmes d'installation x86 et x64 en utilisant le même fichier vdproj?

Je vois un TargetPlatform dans la boîte de dialogue des propriétés du projet et je sais que je peux l'utiliser pour sélectionner x86 ou x64 (ou Itanium d'ailleurs).

Le problème est que je ne peux pas semble associer cette propriété avec une configuration de projet (?)

Idéalement, ce que je voudrais être en mesure de faire est de créer x86 et x64 distincts installateurs msi en exécutant devenv. exe deux fois à partir d'un script de génération (fichier batch), chaque appel définissant en quelque sorte la propriété TargetPlatform en fournissant un paramètre.

Si possible, je voudrais éviter d'utiliser WIX ou d'autres outils tiers.

Note: Je constate que les différences entre les projets x86 et x64 déploiement sont principalement:

  • Folder \ DefaultLocation = ProgramFilesFolder (x86) | ProgramFiles64Folder (x64)
  • Produit \ TargetPlatform = "3: 0" (x86) | "3: 1" (x64) | "3: 2" (Itanium)

Est-ce que je dois vraiment créer deux projets de déploiement séparés afin de créer des paquets msi séparés en utilisant devenv.exe juste à cause de ces deux différences?

Je suppose que je pourrais utiliser un script pour effectuer ces modifications avant chaque appel de devenv.exe (?)

Répondre

2

Quand j'ai eu ce problème, je dû utiliser chaîne de remplacement dans le fichier vdproj avant d'exécuter la commande devenv. Pour le remplacer i utilisé le fichier Remplacer tâche de SDCTasks Ensuite, mon projet msbuild ressemblait presque à ceci:

<Project DefaultTargets="Default" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<PropertyGroup> 
<Configuration>Release</Configuration> 
<x86>3:0</x86> 
<x64>3:1</x64> 
<Import Project="$(SDCTasksPath)\Microsoft.Sdc.Common.tasks"/> 
<Target Name="Default"> 
    <File.Replace Path="$(SolutionDirectory)Setup\Setup.vdproj" OldValue="%22TargetPlatform%22 = %22$(x86)%22" NewValue="%22TargetPlatform%22 = %22$(x64)%22" /> 
<Exec Command="devenv.exe $(SolutionDirectory)Solution.sln /build $(Configuration) /project $(SolutionDirectory)Setup\Setup.vdproj /projectconfig $(Configuration)"></Exec> 
+0

Ce travail de solution pour moi aussi. +1 –

Questions connexes