ClickOnce bietet Entwicklern in Visual Studio die Möglichkeit im Handumdrehen einen Installer sowie Updatefunktionalität für Ihre Desktopanwendung zu erstellen.
Wer allerdings Desktopanwendungen im Team entwickelt und einen Buildserver für CI verwendet, der kann MSBuild dazu verwenden automatisch ClickOnce Packages von seiner Anwendung erstellen zu lassen und diese in eine bestimmte DropShare fallen zu lassen.
Da es sich bei ClickOnce um eine Verkettung bestimmter Buildaktionen handelt, zeigt ein Blick in die Microsoft.Common.targets ( %FrameworkDir%\vX.XX\ ) Datei auch das von Microsoft vordefinierte Target Publish, welches auch von Visual Studio zum erstellen der ClickOnce Pakete verwendet wird.
Ausgehend von einem vorhandenen C#-Projekt könnte man das Publish Target nun einfach über die Kommandozeile angeben und so aufrufen
MSBuild MyCSharpApplication.csproj /t:publish
Allerdings genügt dies wohl nicht den minimalsten Anforderungen, weil hier noch nichtmals ein Ziel für die ClickOnce Pakete angegeben wurde. Um das Verhalten des Publish-Targets steuern zu können, können diverse Properties angepasst werden. Folgende Properties stehen hierbei zur Verfügung:
- AssemblyOriginatorKeyFile
- Datentyp: String
- Beschreibung: Schlüsseldatei die zum Signieren des Packages verwendet wird
- GenerateManifests
- Datentyp: Bool
- Beschreibung: Generierung von ClickOnce Manifesten
- TargetZone
- Datentyp: Enumeration
- Beschreibung: Gibt die Vertrauenswürdigkeitsstufe der Anwendung an (Internet, LocalIntranet, LocalComputer oder Custom
- PublisherName
- Datentyp: String
- Beschreibung: Name des Herausgebers
- ProductName
- Datentyp: String
- Beschreibung: Name der Anwendung
- PublishUrl
- Datentyp: String
- Beschreibung: Ziel für den ClickOnce Output von MSBuild nur aus VS IDE
- InstallURL
- Datentyp: String
- Beschreibung: URL, die der Anwender zur Installation der Anwendung aufruft.
- SupportURL:
- Datentyp: String
- Beschreibung: Wird als Link im Startmenü angezeigt (Support Webseite des Herausgebers)
- Install
- Datentyp: Bool
- Beschreibung: True, wenn die Anwendung installiert werden kann. False, wenn die Anwendung aus dem Internet ausgeführt wird.
- ApplicationVersion
- Datentyp: Version
- Beschreibung: AnwendungsVersion (vierstellig, letzte Stelle immer * –> hier wird ApplicationRevision eingesetzt)
- ApplicationRevision
- Datentyp: Integer
- Beschreibung: Die Revisionsnummer der Anwendung
- UpdateEnabled
- Datentyp: Bool
- Beschreibung: Gibt an ob der Aktualisierungsmechanismus aktiviert ist oder nicht
- UpdateRequired
- Datentyp: Bool
- Beschreibung: Gibt an ob Updates installiert werden müssen
- UpdateMode
- Datentyp: Enumeration
- Beschreibung: Gibt an ob die Update vor oder nach Anwendungsstart bezogen werden sollen
- UpdateInterval
- Datentyp: Integer
- Beschreibung: Gibt an, wie oft ClickOnce nach Updates für die Anwendung suchen soll
- UpdateIntervalUnits
- Datentyp: Enumeration
- Beschreibung: Gibt die Einheit des UpdateIntervalls an (Hours, Days, Weeks)
- UpdateUrlEnabled
- Datentyp: Bool
- Beschreibung: Gibt an ob die Anwendung auf einer unterschiedlichen URI nach Updates suchen soll
- UpdateUrl
- Datentyp: String
- Beschreibung: Gibt an wo die Anwendung nach Updates suchen soll, nur angeben falls dieser Ort von der InstallURL abweicht.
- BootstrapperEnabled
- Datentyp: Bool
- Beschreibung: Gibt an, ob ClickOnce eine Setup.exe erstellen soll.
- IsWebBootstrapper
- Datentyp: Bool
- Beschreibung: Gibt an, ob die erstellte Setup.exe über das Web (True) ausgeführt wird, oder lokal (False) instanziiert wird.
- PublishDir
- Datentyp: String
- Beschreibung: Zielpfad für die von MSBuild generierten ClickOnce-Packages
Wie man sehen kann, lässt sich der Publish-Vorgang doch sehr stark an die Bedürfnisse des Kunden anpassen, wodurch ClickOnce für viele Anforderungen die richtige Wahl ist.
In der einfachsten Ausführung kann ClickOnce via MSBuild wie folgt aufgerufen werden:
MSBuild MyCSharpApplication.csproj /t:publish /p:ApplicationRevision=15;PublishDir=C:\DropFolder
MSBuild setzt für alle nicht angegebenen Parameter den Standardwert ein, so dass sich zum Beispiel die Anwendungsversion 1.0.0.15 ergibt. Sobald der Buildprozess abgeschlossen ist, sind die für das Deployment benötigten Files im angegebenen PublishDir zu finden und können für die Verteilung der Anwendung verwendet werden.
In einem weiteren Post möchte ich noch zeigen wie man Signierte ClickOnce-Packages anpassen und danach erneut Signieren kann, da auch dieses Szenario öfters mal vorkommt aber über die IDE leider nicht möglich ist.
Technorati-Tags:
MSBuild,
ClickOnce