2009-08-31 7 views
1

J'ai créé une tâche pour MSBuild à utiliser par les développeurs et je voudrais créer un programme d'installation pour installer la tâche et le fichier .targets associé dans le dossier des extensions MSBuild dans Program Files (généralement C:/Program Files/MSBuild sur XP 32 bits). Pour faire cela correctement, je voudrais demander au système l'emplacement de ce dossier au moment de l'installation - y a-t-il une clé de registre qui fournit cette information ou une autre propriété de l'installateur? J'ai l'intention d'utiliser WiX pour l'installation.Installation d'une extension MSBuild

Répondre

1

Nous exactement cela (et plus :)

Créer un fichier WXi avec quelque chose comme:

<!-- Product name as you want it to appear in Add/Remove Programs--> 
<?if $(var.Platform) = x64 ?> 
    <!-- Product name as you want it to appear in Add/Remove Programs--> 
    <?define ProductName = "Custom MSBuild Tasks (64 bit)" ?> 
    <?define Win64 = "yes" ?> 
    <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?> 
<?else ?> 
    <?define ProductName = "Custom MSBuild Tasks" ?> 
    <?define Win64 = "no" ?> 
    <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?> 
<?endif ?> 

<!-- Directory name used under MSBuild --> 
<?define InstallName = "CustomTasks" ?> 

Ensuite, lorsque vous devez définir vos composants:

<Fragment Id="ComponentsFragment"> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="$(var.PlatformProgramFilesFolder)"> 
     <Directory Id="MSBuildFolder" Name="MSBuild"> 
     <Directory Id="INSTALLLOCATION" Name="$(var.InstallName)"> 
      ... Your custom .Targets and tasks go here 
+0

Merci. Comme je le soupçonnais, le chemin MSBuild est codé en dur dans le programme d'installation. J'aime le code pour basculer entre 64 et 32 ​​bits. Cependant, nous n'avons actuellement aucun matériel 64 bits à tester, donc je ne suis pas sûr que je devrais même essayer de le supporter quand je ne peux pas valider ce que j'écris. –

+0

Vrai :) Aussi, si vous voulez intégrer votre schéma de tâches dans Visual Studio (2005 & 2008), j'ai le code WiX pour cela, posez simplement une autre question et postez la réponse. – si618

2

Wix lui-même a une tâche MSBuild donc je pense qu'il est préférable de voir comment ils l'ont fait, la source de relink est Toolset.wxs (Google Code Search).

Regardez la partie où ils ont défini le MSBuild Dossier:

<DirectoryRef Id="ProgramFilesFolder"> 
    <Directory Id="Dir_MSBuild" Name="MSBuild"> 
     <Directory Id="Dir_MSBuildMS" Name="Microsoft"> 
      <Directory Id="Dir_MSBuildMSWix" Name="WiX"> 
       <Directory Id="Dir_MSBuildMSWix35" Name="v3.5"> 
        <Component Id="WixMSBuildBinaries35" 
           Guid="2CB1EA5F-2542-4AFF-A05B-FAF576265F89" 
           Win64="no"> 
         <File Source="WixTasks.dll" Checksum="yes" 
           KeyPath="yes" Vital="yes" /> 
        </Component> 
       </Directory> 
      </Directory> 
     </Directory> 
    </Directory> 
</DirectoryRef> 

Cela installera la tâche Wix MsBuild (WixTasks.dll) sous \ Program Files \ MSBuild \ Microsoft \ Wix

+0

Si vous utilisez des fenêtres 64 bits, l'installation se fera dans le mauvais dossier. Ils doivent avoir un autre code qui gère les fichiers programme ou les fichiers programme (x86). En fait, je viens de creuser leur code, il semble? comme s'ils comprenaient des composants x86 et x64, et écrasaient simplement les composants x86 avec les composants x64 si c'était une plate-forme x64. Intéressant :) – si618

Questions connexes