7 votes

Impossible d'ajouter une action personnalisée dans le projet d'installateur Visual Studio 2010

J'ai converti un projet fonctionnel de Visual Studio 2008 en VS2010. La solution C++ construit un seul exécutable et 3 DLL, ainsi qu'un projet d'installateur Windows.

Après la conversion en VS2010, j'ai reçu une erreur de construction :

Impossible de construire l'action personnalisée nommée 'Primary Output from xxxx (Actif)' du groupe de sortie du projet 'Primary Output' car le groupe de sortie du projet n'a pas de fichier clé.

J'ai supprimé et réajouté les groupes de sortie, puis j'ai tenté d'ajouter une action personnalisée. L'exécutable de sortie n'était pas répertorié comme candidat pour une action personnalisée. J'ai ensuite remarqué que lorsque j'ai sélectionné les propriétés de l'exécutable "Primary Output", la propriété KeyOutput était définie sur (Aucun) et était grisée.

En revisitant la version VS2008, la propriété KeyOutput n'était pas grisé. J'ai trouvé le message d'erreur sur MSDN, avec une solution inutile :

Supprimez l'action personnalisée et remplacez-la par une action personnalisée pointant vers un groupe de sortie de projet ayant un fichier clé.

De toute évidence, le rédacteur technique ne savait pas non plus comment le corriger. Gardez à l'esprit que la construction initiale fonctionnait et s'installait correctement. Je crois que le problème principal est pourquoi la propriété KeyOutput est désactivée - mais pourquoi? (En visualisant les "Sorties", il affiche correctement l'EXE ou la DLL dans chaque projet).

3voto

Don Points 31

J'ai eu un problème similaire et j'ai compris pourquoi le projet de configuration ne pouvait pas trouver les fichiers de sortie clés.

Le répertoire de sortie de mon projet était défini comme $(SolutionDir)\bin\$(Platform). SolutionDir avait déjà une barre oblique inversée finale, donc le \bin plaçait une double barre oblique dans le chemin. Le projet se construisait bien mais le projet de configuration ne pouvait pas résoudre les sorties clés. En définissant la sortie comme $(SolutionDir)bin\$(Platform)\, le problème a été résolu.

2voto

Roger Dunn Points 91

Après de plus amples investigations, j'ai découvert qu'il s'agit d'un bug dans Visual Studio 2010.

Si vous spécifiez un nom de sortie pour un projet qui diffère du nom du projet lui-même, il échoue à faire ce qu'il faut.

Pour reproduire ceci, changez

Propriétés du projet->Liens->Général->Fichier de sortie de $(OutDir)$(TargetName)$(TargetExt) pour quelque chose comme $(OutDir)foobar.exe.

Le projet change ensuite la valeur KeyOutput à vide, et n'est pas disponible pour des actions personnalisées dans les installations. Aucune solution de contournement autre que de vivre avec la convention de nommage par défaut du projet.

1voto

user544550 Points 798

Réponse très tardive mais j'espère qu'elle sauvera quelqu'un des 2 heures que j'ai passées à me cogner la tête contre le mur avec VS 2010 (quelle horrible logiciel - lent à charger et prend 300 Mo de mémoire de travail par devenv, et maintenant ce bug !! ??? ) voici - Roger Dunn avait raison en disant que c'est le Project properties->Linker->General->OutputFile qui cause le problème - si vous avez quelque chose comme $(OutDir)foobar.exe le custom action plante , si vous le changez de nouveau en $(OutDir)$(TargetName)$(TargetExt) ça marche de nouveau!

La solution de contournement est de changer le macro $(TargetName) en foobar puis d'utiliser $(OutDir)$(TargetName)$(TargetExt) si vous voulez un nom personnalisé pour votre exe.

$(TargetName) peut être modifié à - Project properties->Configuration Properties->general->TargetName.

Mais quel gaspillage de temps ce VS 2010.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X