Question

Je me développe dans un environnement extrêmement contraint, mais les développeurs exercent également un contrôle étroit sur eux.

VCRedist_x86.exe - Un fichier redistribuable à 4 Mo - n’est pas amusant (quatre heures à transférer). Je préférerais vraiment simplement redistribuer MFC90.dll, msvcm90.dll, msvcp90.dll et msvcr90.dll - c'est plutôt 2 Mo. Cependant, la redistribution des fichiers Visual C ++ indique:

  

La redistribution des applications C / C ++ construites sans manifeste n'est pas prise en charge. Les bibliothèques Visual C ++ ne peuvent pas être utilisées par les applications C / C ++ sans un manifeste liant l'application à ces bibliothèques. Pour plus d'informations, voir Choix d'une méthode de déploiement .

Mon plan original de copie des DLL dans le répertoire de travail du programme ne semble pas travaillez dans ce nouveau monde de manifestes.

Mon hypothèse suivante est de bichonner les entrées de registre nécessaires pour remplir les fichiers dans le répertoire WinSxS et le remplir moi-même (plutôt que d'utiliser le programme 4 meg).

[edit] Le logiciel étant fréquemment mis à jour, les DLL sont fortement préférées aux liens statiques. [/ edit]

Comment puis-je distribuer avec succès les fichiers nécessaires tout en minimisant les frais généraux?

Était-ce utile?

La solution

Nous utilisons ceci: Procédure: déployer des applications VC2008 sans installer vcredist_x86.exe

Essentiellement

  • N'intégrez pas de manifeste dans vos fichiers exe.
  • Copiez les DLL C ++ et leurs manifestes dans le répertoire de votre application.
  • Supprimer le " publicKeyToken " de tous les manifestes (les vôtres et ceux de Microsoft).
  • Si nécessaire, modifiez les informations de version dans les fichiers de manifeste de votre application pour les faire correspondre aux fichiers de manifeste Microsoft (ou inversement)

Autres conseils

[Je suis le responsable SxS actuel chez Microsoft]

Je suggérerais fortement contre de supprimer l'attribut publicKeyToken des manifestes. Le déploiement privé des dll fonctionnera parfaitement avec cet attribut laissé intact. Cependant, sa suppression empêchera votre application de bénéficier des mises à jour de sécurité si une version plus récente du tube cathodique était installée de manière centralisée sur la machine cible, car les dépendances ne correspondraient plus.

En résumé, vous pouvez intégrer votre manifeste avec la valeur par défaut. Copiez les fichiers manifeste + DLL CRT directement dans le répertoire de votre exécutable, sans les modifier. C'est tout. Compatible Win2k +.

Spécifiez / MT (multithread) pour la " bibliothèque d'exécution ". paramètre dans la page de propriétés du compilateur. Cela lie statiquement à la bibliothèque d'exécution, de sorte que vous n'avez pas à installer le redistribuable.

Installez-les en tant qu'assemblages privés. Voir ici:

http://msdn.microsoft.com/en-us/library /ms235291.aspx

Notez que si vous n'avez pas besoin de toutes les DLL fournies, vous pouvez modifier les fichiers du manifeste pour ne faire référence qu'à ceux dont vous avez besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top