ClickOnce Anwendung aus MSBuild erstellen

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.

 

PublishTarget

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: ,
DotNetKicks-DE Image
Published Montag, 17. Mai 2010 07:18 von ThorstenHans
Abgelegt unter: ,

Kommentare

# Twitter Trackbacks for ClickOnce Anwendung aus MSBuild erstellen - .NET rocks [dotnet-forum.de] on Topsy.com

Ping Antwort von  Twitter Trackbacks for                 ClickOnce Anwendung aus MSBuild erstellen - .NET rocks         [dotnet-forum.de]        on Topsy.com

# ClickOnce Anwendung aus MSBuild erstellen

Montag, 17. Mai 2010 14:00 von dotnet-kicks.de

Sie wurden gekickt (eine gute Sache) - Trackback von dotnet-kicks.de

# Das MSBuild Universum - .NET rocks

Donnerstag, 24. Februar 2011 11:05 von Das MSBuild Universum - .NET rocks

Ping Antwort von  Das MSBuild Universum - .NET rocks

Kommentar abgeben

(verpflichtend) 
(verpflichtend) 
(optional)
(verpflichtend)