Bereitstellen Windows Forms Anwendungen mit ClickOnce

 

Mauro Sant'Anna
Microsoft Regional Director

Dezember 2004

Zusammenfassung: Untersucht die ClickOnce-Technologie, vergleicht sie mit anderen Bereitstellungstechnologien und zeigt, wie Sie sie in Ihren Anwendungen verwenden können. (11 gedruckte Seiten)

Einführung

ClickOnce ist eine neue Windows Forms-Bereitstellungstechnologie, die mit Visual Studio 2005 ausgeliefert wird. Es ermöglicht die einfache Anwendungsinstallation und das Upgrade von Webanwendungen mit smarten Clients. Die Bereitstellung von Windows Forms Anwendungen über HTTP ist seit der ersten Version des .NET Framework verfügbar und hat sich seitdem weiterentwickelt. In diesem Artikel werden die Vorteile Windows Forms Anwendungen und die Weiterentwicklung dieser Technologie erläutert, die zu ClickOnce führt. Ich zeige auch ein einfaches Beispiel mit der öffentlichen Beta 1-Version von Visual Studio 2005.

Warum Windows Forms?

Seit dem Erscheinen des World Wide Web interessieren sich die meisten Benutzer und Entwickler mehr für Webanwendungen als für "normale" Windows-Anwendungen. Neben dem "Coolness-Faktor" hat eine Webanwendung einige interessante und besondere Eigenschaften:

  • Auf eine Webanwendung kann überall auf der Welt zugegriffen werden, wo eine Internetverbindung verfügbar ist; der Client muss nicht einmal Windows ausführen. Eine "reine Webanwendung" ist eine sehr gute Technologie, wenn Ihre Anwendung allgegenwärtigen Zugriff benötigt.
  • Eine Webanwendung ist einfach bereitzustellen und zu aktualisieren: Kopieren Sie einfach die Anwendungsdateien in ein Verzeichnis auf einem Webserver, und alle Ihre Clients können sofort mit der Verwendung der neuen Anwendung beginnen. Keine DLL-Hölle, keine Registrierungseinträge zum Verhedeln, keine COM-Klassen zum Registrieren; es funktioniert einfach!

Der Schwerpunkt dieses Artikels liegt auf der zweiten Aufzählungszeichen oben: Bereitstellung. Das von Webanwendungen verwendete HTTP-Protokoll hat gegenüber der herkömmlichen Windows-Anwendungsbereitstellung mehrere Vorteile.

Auf der anderen Seite, so sehr ich das Web liebe, ist es schwer zu sagen, dass die Benutzererfahrung im Web hervorragend ist. Im Vergleich zu Windows-Anwendungen hat das Web mehrere Nachteile:

  • Die Benutzeroberfläche ist ziemlich schlecht. Dinge, die wir in einer Windows-Anwendung als selbstverständlich ansehen, z. B. Ziehen und Ablegen und Klicken mit der rechten Maustaste, sind in einer Webanwendung sehr schwierig oder sogar unmöglich.
  • Selbst wenn wir es schaffen, umfassende Schnittstellentricks zu machen, erfordert dies in der Regel eine wahnsinnige Menge an Clientskripts, eine Art von Code, der besonders schwer zu schreiben und zu debuggen ist.
  • Eine Webanwendung benötigt viele Serverressourcen, Bandbreite und Benutzer geduld, da die meisten Dinge auf dem Server mit einer Hin- und Rückfahrt und einigem Warten erledigt werden müssen.
  • Das Drucken ist auf die "Druckbildschirmtechnologie" beschränkt, mit wenig Kontrolle über Dinge wie Seitenumbrüche aufgrund unterschiedlicher Schriftarten, Ränder und Papierformat.
  • Einige der oben genannten Probleme können durch die Verwendung von Plug-Ins oder ActiveX-Steuerelementen gemildert werden, aber diese wiederum haben in der Regel dieselben Bereitstellungsprobleme wie die alten Nicht-Webanwendungen.

