2010-01-13 3 views
2

Je suis en train de déployer une application Visual C++ (développée avec Microsoft Visual Studio 2008) à l'aide d'un projet d'installation et de déploiement. Après l'installation, les utilisateurs de certains ordinateurs cibles reçoivent le message d'erreur suivant après le lancement de l'exécutable de l'application: «Cette application n'a pas pu démarrer car la configuration de l'application est incorrecte. Réinstaller l'application peut résoudre le problème. "Un autre utilisateur après l'installation pourrait exécuter l'application correctement. Je ne peux pas trouver la cause première de ce problème, malgré le fait que je passe plusieurs heures sur les fichiers d'aide et les forums en ligne de Visual Studio (la plupart des messages datent de 2006). Est-ce que quelqu'un à Stack Overflow a une suggestion? Merci d'avance. Des détails supplémentaires apparaissent ci-dessous.Qu'est-ce qui rend le déploiement réussi pour certains utilisateurs et échoué pour d'autres?

L'application utilise FLTK 1.1.9 pour une bibliothèque GUI, ainsi que certaines bibliothèques Boost 1.39 (regex, lexical_cast, date_time, math).

Je me suis assuré que j'essayais de déployer la version finale (pas la version de débogage) de l'application. La bibliothèque Runtime dans les paramètres de génération de code est DLL multithread (/ MD). Le dépendant des dépendances de myapp.exe répertorie les DLL suivantes: wsock32.dll, comctl32.dll, kernel32.dll, user32.dll, gdi32.dll, shell32.dll, ole32.dll, mvcp90.dll, msvcr90. dll.

Dans le projet d'installation et de déploiement, j'ajoute les DLL suivantes au système de fichiers sur la machine cible: fltkdlld.dll et un dossier nommé Microsoft.VC90.CRT avec msvcm90.dll, msvcp90.dll, mcvcr90.dll et Microsoft.VC90.CRT.manifest.

Le processus d'installation sur les ordinateurs cibles qui reçoivent le message d'erreur nécessite l'installation préalable de .Net Framework 3.5.

Une suggestion? Merci d'avance!

Répondre

1

Ajoutez le redistribuable Visual C++ à votre projet de déploiement et veillez à exécuter Setup.exe au lieu du fichier MSI lors de l'installation. Cela invoquera le programme d'amorçage VCRedist pour s'assurer que votre PC dispose de ces éléments avant d'installer votre application. Dependency Walker ne montre que les dépendances statiques (temps de liaison) - il ne peut pas connaître les dépendances dynamiques telles que les objets COM.

+0

Bonjour - Merci pour votre réponse. Dans mon post ci-dessus, je détaille comment j'ai déjà un dossier (dans le projet de configuration et de déploiement, dans le système de fichiers sur la machine cible) nommé Microsoft.VC90.CRT avec msvcm90.dll, msvcp90.dll, mcvcr90.dll et Microsoft. VC90.CRT.manifest. N'est-ce pas le redistribuable Visual C++ que vous mentionnez dans votre réponse? – Julien

+0

Ce n'est pas pareil, non. Mon souci est que ces DLL MSVCRT peuvent ne pas être la bonne version pour toutes vos dépendances ... Pour vérifier, sur un ordinateur de travail, utilisez Process Explorer pour déterminer la liste complète des DLL qui sont utilisées et comparez aux versions que vous avez re expédition. Sur une machine de travail, il peut y avoir quelque chose (obscure) installé qui a expédié une autre version des DLL. – JBRWilkinson

+0

Ok. J'ai ajouté le fichier vcredist_x86.exe au projet d'installation et de déploiement.Est-ce que vous voulez dire par "Ajouter le redistribuable Visual C++ à votre projet de déploiement"? J'ai ensuite demandé à l'utilisateur sur une machine cible d'exécuter le nouveau fichier setup.exe (avec le nouveau fichier * .msi) et le message d'erreur apparaît toujours. Un aperçu? – Julien

1

J'ai eu un problème similaire après les mises à jour de sécurité ATL l'année dernière. Mon application avait besoin d'une version plus récente des bibliothèques d'exécution C++ que le projet de déploiement inclus. Essayez d'exécuter Windows Update sur les machines cibles après l'installation ou téléchargez et installez directement le dernier package redistribuable C++ (28 juillet 2009).

http://support.microsoft.com/?kbid=973551

qui a résolu le problème pour moi. Je n'ai pas encore résolu le projet de déploiement.

Questions connexes