Bonjour,
J'ai fait quelques recherches sur le forum et trouvé certains threads qui traitent de problèmes de manifestes (embarqués ou non) et deux reportant l'erreur qui s'oppose à moi : side-by-side configuration error
Je commence tout juste à cerner le problème et ne serait pas contre un peu d'aide pour qui aura le courage de lire ce qui suit.
Description du problème
Nous avons une application dont le core est en C++ compilé sous VS2005 SP1. L'ensemble de l'application et de de l'installeur livrés à nos clients sont compilés sur un serveur dédié sous un WinXP SP3 32bits.
Il y a 3 mois les mise à jours windows semi-auto de nos stations de développement ont été désactivées et verrouillées par l'admin sys.
Mais pas celles de notre serveur de compilation, où elles sont restées en semi-auto.Nous avons installé les mises à jour windows du serveur de compilation il y a une semaine.
Depuis l'application compilée par ce serveur, semble poser des problèmes de linkage sur les librairies MSVC. Librairies qu'on pense déployer comme des private assemblies :
- Deploying Visual C++ library DLLs as private assemblies : http://msdn.microsoft.com/en-us/libr...91(VS.80).aspx
Lorsqu'on exécute l'application déployée sur certains postes on obtient une erreur de type side-by-side configuration:
Sur cette erreur dependency walker montre que l'application a deux liens vers la MSVCR80.dll :Error: The Side-by-Side configuration information for "c:\program files\myapplication\CLIENT_R.EXE" contains errors. Cette application n'a pas pu démarrer car la configuration de l'application est incorrecte. Réinstaller l'application pourrait résoudre ce problème (14001).
- c:\windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.3053_x-ww_b80fa8ca\MSVCR80.DLL
- c:\program files\myapplication\MSVCR80.DLL (version: 8.0.50727.762)
Contenu du manifeste que nous copions dans le dossier d'installation de l'application (Microsoft.VC80.CRT.manifest):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <noInheritable></noInheritable> <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> <file name="msvcr80.dll" hash="10f4cb2831f1e9288a73387a8734a8b604e5beaa" hashalg="SHA1"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>n9On8FItNsK/DmT8UQxu6jYDtWQ=</dsig:DigestValue></asmv2:hash></file> <file name="msvcp80.dll" hash="b2082dfd3009365c5b287448dcb3b4e2158a6d26" hashalg="SHA1"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>0KJ/VTwP4OUHx98HlIW2AdW1kuY=</dsig:DigestValue></asmv2:hash></file> <file name="msvcm80.dll" hash="542490d0fcf8615c46d0ca487033ccaeb3941f0b" hashalg="SHA1"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>YJuB+9Os2oxW4mY+2oC/r8lICZE=</dsig:DigestValue></asmv2:hash></file> </assembly>
Ainsi que les DLLs suivantes : msvcm80.dll, msvcp80.dll, msvcr80.dll
L'installeur que nous générons sur nos machines de développement semble toujours fonctionner correctement, partout où il a été testé. Dans ce cas dependency walker montre que l'application a un seul lien sur la MSVCR80.dll (celle du sous dossier de C:\WINDOWS\WinSxS).
Analyse des origines du problèmes
La configuration de tous les projets VS2005 ont l'option Embedded Manifest activée.
Il est plus que probable que notre stratégie de déploiement des librairies Visual C++ est erronée et que les mises à jour windows ont mis évidence le problème sur la configuration MasterRelease de notre solution VS2005.
Solutions envisagées
- Désinstaller KB971090 installé sur le VS2005 SP1 du serveur de compilation il y a une semaine n'a fait que produire aussi le problème sur la configuration Release de la solution VS2005. Mauvaise solution
- Chercher à comprendre mieux les dépendences de notre application vers les librairies du runtime Visual C++.
- Réinstaller notre agent de compilation Bamboo sur une machine vierge, ainsi que tout l'environnement de développement.
Votre avis m'intéresse beaucoup, quel qu'il soit. Merci de votre attention.
Partager