Was wäre, wenn wir die einfache Verteilung von Webanwendungen mit der umfangreichen Clienterfahrung von Windows-Anwendungen verheiraten könnten? Nun, wir können. Das .NET Framework seit seiner ersten Version ermöglicht die Verteilung von Windows Forms Anwendungen über HTTP und ohne die üblichen Probleme.

Diese Art von Anwendung ist besonders in Intranet-/Extranetszenarien interessant, in denen kein allgegenwärtiger Zugriff erforderlich ist und wir annehmen können, dass auf dem Computer des Endbenutzers sowohl internet-Explorer als auch .NET Framework installiert sein werden.

.NET Framework 1.x: HREFing . Exes

Die Versionen 1.0 und 1.1 der .NET Framework wurden "out of the box" mit der Möglichkeit bereitgestellt, Windows Forms Anwendungen über HTTP bereitzustellen. Sie verwenden grundsätzlich ein "HREF"-Tag, um auf eine verwaltete .EXE zu verweisen. Internet Explorer und die .NET Framework Runtime können bei Bedarf nicht nur die ausführbare Datei, sondern auch die benötigten DLLs herunterladen und ausführen. Diese Art der Bereitstellung hat den Spitznamen "hrefing EXEs" erhalten.

Dies ist ein Beispiel für ein solches Tag:

<a href="MainProject.exe">Call MainProject</a>

Dies ist recht einfach und wurde in den folgenden empfohlenen Artikeln erläutert:

Da die .NET-Assembly (.EXE oder .DLL) die grundlegende Bereitstellungseinheit ist, möchten Sie Ihre Anwendung in eine Standard .EXE und mehrere DLLs unterteilen. Auf diese Weise muss nur diese DLL heruntergeladen werden, wenn Sie einfache Änderungen in einer einzelnen DLL vornehmen.

