L'astuce ci-dessous fonctionne avec VCRedist, et bien d'autres “pré-requis” à divers programmes. On vous indique que le programme a besoin de VCRedist 5 (notez que le programme n'aura que faire d'un VCRedist 6), et vous, vous voulez juste pour lancer le programme une fois, sur un poste ou un serveur, et éviter d'installer X programmes sans intérêts.
J'ai eu besoin de ce procédé pour un petit programme “ovftool” de VMWare. Le programme s'installe en dézippant ovftools.zip, mais il faut avoir installé VCRedist, sans quoi au lancement de ovftool.exe vous êtes gratifiés du message limpide “le programme ne peut pas démarrer”, un seul bouton : OK, aucune autre info disponible.
La solution :
A) Identifier ce cherche le programme : - on lance le programme, oh la jolie erreur. - on va dans l'event viewer (Ctrl+R / eventvwr / OK) - dans le log “système”, des erreurs “SideBySide” s'affichent. - le plus récent (le premier de la liste, par défaut) indique que le programme a planté, la belle affaire - le second est plus instructif : “Resolve Partial Assembly failed for XXXX. Reference error message: The referenced assembly is not installed on your system.”
B) Trouver un autre pc ou un autre serveur de la même “espèce” que le poste où vous voulez que ça tourne, et sur lequel ça marche (si c'est XP, un autre XP; si c'est un XP64, un autre XP64, si c'est Windows 2003 un autre 2003, etc). Je ne suis cependant pas certain que cela puisse poser problème…
C) Créer dans le répertoire qui contient l'exe qui plante, le sous-répertoire lib.
D) Récupérer la bonne “library”. Pour cela, aller voir le VCRedist.exe qu'on vous demande d'installer, dans les propriétés du fichier, onglet Version, récupérer le “file version”. Sur le poste/serveur sur lequel cela fonctionne, aller dans C:\WINDOWS\WinSxS (SideBySide). Copier dans le sous-répertoire lib : - depuis le répertoire WinSxS/manifest les fichiers manifest et cat qui conviennent; Ils devraient ressembler à quelquechose comme x86_XXXX_FileVersion….manifest (et .cat). - depuis le répertoire WinSxS/x86_XXXX_FileVersion; tous les fichiers.
E) Renommer les fichiers manifest et cat en ce qui est recherché par l'exe : XXXX.manifest et XXXX.cat (par exemple pour ovftool.exe, c'était Microsoft.VC80.CRT.manifest et Microsoft.VC80.CRT.cat)
F) Relancer le programme, s'il marche OK, sinon refaire un tour dans l'eventvwr pour voir s'il ne cherche pas encore autre chose.