37 votes

InstallShield LE (avec Visual Studio 2012) ne parvient pas à détecter les dépendances.

Je suis en train de vivre un cauchemar en essayant de faire fonctionner un installateur simple dans InstallShield LE (celui qui est livré avec VS 2012). Il y a toutes sortes de problèmes que je peux contourner (comme le fait que je ne peux plus faire "Rebuild All" sans tout gâcher - je dois simplement décharger le projet InstallShield pendant le développement). Mais le problème majeur est que lorsque je construis mon installateur, il inclut la mauvaise version de diverses DLL (y compris celles qui font partie de mon projet, et celles de tiers comme la DLL Entity Framework).

Faire une "solution propre" n'a même pas résolu le problème avec les DLLs qui sont dans ma solution. Il trouvait une version aléatoire quelque part sur ma machine (dans une sorte de répertoire temporaire du compilateur), et insistait pour l'inclure. J'ai fini par résoudre le problème en effectuant une recherche dans l'Explorateur Windows et en supprimant tous les fichiers qu'il trouvait, mais j'ai peur que la prochaine fois que je ferai une version, il ne parvienne encore à choisir le mauvais fichier.

De plus, j'ai besoin d'avoir les versions .NET 4 et .NET 4.5 d'Entity Framework sur mon ordinateur, et il choisit la mauvaise version pour l'installer. Je ne peux pas supprimer celle que je ne veux pas qu'il inclue.

Quel produit absolument minable. I podría "Je peux passer à la version complète pour voir si elle résout ces problèmes, mais ma récente expérience avec la version LE m'a dissuadé d'utiliser à nouveau l'un de leurs produits.

Quelqu'un d'autre a-t-il eu des problèmes similaires ? Avez-vous trouvé une solution ?

18voto

EdSF Points 4145

C'est un vieux message, alors peut-être que cela peut vous aider ou aider d'autres personnes qui sont confrontées à ce problème exaspérant (en supposant que vous êtes confrontées à des erreurs). comme -6225 ).

Symptômes :

  • Vous pouvez (re)construire chaque projet sans problème, y compris le projet Install Shield.
  • Cependant, si vous construisez le Solution (de plusieurs projets) les erreurs semblent juste apparaître

Essayez :

  • dans VS 2012, cliquez à droite sur votre solution et sélectionnez Project Build Order
  • même si l'ordre semble correct, continuez à définir les dépendances
    • Par exemple, votre projet d'installation dépend du projet source (évidemment, mais comme cet outil ne le "sait" pas, il a besoin d'aide).

