# ClickOnce

ClickOnce ist eine Technik von Microsoft, die es ermöglicht, Windows-Anwendungen über das Internet mit nur einem Klick zu starten. Solche Anwendungen sind auch unter dem Namen Smart Clients bekannt. Es unterstützt mit Windows Forms oder Windows Presentation Foundation entwickelte Applikationen, andere Applikationen können über den sogenannten Updater Application Block aktualisiert werden. ClickOnce ist ähnlich Java Web Start für die Java-Plattform oder Zero Install für Linux.

## Beschreibung

ClickOnce gibt dem Benutzer die Möglichkeit, Programme nur durch Klicken eines Links auf einer Webseite zu installieren und auszuführen. Das Kernprinzip von ClickOnce ist, die Einfachheit von Webanwendungen zum Windows-Nutzer zu bringen. Darüber hinaus zielt ClickOnce auf das Lösen dreier weiterer Probleme von herkömmlichen Modellen der Softwareverteilung ab: Die Schwierigkeit, ein eingesetztes Programm zu aktualisieren, die Nebenwirkungen eines Programms auf dem Computer des Nutzers, und die Notwendigkeit von erhöhten (administrativen) Benutzerrechten zum Installieren von Programmen.
Über ClickOnce verbreitete Programme werden als „wenig beeinflussend“ eingestuft, weil sie nur für den einzelnen Nutzer, nicht für den gesamten Rechner installiert werden (ClickOnce-Cache). Zum Installieren werden keine Administratorrechte benötigt. Jedes ClickOnce-Programm ist vom anderen separiert. Das bedeutet, dass eine ClickOnce-Applikation eine andere nicht verändern oder zerstören kann.
ClickOnce setzt CAS (Code Access Security) ein, um sicherzustellen, dass Systemfunktionen nicht von einem ClickOnce-Programm aus dem Internet aufgerufen werden können, was die Sicherheit der Daten und des Systems allgemein gewährleistet.

## Programme

Das ClickOnce-Modell unterstützt zwei Arten von Programmen: installierte Programme (ähnlich konventionellen Windows-Programmen mit Windows-Startmenü-Integration) und Online-Anwendungen (im Browser gehostete Programme, die nicht installiert, sondern nur ausgeführt und zwischengespeichert werden). ClickOnce-Programme können über eine Internetseite, eine Netzwerkfreigabe oder sogar von einem Dateispeicherort verteilt werden.
Die ClickOnce-Verbreitungstechnologie ist in das Visual-Studio-2005/2008-Projektsystem integriert und wird von der MSBuild-Technologie nativ unterstützt.
Nachdem ClickOnce lange Zeit nur mit dem Internet Explorer funktionierte, wird mit dem Service Pack 1 für das .NET Framework 3.5 auch der Mozilla Firefox unterstützt. Bei der Installation des Service Packs wird eine Erweiterung (Add-on) namens „Microsoft .NET Framework Assistant“ in Firefox installiert, welche sich bei den ersten Versionen erst durch einen Eingriff in die Registry deinstallieren ließ. Die User-Agent-Kennung wird optional um die Angabe der installierten .NET-Version ergänzt, damit der Server – wie beim Internet Explorer – auf dessen Existenz reagieren kann.

## Manifeste

Eine ClickOnce-Anwendung wird durch zwei XML-Manifeste gesteuert: ein Deployment-Manifest und ein Programm-Manifest. Die Deployment-Manifest-Datei beschreibt das Verbreitungsmodell: die aktuelle Version, Aktualisierungsverhalten, Identität des Veröffentlichers sowie eine digitale Signatur. Dieses Manifest soll von den Administratoren, die die Verbreitung regeln, genutzt werden. Das Programmmanifest, d. h. eine ".exe.manifest"-Datei, beschreibt die Assemblys des Programms, referenzierte Bibliotheken und listet Berechtigungen auf, die vom Programm benötigt werden. Diese Datei soll vom Entwickler des Programms genutzt werden. Um eine ClickOnce-Anwendung zu starten, klickt der Nutzer auf die Deployment-Manifest-Datei.

## Aktualisierungen

ClickOnce-Programme sind selbstaktualisierend; sie können automatisch beim Start auf die Verfügbarkeit einer neueren Version prüfen und alle aktualisierten Dateien ersetzen. Für zu installierende Programme bietet ClickOnce auch einige Aktualisierungsoptionen an. So können Programme zum Beispiel so konfiguriert werden, dass sie gleich beim Start oder nach dem Start auf verfügbare Aktualisierungen überprüfen. ClickOnce bietet außerdem eine Programmierschnittstelle, um das Aktualisierungsverhalten den persönlichen Bedürfnissen anzupassen. Es gibt außerdem Unterstützung für erforderliche oder zwingend notwendige Aktualisierungen, für die Verwaltung fortlaufender Aktualisierungen und das Sicherstellen, dass die gesamte Anwenderbasis in kürzester Zeit auf eine neue Version gebracht werden kann.