Frage

Ich bin in einer Umgebung entwickeln, die stark eingeschränkt ist, aber die Entwickler auch eine strenge Kontrolle über haben.

VCRedist_x86.exe - A 4 Mb verteilbar - ist kein Spaß (4 Stunden zu übertragen). Ich würde wirklich lieber nur MFC90.dll, msvcm90.dll, msvcp90.dll und msvcr90.dll verteilen - das ist mehr wie 2 MB. Allerdings Umverteilen von Visual C ++ Dateien sagt:

  

Es wird nicht unterstützt, C / C ++ Anwendungen zu verteilen, die ohne offensichtlichen gebaut werden. Visual C ++ Bibliotheken können nicht ohne manifeste von C / C ++ Anwendungen verwendet werden, die Bindung der Anwendung dieser Bibliotheken. Weitere Informationen finden Sie unter Auswählen einer Bereitstellungsmethode .

Mein ursprünglicher Plan des Kopierens des DLLs in das Arbeitsverzeichnis des Programms scheint nicht zu arbeiten in dieser schönen neuen Welt der Manifeste.

Meine nächste Vermutung ist, die Registry-Einträge erforderlich, um bodge bis die Dateien in das Verzeichnis WinSxS bevölkert und es selbst zu füllen (und nicht das 4 meg-Programm).

[Bearbeiten] Die Software wird häufig aktualisiert, so DLLs stark auf statische Linken bevorzugt. [/ Edit]

Wie kann ich erfolgreich die notwendigen Dateien verteilen, aber den Aufwand niedrig halten?

War es hilfreich?

Lösung

Wir verwenden diese: Howto: VC2008-Anwendungen bereitstellen, ohne die Installation vcredist_x86.exe

Im Wesentlichen

  • Sie ein Manifest in Ihren EXE-Dateien nicht einbetten.
  • Kopieren Sie die C ++ DLLs und ihre Manifeste Verzeichnis Ihrer App.
  • Nehmen Sie die „PublicKeyToken“ aus allen Manifesten (Ihre und Microsoft).
  • in Ihrem App Manifest-Dateien
  • Falls nötig, die Versionsinformationen ändern, um die Microsoft Manifest-Dateien (oder umgekehrt)
  • Übereinstimmen

Andere Tipps

[Ich bin der aktuelle SxS-Betreuer bei Microsoft]

würde ich dringend empfehlen vor von Manifesten das PublicKeyToken Attribut zu entfernen. Privater Einsatz des dlls wird gut funktionieren mit diesem Attribute intakt gelassen. Es soll jedoch Ihre Anwendung von profitieren von Sicherheitsupdates wird verhindert, dass das Entfernen eine neuere Version der CRT zentral auf dem Zielcomputer installiert sein, da die Abhängigkeiten werden nicht mehr zusammenpassen.

Also, zusammenfassen: es ist sicher Manifest, mit der Standard-einzubetten. Kopieren Sie die CRT-Manifest + DLL-Dateien direkt in die ausführbare Datei des Verzeichnisses, ohne Änderungen. Das ist es. Kompatibel Win2k +.

Geben Sie / MT (Multithreaded) für die "Laufzeitbibliothek" in der Compiler-Eigenschaftenseite einstellen. Dies verbindet statisch gegen die Laufzeitbibliothek, so dass Sie die verteilbare nicht installieren.

Installieren sie als private Assemblys. Siehe hier:

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

Beachten Sie, wenn Sie nicht brauchen alle DLLs zur Verfügung gestellt, um die Manifest-Dateien nur ändern können, um die, die Sie verweisen müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top