Bestimmen, wann Windows Installer im Vergleich zu XCOPY verwendet werden soll
Martin Wasznicky
Microsoft Corporation
Januar 2002
Zusammenfassung: Untersucht und vergleicht zwei Ansätze für die Bereitstellung von Microsoft .NET-Anwendungen: den BEFEHL DOS XCOPY und die Microsoft Windows Installer-Technologie. (8 gedruckte Seiten)
Ziele
- Erfahren Sie, wann und wie Sie XCOPY für die Bereitstellung von Microsoft® .NET-Lösungen verwenden.
- Erfahren Sie, wann Sie Microsoft® Windows ® Installer für die Bereitstellung von .NET-Lösungen verwenden.
Annahmen
Das folgende Sollte für Sie wahr sein, um das Beste aus diesem Dokument herauszuholen:
- Sie sind ein erfahrener Microsoft® Visual Basic ® Programmierer
- Sie haben Anwendungen mit Microsoft® Visual Studio ® Installer oder Microsoft Windows Installer 2.0 bereitgestellt.
- Sie haben den Befehl XCOPY DOS verwendet
- Sie haben Zugriff auf .NET und Microsoft® Internet Information Server (IIS)
Contents
Einführung
Verwenden von XCOPY
Windows Installer
Neuigkeiten in Visual Studio .NET?
Zusammenfassung
Einführung
Microsoft .NET Framework bietet mehrere neue Features, die die Anwendungsbereitstellung so einfach wie ein XCOPY-Vorgang machen. Viele Entwickler sind mit den Problemen der Bereitstellung herkömmlicher COM-Anwendungen vertraut; Registrieren von Klassen und Typbibliotheken, Verwalten der binären Kompatibilität und fehlender paralleler Komponentenbereitstellung (all dies wird manchmal als "DLL HELL" bezeichnet). Regedt32.exe ist ein vertrautes Tool im Komponentenbereitstellungsarsenal des Entwicklers aufgrund der Abhängigkeiten, die COM mit der Registrierung hat.
Mit der Einführung von Assemblys und Versionsverwaltungen in die .NET Framework wird schließlich die bilische Kabel an die Registrierung ausgeschnitten. Da Assemblys selbst beschreiben (sie enthalten Metadaten, die unter anderem die Typen, Ressourcen und referenzierten Assemblys beschreiben), wird ihre Abhängigkeit von der Registrierung entfernt, wodurch die Zusage von XCOPY-Bereitstellungen realitätsfrei ist.
Die attraktive XCOPY-Bereitstellung klingt jedoch wie jede Technologie, es hat seine Einschränkungen. Abhängig von den Komplexitäts- und Automatisierungsanforderungen eines bestimmten Bereitstellungsszenarios kann XCOPY möglicherweise nicht den Bereitstellungsanforderungen einer Anwendung entsprechen. In diesen Fällen wird die .NET Framework in die Microsoft Windows Installer 2.0-Technologie integriert, um alternative Setup-, Verteilungs- und Bereitstellungsoptionen für den Entwickler bereitzustellen. Darüber hinaus bietet Visual Studio .NET Setup- und Bereitstellungsprojekte, die auf der Windows Installer 2.0-Technologie basieren. Auf diese Weise können Entwickler Setup- und Bereitstellungspakete für die komplexeren Anwendungen erstellen, die auf dem .NET Framework basieren.
In diesem Dokument sind zwei hauptthemen behandelt:
- Verwenden von XCOPY: Eine Übersicht über den DOS XCOPY-Befehl, der als Instrument für die Bereitstellung von .NET-Anwendungen verwendet wird. XCOPY verwendet und einschränkungen werden erläutert, einschließlich beibehaltener Sicherheits-ACL-Informationen, Datei- und Ordnerattribute, Ordnersystemgenerierung und Freigabeverletzungen.
- Windows Installer: Eine Übersicht über die Windows Installer-Technologie und die Untersuchung der Funktionen, die von .NET verfügbar gemacht werden. Die Angemessenheit der Verwendung Windows Installer-Technologie im Vergleich zu XCOPY wird ebenfalls untersucht.
Verwenden von XCOPY
Die Bereitstellung von Anwendungen besteht in der Regel aus der Verteilung der endgültigen Anwendung oder Komponente an Computer, auf denen die Anwendung ausgeführt wird. Aufgrund der selbst beschreibenden Art von .NET-Assemblys, Bereitstellung und Replikation von . NET-integrierte Anwendungen mit XCOPY sind eine Realität geworden, da es in vielen Fällen nicht mehr erforderlich ist, die Registrierung zu ändern oder andere Nebenaufgaben auszuführen, z. B. das Beenden eines Microsoft® Windows ® NT-Diensts. Die Einfachheit von Assemblys macht XCOPY zu einem geeigneten Tool für bestimmte Bereitstellungsszenarien.
Einige Anwendungen, die sich sehr einfach für die XCOPY-Bereitstellung und -Replikation eignen, sind XML-Webdienste und ASP.NET Webanwendungen. Zuvor wurden diese Arten von Anwendungen mithilfe von Internetinformationsdienste (IIS) und herkömmlichen COM-Komponenten erstellt. Die Installation der Komponenten für diese Anwendungen umfasst in der Regel das Registrieren der Komponente während des Bereitstellungsprozesses mithilfe des Regsvr32.exe Dienstprogramms. Das Aktualisieren vorhandener Komponenten war viel schwieriger, da IIS eine exklusive Dateisperre auf die Komponenten platziert hat. Die einzige Möglichkeit zum Freigeben der Sperre war das Herunterfahren von IIS. Der Ersatz vorhandener Komponenten umfasst in der Regel die folgenden Schritte:
- Beenden Sie den IIS-Dienst.
- Aufheben der Registrierung alter Komponenten mithilfe des Dienstprogramms Regsvr32.exe.
- Kopieren Sie neue Komponente.
- Registrieren Sie neue Komponente mithilfe des dienstprogramms Regsvr32.exe.
- Starten Sie den IIS-Dienst.
Diese Schritte sind für XML-Webdienste und ASP.NET Webanwendungen nicht mehr erforderlich. IIS platziert keine exklusiven Dateisperren auf .NET-Assemblys, und da Assemblys selbst beschreiben, müssen sie nicht registriert werden. Dies macht ASP.NET webbasierte Anwendungen ideal für die XCOPY-Bereitstellung und -Verwaltung.
Als Beispiel gehen wir durch die Bereitstellung eines XML-Webdiensts auf einem Remotecomputer, der sich auf derselben Windows NT-Domäne befindet, durch. Für die Zwecke dieses Beispiels lautet der Clientcomputer, auf dem sich die Webanwendung derzeit befindet, den Namen CLIENT1, und der Remotecomputer, auf dem die Webanwendung bereitgestellt wird, heißt "SERVER1".
Hier sehen Sie die Verzeichnisstruktur der Webanwendung aus, die bereitgestellt werden soll.
.gif)
Abbildung 1. DAS MMC des Internetinformationsdiensts auf CLIENT1, das das virtuelle Verzeichnis der DemoWebSrv-ASP.NET-Webanwendung anzeigt, die auf SERVER1 bereitgestellt werden soll
Innerhalb des Unterverzeichnisses "/bin" gibt es eine Assembly namens DemoWebSrv.DLL. Der physische Speicherort der Verzeichnisstruktur auf CLIENT1 lautet C:\INETPUB\WWWROOT\DEMOWEBSRV. Der Pfad C:\INETPUB\WWWROOT auf CLIENT1 wird dem Namen der Netzwerkfreigabe von WWWROOT zugeordnet.
Beginnen wir mit dem Bereitstellungsszenario, indem Sie die folgenden Schritte ausführen:
Erstellen Sie eine Netzwerkfreigabe auf SERVER1 namens WWWROOT, und ordnen Sie sie dem unter dem InetPub-Verzeichnis befindlichen Unterverzeichnis zu. Dies ist der Standardspeicherort der IIS-Standardwebsite. Dieser Speicherort wird als Zielargument des XCOPY-Befehls verwendet.
Kopieren Sie die Ordnerstruktur und Dateien des DemoWebSrv-Websiteanwendungsverzeichnisses, das sich auf CLIENT1 in SERVER1 mit XCOPY befindet. Geben Sie an der DOS-Eingabeaufforderung den folgenden Befehl ein (das erste Argument des XCOPY-Befehls ist das Quellverzeichnis, aus dem kopiert werden soll; das zweite Argument ist das Zielverzeichnis, in das kopiert werden soll):
XCOPY \\CLIENT1\wwwroot\demowebsrv \\SERVER1\wwwroot\demowebsrv /E /K /R /O /H /IErstellen Sie ein virtuelles Verzeichnis namens DemoWebSrv unter der Standardwebsite auf SERVER1, und markieren Sie es als Anwendung. Ordnen Sie es dem neu erstellten C:\INETPUB\WWWROOT\DEMOWEBSRV-Verzeichnis zu.
Als Nächstes finden Sie die Erläuterung der Schalter, die am Ende des XCOPY-Befehls verwendet werden. Wenn Sie eine vollständigere Auflistung anzeigen möchten, geben Sie XCOPY /? an einer DOS-Eingabeaufforderung ein.
- / E kopiert Verzeichnisse, Unterverzeichnisse und Dateien des Quellarguments, einschließlich leerer Verzeichnisse.
- / K kopiert alle vorhandenen Datei- und Ordnerattribute.
- Wenn Sie XCOPY zum Kopieren von Dateien oder einer Verzeichnisstruktur verwenden, entfernt XCOPY standardmäßig Dateiattribute. Dies ist, wenn eine Datei den schreibgeschützten Attributsatz hatte, sobald sie kopiert wurde, dieses Attribut verloren geht. Um die ursprünglichen Attribute mit den kopierten Dateien beizubehalten (anzuwenden), verwenden Sie den /K-Parameter .
- / R überschreibt Dateien, die als schreibgeschützt gekennzeichnet sind.
- / O behält alle sicherheitsbezogenen Berechtigungs-ACLs der Datei und Ordner bei.
- / H kopiert ausgeblendete und Systemdateien.
- / Ich weist XCOPY an, davon auszugehen, dass es sich bei dem Ziel um ein Verzeichnis handelt und erstellt, wenn es noch nicht vorhanden ist. Da das Zielargument <\\SERVER1\wwwroot\demowebsrv> ein Verzeichnis ist, das nicht vorhanden ist, erstellt XCOPY es.
Das ist auch schon alles. XCOPY stellt den XML-Webdienst erfolgreich auf SERVER1 bereit. XCOPY eignet sich ideal für einfache Bereitstellungen wie diese und für on-the-fly-Updates. XCOPY ist auch nützlich für die Bereitstellung von Desktopanwendungen auf dem Client.
Wie bei jeder Technologie gibt es Einschränkungen, wie und wann Sie XCOPY zum Bereitstellen verwenden sollten. NET-integrierte Anwendungen. In der Regel ist XCOPY nur in Bereitstellungsszenarien nützlich, die einfach und manuell ausgeführt werden. Nachfolgend sind einige Fälle aufgeführt, in denen XCOPY nicht ausreichen würde; Dies würde eine robustere Bereitstellungsmethode erfordern.
- Automatisierte Bereitstellung von COM-Komponenten für .NET-Anwendungen zur Interoperation mit. Die Registrierung ist weiterhin erforderlich.
- Kompilieren einer Assembly auf systemeigenem Code auf dem Remotecomputer.
- Installieren von Assemblys in den globalen Assemblycache des Remotecomputers.
- Aktualisieren von Dateien, die ausschließlich gesperrt sind. Beispielsweise wird ein Windows NT-Dienst verwendet, um eine .NET Remoting-Lösung zu hosten.
- Installation. NET-integrierte Windows NT-Dienste.
- Automatisierte Konfiguration und Erstellung von IIS-Verzeichniseinstellungen, NTFS-Sicherheitseinstellungen, Netzwerkfreigaben und Active Directory-Benutzer- und Gruppenkonten.
- Automatische Erstellung von Desktopverknüpfungen, Hinzufügen/Entfernen von Programmen, Erstellung von Startmenüeinträgen usw.
Obwohl XCOPY gut für einfache Lösungen funktioniert, gibt es offensichtlich viele Fälle, in denen eine robustere Bereitstellungslösung garantiert wird. Diese Option wird von Visual Studio .NET Installer bereitgestellt, der auf der Windows Installer 2.0-Technologie basiert. Dies sehen wir uns als Nächstes an.
Windows Installer
Häufig sind Anwendungseinrichtungsanforderungen viel komplexer und können dann durch eine einfache XCOPY-Bereitstellungsstrategie behandelt werden. In vielen Fällen richtet sich die endgültige Bereitstellungslösung an Endbenutzer, die die erforderlichen Fähigkeiten zum manuellen Konfigurieren einer Anwendung fehlen. In anderen Fällen kann es so viele Konfigurationsanforderungen gibt (z. B. die Erstellung von Benutzern und Gruppen, die Konfiguration der Sicherheit, die Erstellung von Verzeichnisstrukturen usw.), dass ein automatisiertes Setupprogramm erforderlich wird, um genauigkeit und Konsistenz im installierten Verhalten der endgültigen Anwendung sicherzustellen. In beiden Fällen ist eine XCOPY-Bereitstellung in der Regel nicht ausreichend, um solche Anforderungen zu erfüllen.
Für robustere Anwendungs- und Bereitstellungsanforderungen kann Visual Studio .NET verwendet werden, um Setup- und Bereitstellungspakete zu erstellen. Visual Studio .NET-Bereitstellung basiert auf Windows Installer-Technologie. Windows Installer ist ein Softwareinstallations- und Konfigurationsdienst, der mit den Microsoft-Windows® ® 2000- und Windows XP-Betriebssystemen und frei an alle Win9x- und NT4-Plattformen verteilt wird. Windows Installer Service verwaltet einen Datensatz von Informationen zu jeder anwendung, die sie installiert. Die Windows Installer-Laufzeit (MSI) überprüft diese Datensätze während der Ausführung von Bereitstellungspaketen. Wenn eine Anwendung deinstalliert wird, werden die Datensätze überprüft, um sicherzustellen, dass keine anderen Anwendungen auf ihre Komponenten angewiesen sind, bevor sie entfernt werden. Windows Installer 2.0 wurde erweitert, um die folgenden Features bereitzustellen, um .NET-Assemblys zu unterstützen:
- Installation, Reparatur oder Entfernung von Assemblys im globalen Assemblycache.
- Installation, Reparatur oder Entfernung von Assemblys an benutzerdefinierten Standorten.
- Rollback von nicht erfolgreichen Installationen, Reparaturen oder Entfernungen von Assemblys.
- Install-on-Demand von Assemblys im globalen Assemblycache.
- Install-on-Demand von Assemblys an benutzerdefinierten Speicherorten.
Zusätzlich zu diesen Features ermöglicht Visual Studio .NET-Bereitstellungsprojekte alle Vorteile anderer Setupprogramme, z. B. Lesen und Schreiben von Registrierungsschlüsseln, Verzeichniserstellung, Registrierung von Komponenten, Sammeln von eingegebenen Daten während der Installation und so weiter. Weitere enthaltene Features sind:
- Die Möglichkeit, Startbedingungen festzulegen, z. B. überprüfen des aktuellen Benutzernamens, Computername, physische Umgebung, aktuelles Betriebssystem, Existenz von .NET CLR usw.
- Die Möglichkeit, ein benutzerdefiniertes Programm oder Skript auszuführen, nachdem die tatsächliche Installation abgeschlossen ist. Durch die Installation gesammelte Daten können an das Programm übergeben werden, und die gesamte Installation kann zurückgesetzt werden, wenn das Programm einen Fehler generiert. Das Programm kann sich in einem .dll, .exe, Skript oder in einer Assembly befinden.
Um eine Visual Studio .NET-Bereitstellung zu veranschaulichen, führen wir die Bereitstellung des XML-Webdiensts durch, der zuvor mithilfe von XCOPY bereitgestellt wurde.
Öffnen Sie zunächst ein vorhandenes XML-Webdienstprojekt namens DemoWebSrv mit Visual Studio .NET.
Klicken Sie im Menü "Datei" auf "Project hinzufügen", und klicken Sie dann auf "Neue Project". Dies sollte das Dialogfeld "Neue Project" aufrufen (siehe Abbildung 2).
.gif)
Abbildung 2. Das Dialogfeld Visual Studio .NET New Project zeigt die verfügbaren Bereitstellungsvorlagen an.
Klicken Sie unter Project Typen auf den Ordner "Setup" und "Bereitstellungsprojekte", und doppelklicken Sie dann auf die Vorlage "Web setup Project". Das Web Setup Project (WebSetup1) wird der vorhandenen Lösung hinzugefügt, und der Dateisystem-Editor wird geöffnet.
Klicken Sie im Dateisystem-Editor auf den Ordner "Webanwendung ".
Zeigen Sie im Menü "Aktion" auf "Hinzufügen", und klicken Sie dann auf Project Ausgabe.
Wählen Sie im Feld "Ausgabegruppe hinzufügen Project" (Abbildung 3) die Option DemoWebSrv aus der liste Project aus.
.gif)
Abbildung 3. Das Dialogfeld "Ausgabegruppe hinzufügen Project" wird verwendet, um bestimmte Dateien aus einem Projekt zu einem anderen hinzuzufügen.
Wählen Sie die Gruppen "Primäre Ausgabe" und "Inhaltsdateien" aus der Liste aus, und klicken Sie auf "OK". Dadurch werden die Inhaltsdateien und die kompilierten Assemblys und deren Abhängigkeiten zum kompilierten Windows Installer-Programm (.msi Datei) hinzugefügt.
Klicken Sie im Dateisystem-Editor auf den Ordner "Webanwendung ". Legen Sie im Fenster "Eigenschaften " die VirtualDirectory-Eigenschaft auf DemoWebSrv fest. Legen Sie die DefaultDocument-Eigenschaft auf "Customers.asmx" fest. Windows Installer verwendet die Informationen, um ein virtuelles Verzeichnis auf der Standardwebsite des Zielservers zu erstellen und die Standarddokumenteigenschaft festzulegen.
Klicken Sie im Menü "Erstellen " auf "WebSetup1 erstellen". Dadurch wird eine WebSetup1.msi Windows Installer-Setupdatei erstellt.
Kopieren Sie die WebSetup1.msi Datei auf den Zielservercomputer, und doppelklicken Sie auf die Datei, um das Installationsprogramm auszuführen. Um auf den gerade bereitgestellten Webdienst zuzugreifen, starten Sie Internet Explorer, und geben Sie die URL <http://< ComputerName>/DemoWebSrv> ein.
Was ist neu in Visual Studio .NET?
- Die Art von .NET-Assemblys macht XCOPY zu einer machbaren Bereitstellungsoption.
- Windows Installer-Technologie wurde erweitert, um die Bereitstellungsanforderungen der .NET Framework zu behandeln.
- Visual Studio .NET-Bereitstellungstools basieren auf der Windows Installer-Technologie.
- Visual Studio-Installer ist in Visual Studio .NET integriert. Installationsvorlagen werden als neue Projekte hinzugefügt und bieten größere Konfigurationsoptionen.
Zusammenfassung
Die selbst beschreibende Art von . NET-integrierte Assemblys machen es möglich, XCOPY zum Bereitstellen und Aktualisieren einfacher Anwendungen zu verwenden. XCOPY kann diese Bereitstellungsszenarien problemlos behandeln, die manuelle Installationen mit wenigen Abhängigkeiten und Konfigurationsoptionen erfordern. XML-Webdienste und ASP.NET Webanwendungen eignen sich besonders gut für diese Art der Bereitstellung, insbesondere während der Entwicklungsphase der Anwendung.
Visual Studio .NET bietet auch andere Bereitstellungstools basierend auf Windows Installer, die flexiblere und robustere Konfigurations- und Automatisierungsanforderungen ermöglichen. Mit Visual Studio .NET können Entwickler Windows Installer-Programme erstellen, um anspruchsvolle Installationsprogramme für die anspruchsvollesten Anwendungen zu erstellen.
Welche Bereitstellungsoption verwendet werden kann, wird letztlich durch den Umfang und die Tiefe der Konfigurationsanforderungen der Anwendung bestimmt.
Zum Autor
Marty Wasznicky ist ein Senior Systems Engineer mit Microsoft Corporation, der sich auf Enterprise Anwendungsintegration, Business to Business und E-Commerce konzentriert. Er verfügt über mehr als zehn Jahre Erfahrung bei der Architektur und Implementierung von Lösungen in der IT-Branche, sowohl in Unternehmens- als auch in Beratungskapazitäten. Er ist ein Microsoft Certified Solutions Developer, Microsoft Certified Systems Engineer, Microsoft Certified Database Administrator und Certified Novell Engineer. Er hat zahlreiche Artikel im Journal Visual Basic Programmer und der Access/VB/SQL Advisor-Magazins erstellt und arbeitet derzeit im Südlichen Kalifornien-Bezirk von Microsoft.
Informationen zur Informant Communications Group
Informant Communications Group, Inc. (www.informant.com) ist ein diversifiziertes Medienunternehmen, das sich auf den Informationstechnologiesektor konzentriert. Spezialisiert auf Softwareentwicklungsveröffentlichungen, Konferenzen, Katalogveröffentlichungen und Websites, ICG wurde 1990 gegründet. Mit Büros in den USA und dem Vereinigten Königreich hat ICG als angesehener Medien- und Marketinginhaltsintegrator fungiert, der den wachsenden Appetit von IT-Experten für hochwertige technische Informationen erfüllt.
Copyright © 2002 Informant Communications Group und Microsoft Corporation
Technische Bearbeitung: PDSA, Inc. und KNG Consulting