17.9 »ClickOnce«-Verteilung
17.9.1 Allgemeine Beschreibung
Eine gravierende Änderung wurde in Visual Studio 2012 gegenüber den Vorgängerversionen vollzogen: Während die alten Versionen immer den MS-Installer als Installationsprogramm integriert hatten, hat man seitens Microsoft davon nun Abstand genommen. Dieses Tool suchen Sie vergeblich, es wird auch nach Aussage von Microsoft nicht mehr weiterentwickelt. Viele werden diese Entscheidung begrüßen, denn der MS-Installer mutete doch ziemlich altbacken an und lief in seiner Bedienung und seinem Komfort der Zeit weit hinterher. Stattdessen hat man »InstallShield Limited Edition for Visual Studio« aufgenommen, das allerdings erst noch nachinstalliert werden muss.
Eine andere, hausinterne Verteilungsvariante ist aber weiterhin Bestandteil von Visual Studio: die ClickOnce-Verteilung. Was steckt hinter ClickOnce? Während eine herkömmliche Windows-Anwendung auf dem lokalen Rechner installiert wird, wird eine mit ClickOnce veröffentlichte Anwendung auf einem Server zur Verfügung gestellt. Dabei kann es sich um einen Webserver oder um eine Netzwerkdateifreigabe handeln. Zudem ist die Veröffentlichung auf einem CD-ROM-Datenträger möglich.
Wird eine Anwendung mit ClickOnce auf einem Webserver veröffentlicht, wird dem Benutzer innerhalb einer Webseite nur ein Link auf die Programmdatei zur Verfügung gestellt. Öffnet der Anwender den Link, werden die Programmdateien auf die lokale Maschine heruntergeladen und dort ausgeführt. Dabei werden die heruntergeladenen Dateien nicht etwa in einem Unterordner von Programme abgelegt, sondern in einem verschlüsselten Pfad im Benutzerprofil des aktuell angemeldeten Anwenders (Dokumente und Einstellungen\<Benutzer>\Lokale Einstellungen\Apps). Aus Sicherheitsgründen nimmt eine mit ClickOnce verteilte Anwendung weder Einträge in der Registrierungsdatenbank noch unter Desktop vor.
Ein besonderes Merkmal ist auch die Art und Weise der Aktualisierung. Bei der Bereitstellung mit der Installationsroutine muss der Benutzer bei jeder Aktualisierung die gesamte Anwendung neu installieren. Bei der ClickOnce-Bereitstellung werden Aktualisierungen der Anwendung automatisch zur Verfügung gestellt. Der Client ist dabei selbst in der Lage, festzustellen, ob eine neue Version vorliegt. Bei der Aktualisierung werden nur die Teile der Anwendung heruntergeladen, die geändert wurden. Anschließend wird die vollständige aktualisierte Anwendung von einem neuen parallelen Ordner aus neu installiert.
ClickOnce bietet die Möglichkeit, Anwendungen so einzurichten, dass der Benutzer sowohl online als auch offline mit der Anwendung arbeiten kann. Im Offline-Modus wird ein Programmpunkt im Startmenü angelegt, der die Anwendung startet. Diesen Eintrag gibt es nicht, wenn der Benutzer nur online mit der Anwendung arbeiten kann. Er kann die Anwendung nur starten, wenn er auf den erwähnten Link klickt.
Der Kern der neuen Architektur beruht auf zwei XML-Manifestdateien:
- dem Anwendungsmanifest
- dem Bereitstellungsmanifest
Das Anwendungsmanifest beschreibt die Anwendung einschließlich der Assemblys und der Dateien, aus denen die Anwendung besteht, sowie des Speicherorts, an dem Updates verfügbar sein werden. Das Bereitstellungsmanifest beschreibt, wie die Anwendung bereitgestellt wird, einschließlich des Speicherorts des Anwendungsmanifests sowie der Version der Anwendung, die auf den Clients ausgeführt wird. Beide Manifeste werden automatisch von Visual Studio 2012 erzeugt.
Das Ziel von ClickOnce ist, die Verteilung von Anwendungen zentral zu verwalten und zu vereinfachen. Aber es gibt auch Einschränkungen, die schon in der Planungsphase zu berücksichtigen sind. Während der Einrichtung einer ClickOnce-Anwendung sind keine Operationen erlaubt, die administrative Rechte voraussetzen. Dazu gehören der Zugriff auf das Dateisystem und der Zugriff auf die Registrierungsdatenbank. Genauso wenig können Assemblys in den Global Assembly Cache (GAC) eingetragen oder als Windows-Dienste eingerichtet werden.
17.9.2 Erstellen einer ClickOnce-Anwendung
So viel zur Theorie. Nun wollen wir uns das Ganze natürlich auch in der praktischen Entwicklung ansehen. Legen Sie ein neues Projekt an. Um ClickOnce zu verstehen, müssen Sie überhaupt keinen Code schreiben.
Alle Optionen, die ClickOnce anbietet, können Sie innerhalb eines Dialogs festlegen. Öffnen Sie dazu das Eigenschaftsfenster des Projekts, und aktivieren Sie die Lasche Veröffentlichen. In Abbildung 17.20 sehen Sie die Registerkarte. Alle Einstellungen, die Sie hier vornehmen, werden gespeichert und stehen beim Veröffentlichen auf dem Server zur Verfügung.
Entscheidend ist zunächst einmal der Ort, an dem die ClickOnce-Komponente abgelegt wird. Über die Schaltfläche rechts neben dem Eingabefeld gelangen Sie zu einem Dialog (siehe Abbildung 17.21), der Ihnen alle Möglichkeiten offenlässt.
Abbildung 17.20 Die »ClickOnce«-Optionen einer Anwendung
Abbildung 17.21 Dialog zum Einstellen des Orts der Veröffentlichung
Sie können einen der folgenden Orte angeben, an den die Anwendung kopiert werden soll:
- einen Dateipfad
- auf den lokalen Webserver (IIS)
- auf einen FTP-Server
- auf eine entfernte Website, die mit den FrontPage-Servererweiterungen konfiguriert ist
Als Installationsmodus können Sie online oder offline wählen (siehe Abbildung 17.20). Fällt die Wahl auf den Offline-Modus, werden für die Anwendung ein Startmenüeintrag und ein Eintrag in den Systemeinstellungen unter Software hinzugefügt. Hierüber kann der Anwender später unter Umständen die Anwendung auch wieder deinstallieren. Beachten Sie, dass Sie im Offline-Modus über die dann aktivierte Schaltfläche Updates... auch das Aktualisieren beeinflussen können. Den Dialog sehen Sie in Abbildung 17.22. Vorgegeben ist, dass die Anwendung nach Updates suchen soll. Wenn Sie sicher sind, dass Ihre Software so gut ist, dass kein Update zu erwarten ist, können Sie diese Option auch deaktivieren. Andernfalls können Sie die Häufigkeit der Update-Prüfung konfigurieren.
Abbildung 17.22 Konfiguration der Update-Suche
Ein Klick auf die Schaltfläche Anwendungsdateien... in der Registerkarte Veröffentlichen öffnet den Dialog, den Sie in Abbildung 17.23 sehen. Hier können Sie angeben, welche Dateien auf den Server kopiert werden sollen. Im vorliegenden Fall handelt es sich nur um die Programmdatei. Wäre eine benutzerdefinierte Klassenbibliothek unter Verweise eingebunden, würde die DLL automatisch mit in den Verteilungsprozess einbezogen.
Abbildung 17.23 Die zur Installation notwendigen Dateien
Im Dialog Erforderliche Komponenten... wählen Sie die Komponenten aus, die ebenfalls auf den Server kopiert werden sollen (siehe Abbildung 17.24). Zuletzt können Sie noch unter Optionen... diverse Einstellungen vornehmen, die mehr allgemeiner Natur sind.
Abbildung 17.24 Bereitstellung zusätzlicher Komponenten
Nachdem Sie die Konfiguration fertiggestellt haben, steht der Veröffentlichung nichts mehr im Wege. Ich gehe im Weiteren davon aus, dass die Anwendung auf den lokalen Webserver kopiert wird und die Offline-Ausführung der ClickOnce-Anwendung ausgewählt worden ist. Auf dem Webserver wird ein virtuelles Verzeichnis angelegt, das standardmäßig namentlich identisch mit dem Projektbezeichner ist. Das Verzeichnis enthält neben dem Bereitstellungsmanifest (das ist die Datei mit der Erweiterung .application) auch eine setup.exe-Datei, die die Installation startet, sowie die Datei publish.htm, die der Anwender aufruft, um die Anwendung zu installieren. Zudem wird der Root der Anwendung ein Unterverzeichnis hinzugefügt, dessen Name sich aus dem Bezeichner der Anwendung, ergänzt um die vierstellige Versionsnummer, ergibt. Die Punkte der Versionsnummer sind dabei gegen Unterstriche ausgetauscht worden. Dieses Verzeichnis enthält die tatsächlichen Anwendungsdaten und das Anwendungsmanifest mit der Erweiterung .manifest.
17.9.3 Die Installation einer ClickOnce-Anwendung
Nun wollen wir auch noch die Anwendung installieren. Dazu öffnen wir im Internet Explorer die Datei publish.htm. Die Webseite enthält eine Schaltfläche, über die die Anwendung im lokalen Cache eingerichtet wird. Zuvor müssen Sie jedoch die Installation der Anwendung bestätigen, da der Herausgeber als nicht vertrauenswürdig eingestuft wird – obwohl Sie in diesem Fall selbst der Herausgeber sind. Anschließend wird das Programm gestartet.
Abbildung 17.25 Die Ansicht der Seite »publish.htm«
Da die Anwendung für den Offline-Modus eingerichtet worden ist, können Sie diese nachfolgend über das Startmenü starten. Dazu ist keine Verbindung zum Webserver notwendig. Sie können das selbst testen, indem Sie im Internetdienste-Manager den Webserver anhalten. Es wird zwar versucht, Kontakt zum Webserver aufzunehmen, aber das Starten der Laufzeitumgebung ist nicht davon abhängig. Hätten Sie sich für den Online-Modus bei der Kompilierung der Anwendung entschieden, wäre ein Aufruf von publish.htm notwendig gewesen. Diese steht aber nur dann zur Verfügung, wenn der Webserver seine Dienste ausführt.
Wie verhält sich nun die Anwendung, wenn sie in irgendeiner Weise verändert und erneut veröffentlicht wird? Sie können das sehr einfach testen, indem Sie der Form eine Schaltfläche hinzufügen oder einfach nur die Hintergrundfarbe ändern. Veröffentlichen Sie die Anwendung erneut, wird automatisch die Versionsnummer erhöht – falls Sie auf der Registerkarte Veröffentlichen des Projekteigenschaftsfensters keine andere Vorgabe getroffen haben. Die erste Versionsnummer lautete 1.0.0.0, die neue 1.0.0.1. Auf dem Webserver wird ein zweites Unterverzeichnis für die neue Version angelegt, und im Bereitstellungsmanifest wird die Umleitung darauf eingetragen.
Wenn Sie die Anwendung über das Startmenü aufrufen, sucht der Client nach eventuellen Updates. Ist der Webserver in Betrieb, wird die neue Version erkannt, geladen und ausgeführt. Der Anwender braucht in diesem Fall in keiner Weise einzugreifen oder selbst für die Neuinstallation der Anwendung zu sorgen. Der ClickOnce-Prozess übernimmt das vollkommen automatisch.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.