So einfach es sich anhört, es gibt noch einige Tricks, um die Dinge richtig zu funktionieren:

  • The.NET Framework muss zuvor auf dem Client installiert worden sein (sie können jedoch ein Plug-In aus https://msdn.microsoft.com/vstudio/downloads/tools/bootstrapper/ herunterladen, das die Installation des Frameworks und Ihrer Anwendung erleichtern kann).
  • Ihre Anwendung wird auf dem Client als teilweise vertrauenswürdiger Code ausgeführt. Dies ist zum einen gut, da Ihre Anwendung in einer Sandbox ausgeführt wird und Einschränkungen hinsichtlich ihrer Möglichkeiten für den Clientcomputer aufweist. Auf der anderen Seite, wenn Sie Funktionen wie das Öffnen lokaler Dateien oder das Aufrufen eines COM-Objekts benötigen, müssen Sie eine Sicherheitsrichtlinie im Client einrichten, keine triviale Sache.
  • Standardmäßig ist es sehr wahrscheinlich, dass Ihre ausführbare Datei versucht, mehrere DLLs mit Lokalisierungsressourcen zu laden. aufgrund einiger Probleme in der aktuellen Implementierung wird die Leistung leiden, insbesondere bei einer langsamen Internetverbindung.
  • Die Aktualisierungen erfolgen dateiweise; für instance gibt es keine Möglichkeit zu garantieren, dass alle Ihre 10 aktualisierten Dateien tatsächlich heruntergeladen werden. Ihr Client bleibt möglicherweise mit einer "halb aktualisierten" Anwendung hängen.
  • Ihre Anwendung ist nur offline verfügbar, wenn der Benutzer "Offline arbeiten" in Internet Explorer manuell eingerichtet hat. Die Anwendung selbst hat keine Kontrolle darüber.
  • Standardmäßig ist die .config-Datei, die dem Programm zugeordnet ist, nicht verfügbar (hier erfahren Sie , wie Dies geschieht).
  • Ihre Anwendung verfügt nicht über eine Verknüpfung im Desktop oder im Startmenü .

Updateranwendungsblock

Um einige der oben genannten Probleme zu beheben, hat Microsoft den Updater-Anwendungsblock (UAB) erstellt. Der Updaterblock ist eine Bibliothek, die Sie Ihrer Anwendung hinzufügen, um den Download der Anwendungselemente über HTTP zu verwalten.

Es hat einige Vorteile gegenüber der ursprünglichen Frameworkimplementierung:

  • Es wird als lokale Anwendung ausgeführt und ist jederzeit ohne Leistungseinbußen verfügbar.
  • Updates transaktionen erfolgen, d. h. alle Dateien einer neuen Version müssen erfolgreich heruntergeladen werden, bevor die neue Version verfügbar wird.
  • Alle Anwendungsdateien werden in einem Manifest aufgeführt.
  • Sie wird als voll vertrauenswürdige Anwendung ausgeführt. Sie müssen nicht mit der Clientsicherheitsrichtlinie herumfiechten.
  • Ihre Anwendung kann Über Tastenkombinationen im Startmenü verfügen.

Andererseits gibt es auch einige Nachteile:

  • Sie müssen Ihre Anwendung wesentlich ändern, um sie verwenden zu können.
  • Da bits zum Herunterladen der Anwendungselemente verwendet wird, wird es nicht unter Windows 98/ME ausgeführt. Windows 2000 oder höher ist erforderlich.
  • Es wird als voll vertrauenswürdige lokale Anwendung ausgeführt, sodass die Codezugriffssicherheit so gut wie ignoriert wird.
  • Es wird nicht von Microsoft unterstützt.

Weitere Informationen zum UAB finden Sie unter Jamie Cools .NET Application Updater-Komponente. Sie können auch die Heimat der UAB bei Gotdotnet besuchen. Die UAB wird nicht "offiziell" unterstützt, obwohl es ein Forum auf www.gotdotnet.com gibt. In jedem Fall enthält das UAB den vollständigen Quellcode, und Sie können ihn ändern, um einige seiner Einschränkungen zu beheben, z. B. die Anforderung von BITS und Windows 2000.

ClickOnce

Die UAB ist eindeutig eine Zwischenmaßnahme, während Microsoft eine endgültige Lösung entwickelt. Diese Lösung ist ClickOnce. Im Grunde hat ClickOnce alle Vorteile des UAB mit wenigen problemen und einige zusätzliche Funktionen. Meiner Meinung nach ist einer der Standard Vorteil von ClickOnce, dass die Codezugriffssicherheit wiederhergestellt wird.

Im Vergleich zu HREF EXEs hat eine ClickOnce-Anwendung die folgenden Vorteile:

  • Updates werden abgewickelt (d. a. werden entweder vollständig oder gar nicht ausgeführt).
  • Die Anwendung kann nicht nur offline arbeiten, sondern hat auch ein gewisses Maß an Kontrolle darüber. es gibt APIs, damit die Anwendung herausfinden kann, ob sie online oder offline ist; es kann auch seinen eigenen Aktualisierungsprozess steuern.
  • Es verfügt über eine gute Integration in Visual Studio .NET, einschließlich der Möglichkeit, die entsprechenden zusätzlichen Dateien und Tools zu generieren, die helfen, herauszufinden, welche Sicherheitsberechtigungen Ihre Anwendung zum Ausführen benötigt.
  • Es enthält eine ausführbare Win32 -Datei "bootstraper", die die erforderlichen Komponenten herunterladen kann, sogar die .NET Framework selbst.
  • Anwendungsdateien können bei Bedarf oder in Batches heruntergeladen werden.
  • Es kann Startmenükurzbefehle haben.

ClickOnce ist ein Feature von Visual Studio 2005 mit dem früheren Codenamen "Whidbey" und dem .NET Framework 2.0. Lassen Sie uns ein Beispiel mit der "Community Preview Beta 1" (Frameworkversion 2.0.40607) untersuchen.

Eine ClickOnce-Anwendung

Führen Sie die folgenden Schritte aus, um eine einfache ClickOnce-Anwendung zu erstellen.

  1. Starten Sie Visual Studio 2005.

  2. Wählen Sie Datei aus, und klicken Sie dann auf Neues Projekt.

  3. Wählen Sie eine Sprache (C# oder Visual Basic .NET) aus, und wählen Sie Windows-Anwendung aus.

  4. Nennen Sie das Projekt, MyClickOnceApp und klicken Sie auf OK.

  5. Fügen Sie dem Formular eine Schaltfläche hinzu, und ändern Sie die Text-Eigenschaft in Info.

  6. Doppelklicken Sie auf die Schaltfläche. Geben Sie im Codefenster den folgenden Code ein.

    Visual Basic .NET:

         MsgBox("My First ClickOnce Application")
    

    C#:

         MessageBox.Show("My First ClickOnce Application");
    

Drücken Sie F5 , um die Anwendung auszuführen und zu testen.

Alle Windows-Anwendungen unter Visual Studio 2005 verfügen unter Project | MyClickOnceApp-Eigenschaften zum Steuern von Bereitstellungsdetails:

Abbildung 1. Konfigurieren der Einstellungen für die Veröffentlichung

Der Veröffentlichungsspeicherort gibt an, wo die Anwendung bereitgestellt wird. Es kann sich wie oben gezeigt um einen Webserverspeicherort (HTTP) handeln, aber auch um einen regulären Netzwerkpfad.

Der Installationsmodus und die Einstellungen steuert mehrere Bereitstellungsdetails, z. B.:

  • Gibt an, ob die Anwendung nur online oder offline verfügbar ist.

  • Anwendungsdateien: Hier werden einzelne Dateien installiert.

  • Voraussetzungen: Gibt an, ob das Setupprogramm andere Komponenten wie Windows Installer 2.0, .NET Framework 2.0, J# Redistributable Package, SQL Server 2005 Express, Crystal Reports und Microsoft Data Access Components 2.8 installieren muss.

    Abbildung 2. Konfigurieren der Voraussetzungen

  • Updates: Steuert, wann die Anwendung nach Updates suchen soll und wie diese Updates auf den Client gebracht werden.

    Abbildung 3. Konfigurieren von Updates

  • Optionen: Passt Details wie die Anwendungssprache, den Namen der Startmenüverknüpfungsressourcen, die für die Webbereitstellung verwendete HTML-Seite und das Bereitstellungsrichtlinienticket an.

    Abbildung 4. Konfigurieren von Veröffentlichungsoptionen

Die Version veröffentlichen passt die Versionsnummer der Anwendung an. Die Versionsnummer kann bei jeder Bereitstellung automatisch erhöht werden.

Mit dem Veröffentlichungs-Assistenten können Sie verschiedene Veröffentlichungsoptionen einrichten. Dieser Assistent wird auch über das Menü Build | Veröffentlichen. Alle ClickOnce-Anwendungen müssen kryptografisch signiert sein. Der Assistent fragt nach einem vorhandenen Schlüssel (empfohlen) oder er kann einen neuen Schlüssel generieren.

Abbildung 5. Signieren Ihrer Anwendung

Nachdem Sie den Assistenten einmal ausgeführt haben, können Sie auf Jetzt veröffentlichen klicken, um Updates zu veröffentlichen. In unserem Beispiel wird eine Webseite angezeigt.

Abbildung 6. Veröffentlichte Anwendung

Diese Webseite enthält ein Skript, das überprüft, welches zusätzliche Erforderliche Paket vor der Installation unserer Anwendung installiert werden muss. Wenn keine Voraussetzung vorhanden ist, wird sie bei der ersten Ausführung der Anwendung installiert.

Nachdem der Benutzer auf den Link Installieren geklickt hat, können mehrere Dialogfelder den Benutzer eingreifen, zumindest bei der ersten Ausführung:

  • Windows XP SP2-Warnungen
  • Vereinbarung zu Softwarelizenzen
  • Fehlende Überprüfung der Signatur des Herausgebers

Bereitstellungsdetails

Visual Studio .NET 2005 erstellt ein neues Web für unsere Anwendung mit mehreren Dateien und Ordnern.

Abbildung 7. Bereitstellungsordner

Der Ordner dotnetfx enthält die .NET Framework redistributable, derzeit eine ausführbare Datei mit 25 MB.

Standardmäßig erhöht Visual Studio die Versionsnummer jedes Mal, wenn Sie die Anwendung bereitstellen. Jede Version erhält einen neuen Ordner mit der entsprechenden steigenden Versionsnummer.

Die ANWENDUNGSDATEI ist das Ziel für den Link, der auf der HTML-Seite publish.htmangezeigt wird. Dabei handelt es sich um eine XML-Datei, die Informationen wie den Ordner enthält, der der aktuellen Version der Anwendung und digitalen Signaturen entspricht.

Publish.htm ist eine Webseite, die nicht nur den Link zur Anwendungsdatei enthält, sondern auch ein Clientskript, das eine Versionsüberprüfung durchführt und Meldungen entsprechend anzeigt. Wenn instance auf Ihrem Computer nicht über die .NET Framework verfügt, wird die Meldung unter Installieren von MyClickOnceApp anders angezeigt.

Setup.exe ist eine ausführbare Win32-Datei, die nicht nur Ihre Anwendung, sondern auch alle erforderlichen Komponenten wie die .NET Framework selbst und MDAC 2.8 in der richtigen Reihenfolge installieren kann.

Jeder Anwendungsordner enthält die Dateien der Anwendung und auch eine Manifestdatei. Das Manifest ist eine XML-Datei mit den folgenden Informationen:

  • Präzise Identität aller Dateien der Anwendung. Diese Identität umfasst den Dateinamen, die Versionsnummer, die Kultur und die Prozessorarchitektur ("msil" in unserem Fall).
  • Alle Berechtigungen, die die Anwendung benötigt.
  • Digitale Signaturen.

Ausführen der Anwendung

Nachdem die Anwendung heruntergeladen wurde, können Sie sie ausführen, ohne sie erneut herunterladen zu müssen. In unserem Beispiel kann die Anwendung gestartet werden, indem Sie im Startmenü auf den Link zur Webseite oder auf die Verknüpfung klicken. In beiden Fällen wird das Vorhandensein einer neuen Version gemäß den Einstellungen der Projektoptionen Anwendung Updates überprüft. Bei Bedarf wird eine neue Version heruntergeladen.

Gehen Sie wie folgt vor, um diese Updatefunktion zu überprüfen:

  1. Nehmen Sie eine sichtbare Änderung an der Anwendung vor, z. B. ändern Sie den Speicherort der Schaltfläche im Formular.
  2. Erstellen Sie sie erneut, und stellen Sie sie erneut bereit.
  3. Führen Sie die Anwendung aus, und überprüfen Sie den Downloadvorgang.

Als letzte Anmerkung ist es wichtig zu beachten, dass diese Informationen auf der Beta 1-Version von Visual Studio .NET basieren. neuere Versionen verfügen möglicherweise über unterschiedliche Features.

Vergleichsdiagramm

   HREF .EXE UAB ClickOnce
Keine Änderungen an der Anwendung erforderlich X   X
Anwendungsisolation X   X
Vollständig unterstützt X   X
Geringe Systembeeinträchtigung X   X
Codezugriffssicherheit beibehalten X   X
Bedarfsgesteuerter Dateidownload X   X
Manifeste zum deklarativen Auflisten der erforderlichen Dateien   X X
Kryptografisch signierte Manifeste     X
Batchdateidownload   X X
Offline arbeiten (*) X X
Transaktionsinstallationen   X X
Optimale Leistung   X X
Windows 2000 oder höher erforderlich   X (**)
Windows-Shellintegration   X X
Gute Kontrolle über den Updateprozess   X X
API zum Offline-Arbeiten und Steuern des Downloadprozesses     X
Automatische Installation optionaler Pakete     X

(*) Benutzereingriff erforderlich

(**) Zu früh, um für ein Beta-Produkt zu sagen

Zusammenfassung

ClickOnce ist eine sehr leistungsfähige Technologie für die Anwendungsbereitstellung. Dies ist eine natürliche Weiterentwicklung der zuvor verfügbaren Bereitstellungsmodelle, die Robustheit, Sicherheit, Leistung und Flexibilität mit der umfassenden Clienterfahrung Windows Forms-Anwendungen vereint.

 

Über den Autor

Mauro Sant'Anna (mas_mauro@hotmail.com) ist ein Microsoft Regional Director, MCSD, MCSE, Entwickler und Trainer. Seit seinem öffentlichen Auftritt auf der PDC 2000 in Orlando ist er ein Gläubiger der ersten Stunde in.NET.