0

J'utilise Vs2010 et Wix 3.6.0917.0, pour l'enregistrement. J'utilise la propriété $ (SolutionDir) un peu dans mon fichier .wixproj, puisque je ne construis l'installateur que dans le cadre d'une construction de solution ou dans le cadre d'une construction d'équipe, et jamais par lui-même. Cependant, bien que la construction à partir de la ligne de commande marche bien (à la fois depuis cmd sur le bureau et lors de la construction d'agents de build), quand j'essaye de recharger le fichier .wixproj dans l'EDI, j'obtiens des erreurs car toutes les variables $ (SolutionDir) résolvez dans le répertoire du projet, pas dans le répertoire de la solution. Considérez:

C:\workspace\projectCollection\teamProject\branch\solution.sln C:\workspace\projectCollection\teamProject\branch\source\installer\installer.wixproj

et d'assumer un fichier de cibles personnalisées partagées:

C:\workspace\projectCollection\teamProject\branch\build\shared.targets

qui est référencé dans installer.wixproj avec:

<Import Project="$(SolutionDir)build\shared.targets">

ligne de commande construit le travail bien ...

C:\workspace\projectCollection\teamProject\branch\> MSBuild /t:build /property:Platform=x64;Configuration=Debug solution.sln 
0 Errors 
0 Warnings 

Build succeeded! 

Mais charge dans VS2010 et vous voir ...

The imported project "C:\workspace\projectCollection\teamProject\branch\source\installer\build\shared.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. C:\workspace\projectCollection\teamProject\branch\source\installer\installer.wixproj

Vous pouvez voir ici que le résultat résolu de $ (SolutionDir) construction \ shared.targets obtient le répertoire du projet et non le répertoire de la solution. Ce qui donne?

+0

Est-ce que le cumping fonctionne sur SO? – bwerks

+0

Oooh, générosité. Neato. – bwerks

Répondre

0

Ma conjecture serait que $ (SolutionDir) se résout à rien lorsque le wixproj est en cours de chargement dans VS2010. Dans ce cas, le fichier importé devient "build \ shared.targets". Comme le chemin est relatif, il est supposé être relatif au répertoire du projet. Utiliser ".." ou un autre chemin pourrait vous aider à contourner le problème.

J'ai vérifié que cela a échoué avec WiX 3.5.2222.0 dans VS2010. Un projet d'application de console C# (csproj) a fonctionné comme prévu.

Avez-vous déposé un bug contre WiX pour cela? J'ai regardé un peu le code addin de WiX vs2010 et les propriétés de la solution ne sont créées que lors d'une compilation et non lors du chargement du projet.

+0

Oh génial! Quel code est-ce? Je ne serais pas au-dessus d'aller là-bas et d'essayer de me frayer un chemin à travers pour le faire exécuter sur le chargement, aussi bien; Je n'avais aucune idée de l'endroit où regarder/comment commencer. – bwerks

+0

Dans la source WiX: Votive \ votive2010 \ WixProjectNode.cs est le fichier pour suivre un projet WiX. Il me semble en regardant la source que quelque part lors de l'installation de WixProjectNode (comme dans SetBuildProject, substitué à la classe de base) les propriétés de la solution doivent être configurées (comme dans WixBuildMacroCollection.cs) –

+0

Ceci a été corrigé dans WiX 3.5.2312.0 et 3.6.1112.0 –