Freigeben über


Auswählen einer Bereitstellungsmethode

In den meisten Fällen erfolgt die Bereitstellung von Visual C++-Anwendungen mithilfe der Windows Installer-Bereitstellung. Weitere Informationen über in Visual Studio unterstützte Bereitstellungsmethoden und Alternativen finden Sie unter Auswählen einer Bereitstellungsstrategie und Bereitstellung alternativen. Die ClickOnce-Bereitstellung von systemeigenen Visual C++-Anwendungen wird in Visual Studio 2010 nicht unterstützt. Es ist jedoch möglich, Visual C++-Anwendungen über die Befehlszeile mit ClickOnce bereitzustellen. Weitere Informationen finden Sie unter ClickOnce-Bereitstellung für Visual C++-Anwendungen.

Visual C++-Bibliotheken sind gemeinsam genutzte DLLs

Visual Studio 2010 installiert Visual C++-Bibliotheken als gemeinsam genutzte DLLs im Verzeichnis "%WINDIR%\system32". Damit die Visual C++-Anwendung auf einem Computer ausgeführt werden kann, auf dem Visual C++ nicht installiert ist, müssen Sie die Visual C++-DLLs ggf. mit der Anwendung verteilen und sicherstellen, dass diese auf dem Zielcomputer installiert sind.

Verteilen von Visual C++-Bibliotheken

Es gibt drei Möglichkeiten, Visual C++-DLLs zu verteilen:

  • Es empfiehlt sich, alle Visual C++-Bibliotheken mithilfe von Visual C++ Redistributable Package (VCRedist_x86.exe, VCRedist_x64.exe, VCRedist_ia64.exe) als gemeinsam genutzte DLLs in "%WINDIR%\system32" zu installieren. Visual Studio installiert dieses Paket im Ordner "%WindowsSdkDir%\Bootstrapper\Packages". Sie können das Paket auch im Microsoft Download Center herunterladen. Ein Beispiel zur Verwendung dieses Pakets finden Sie unter Exemplarische Vorgehensweise: Bereitstellen einer Visual C++-Anwendung mithilfe von Visual C++ Redistributable Package.

  • Verwenden Sie Visual C++ Redistributable-Mergemodule zur Installation bestimmter Visual C++-Bibliotheken als gemeinsam genutzte DLLs in %WINDIR%\system32. Der Zugriff auf diesen Ordner erfordert, dass die Installer-Anwendung von einem Benutzer ausgeführt wird, der über Administratorrechte verfügt. Weitere Informationen finden Sie unter Verteilen mit Mergemodulen. Ein Beispiel für diese Bereitstellung finden Sie unter Exemplarische Vorgehensweise: Bereitstellen einer Visual C++-Anwendung mithilfe eines Setup-Projekts.

  • Installieren Sie eine bestimmte Visual C++-DLL im Anwendungsordner, indem Sie Dateien aus dem Verzeichnis "Programme\Microsoft Visual Studio 10.0\VC\Redist" verwenden. Diese Methode wird empfohlen, um Benutzern ohne Administratorrechte die Installation von Anwendungen zu ermöglichen oder um eine Anwendung über eine Freigabe auszuführen.

Beim Installieren der Visual C++-Bibliotheken mit verteilbaren Mergemodulen werden die DLLs als gemeinsam genutzte DLLs unter %WINDIR%\system32 bereitgestellt. Der Zugriff auf diesen Ordner erfordert, dass die Installer-Anwendung von einem Benutzer ausgeführt wird, der über Administratorrechte verfügt.

Wenn eine Anwendung von einem Benutzer ohne Administratorrechte ausgeführt wird, kann die Anwendung die Visual C++-DLLs nicht bereitstellen und daher nicht ausgeführt werden. Für einige Produkte ist zwar eine Einzelinstallation für jeden Benutzer möglich. Die Mergemodule installieren jedoch die Bibliotheken in freigegebenen Speicherorten und haben daher Auswirkungen für alle Benutzer des Systems. In diesen bzw. ähnlichen Szenarien werden die erforderlichen DLLs im Verzeichnis der Anwendung eines bestimmten Benutzers installiert.

Bei dieser Vorgehensweise genügt es, DLLs in den lokalen Ordner der Anwendung zu kopieren. Das Ladeprogramm des Betriebssystems verwendet bei Ausführung der Anwendung die Suchreihenfolge, die in LoadLibraryEx beschrieben wird.

Die falsche Verteilung von Visual C++-Bibliotheken kann zu Laufzeitfehlern während der Ausführung einer Anwendung führen, die diese Bibliotheken benötigt.

Dynamische statt statische Verknüpfungen

Es wird nicht empfohlen, C/C++-Anwendungen mit einer statischen Verknüpfung zu Visual C++-Bibliotheken zu verteilen. Oft wird fälschlicherweise angenommen, dass eine statische Verknüpfung mit Visual C++-Bibliotheken in einem Programm die Anwendungsleistung wesentlich verbessert. Das dynamische Laden von Visual C++-Bibliotheken wirkt sich jedoch in nahezu allen Fällen kaum auf die Leistung aus. Außerdem lassen sich Anwendungen und die abhängigen Bibliotheken nicht vom Anwendungsentwickler oder von Microsoft warten, wenn sie über statische Verknüpfungen verfügen. Gehen wir z. B. von einer Anwendung aus, die statisch mit einer bestimmten Bibliothek verknüpft ist und auf einem Clientcomputer mit einer neuen Version dieser Bibliothek ausgeführt wird. In der Anwendung wird noch Code aus der Vorgängerversion dieser Bibliothek verwendet, und Verbesserungen z. B. der Sicherheit können nicht genutzt werden. Entwicklern von C/C++-Anwendungen wird dringend empfohlen, das Wartungsszenario zu durchdenken, bevor eine Entscheidung für die statische Verknüpfung der abhängigen Bibliotheken getroffen wird. Wann immer die Möglichkeit besteht, sollten dynamische Verknüpfungen verwendet werden.

Siehe auch

Konzepte

Auswählen einer Bereitstellungsstrategie

ClickOnce-Sicherheit und Bereitstellung

Bereitstellungsbeispiele

Weitere Ressourcen

Bereitstellung (Visual C++)

Windows Installer Deployment Overview