Je ne sais pas si cela résout le problème des "mauvaises dlls" (je n'ai pas vécu cette expérience...) mais la suggestion de vérifier les sorties du projet pourrait aider....the ci-dessus a résolu mes problèmes.

Oui, je suis d'accord, s'il ne peut même pas faire la parité avec VS2010 et inférieur installation et déploiement les projets de facilité d'utilisation, alors c'est une de ces courbes d'apprentissage de plus que les développeurs doivent gérer (perte de temps). Je ne suis pas prêt à dire qu'il s'agit d'un produit de mauvaise qualité, il y a même de belles friandises, même dans la version "limitée". .... .

J'espère que cela vous aidera. ....

Mise à jour 1

Oui, je peux officiellement dire que l'ISLE est de mauvaise qualité. . Je fais maintenant l'expérience horrible du problème des "dlls manquantes" (oubliez les mauvaises dlls, elles ne sont même pas dans le dossier d'installation, excusez le langage coloré mais WTF ??!!). ISLE ne peut pas identifier les dépendances appropriées - et je ne suis pas d'accord avec la réponse précédente. Ce problème N'A PAS existent avec le système intégré Setup and Deployment Project que nous avons depuis VS 2005.

Je suis d'accord avec le commentaire concernant le geste stupide de MS.

Une fois que j'aurai résolu ce problème, je mettrai à jour.

Mise à jour 2

Ma solution (s'il y a une meilleure solution, merci de répondre) Tout ceci est fait dans l'interface utilisateur de l'ISLE :

  1. Recherche de dépendances - clic droit sur le projet sortie primaire , sélectionnez Dependencies from scan at build step 1 scan to see missing dependencies

  2. Vous verrez les dépendances que vous devrez ajouter manuellement indiqué par une icône rouge step 2 identify missing dependencies
    Je les ai décoché pour pouvoir me débarrasser de la -6248 avertissement ce qui est vraiment étrange parce que IMHO il devrait être une erreur fatale dans la construction - Comment cette installation/cette configuration peut-elle fonctionner s'il lui manque des dépendances ? A avertissement continue la construction, mais il ne travaillent jamais !

  3. Alors (oui) manuellement ajoutez les dépendances que vous avez identifiées ci-dessus...

BTW, je ne sais pas si cela a de l'importance - j'ai commencé tout le processus en Importation de un projet d'installation VS 2010 utilisant ISLE ( ISLE menu -> Visual Studio Deployment Project Import Wizard ). Je ne suis pas sûr que cela ait de l'importance. Dependencies from scan at build si vous partiez de zéro (au lieu d'importer) ?

Voilà pour les "progrès" dans l'installation et le déploiement de VS2012...

J'espère que cela vous aidera !

3voto

James Holwell Points 529

J'ai récemment rencontré le problème que vous décrivez : une application console se construit correctement, avec des versions à jour des dépendances dans le répertoire de l'application. bin mais, lorsqu'il est emballé avec InstallShield LE, il utilise d'anciennes versions des DLL de dépendance.

Comme vous le dites :

Faire une "solution propre" n'a même pas résolu le problème avec les DLLs qui sont dans ma solution. qui sont dans ma solution. Il trouvait une version aléatoire quelque part sur ma machine (dans une sorte de répertoire temporaire du compilateur), et insistait pour l'inclure.

Dans mon cas, les fichiers incriminés se trouvaient dans le fichier Cache de compilation dynamique ASP.NET à l'adresse C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root y C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root

L'effacement du contenu de ces répertoires a résolu le problème.

Par ailleurs, j'ai pensé ajouter une action de construction pour vider ces répertoires automatiquement, mais je ne pouvais pas le faire automatiquement sans me heurter aux droits de propriété.

2voto

mrnx Points 16039

Chaque outil de configuration a ses problèmes. Veuillez noter qu'il n'existe aucun outil capable de détecter avec précision les dépendances de votre application. Le mieux qu'un outil puisse faire est de faire des suggestions. C'est pourquoi la plupart des développeurs de programmes d'installation déterminent eux-mêmes les dépendances et les incluent manuellement dans le programme d'installation.

Si vous n'êtes pas satisfait d'InstallShield, vous pouvez essayer un autre outil d'installation : http://en.wikipedia.org/wiki/List_of_installation_software

La version gratuite d'Advanced Installer comprend un Projet d'installation de Visual Studio ce qui peut aider.

0voto

PyGeek Points 3

Au lieu d'utiliser le bouclier d'installation, vous pouvez publier votre projet en faisant simplement un clic droit sur le projet et l'assistant de publication crée l'exe en tant qu'image unique ou quel que soit votre choix et enfin il prend soin de toutes les dépendances. Ainsi, lorsque l'exe d'installation créé par l'assistant de publication qu'il installe automatiquement toutes les dépendances telles que le cadre .net et si certains cadre d'exécution requis par votre application qu'il vous alertera pour installer celui-là.

Vous pouvez consulter cette page

http://msdn.microsoft.com/en-IN/library/31kztyey.aspx

0voto

UserBlueOne Points 63

J'avais un problème avec ma DLL. Elle en récupérait une bien plus ancienne de quelque part. Il n'y avait rien dans le GAC pour cette DLL. J'ai tout essayé. Finalement, j'ai ajouté cette fichue chose manuellement (ISLE) dans la section Fichiers en faisant un clic droit et en sélectionnant ajouter. J'ai trouvé la DLL dans mon \obj\Release dossier. J'ai ensuite reconstruit la version (SingleImage) et tout a fonctionné correctement.

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