1.2014 Anwendungen und Windows 8 … · 2015-09-21 · • 40+ mit HTML5, jQuery, CSS3 und SVG...

7
Deutschland 9,80 € Österreich 10,80 € Schweiz 19,50 sFr www.windowsdeveloper.de 1.2014 In dieser Ausgabe Umfassende Informationen zur BASTA! Spring 2014 ©iStockphoto.com/aleksandarvelasevic | | | | | Ausblick auf Entity Framework 6 Stabilität und lang Erwartetes 36 Einführung in BYOD Chancen und Risiken von Bring Your Own Device 68 Burn your Application Komplexe Installationen einfach gelöst 74 Der schmale Grat 8 Der faule Entwicklerstreber auf dem Weg von damals nach übermorgen Überleben im Wirtschafts- darwinismus 16 Agilität ist nur ein Anfang New School of IT – IT neu gedacht! 26 Im Spannungsfeld von Agilität, Mobilität und Elastizität verändern sich Unternehmen Neue IT

Transcript of 1.2014 Anwendungen und Windows 8 … · 2015-09-21 · • 40+ mit HTML5, jQuery, CSS3 und SVG...

Page 1: 1.2014 Anwendungen und Windows 8 … · 2015-09-21 · • 40+ mit HTML5, jQuery, CSS3 und SVG erstellte UI-Widgets • Neues TouchToolkit für touchfähige WinForms-Apps ... Das

Deutschland 9,80 €Österreich 10,80 €Schweiz 19,50 sFr

www.windowsdeveloper.de

1.2014

In dieser Ausgabe Umfassende Informationen zur BASTA! Spring 2014

©iStockphoto.com/aleksandarvelasevic

window

s.develop

er 1.2014

Entity Fram

ework | B

YOD

| Mobile | C#

Extension

s | Win

dows 8

| Git

0800 186 07 06Vertriebs-Hotline:

/update/2014/01

Hauptsitz in den USA ComponentSource650 Claremore Prof WaySuite 100WoodstockGA 30188-5188USA

Zahlungen auf Rechnung und per Inlandsüberweisung auch gerne angenommen.

Hauptsitz in Europa ComponentSource30 Greyfriars RoadReadingBerkshireRG1 1PE Großbritannien

Hauptsitz in Japan ComponentSource3F Kojimachi Square Bldg3-3 Kojimachi Chiyoda-kuTokyoJapan102-0083 www.componentsource.com

www.componentsource.com

© 1996-2014 ComponentSource. Alle Rechte vorbehalten. Alle Preise waren zum Zeitpunkt der Veröffentlichung dieses Dokuments korrekt. Online-Preise können sich aufgrund von Schwankungen und online angebotenen Preisnachlässen ändern.

ComponentOne Studio Enterprise 2013 V2 ab 1.313 € inkl. MwSt

NET-Tools für professionelle Entwickler: Windows, HTML5/Web und XAML.

• Hunderte von UI-Controls für alle .NET-Plattformen, einschl. Raster, Diagramme, Berichte und Arbeitsplaner

• Unterstützt Visual Studio 2013 und Windows 8.1

• 40+ mit HTML5, jQuery, CSS3 und SVG erstellte UI-Widgets

• Neues TouchToolkit für touchfähige WinForms-Apps

• Gebührenfreie Einrichtung und Verteilung

BEST-SELLER

© 1996-2014 ComponentSource. Alle Rechte vorbehalten. Alle Preise waren zum Zeitpunkt der Veröffentlichung dieses Dokuments korrekt. Online-Preise können sich aufgrund von Schwankungen und online angebotenen Preisnachlässen ändern.

Xamarin.iOS and Xamarin.Android ab 878 € inkl. MwSt

Native iOS- und Android-Apps vollständig in Visual Studio schreiben.

• Den gesamten Code in C# schreiben

• Bis zu 90% des Codes für iOS, Android u. Windows Phone verwenden

• Enthält das optisch anspruchsvolle neue IDE Xamarin Studio

• Unterstützt App Store und Enterprise Distribution

• Vorentwickelte App-Komponenten zur Verkürzung der Entwicklungszeit

BEST-SELLER

Das komplette Angebot an DevExpress .NET-Controls und Bibliotheken für alle wichtigen Microsoft-Plattformen, einschließlich WinForms, ASP.NET, WPF, Silverlight und Windows 8.

• Neu! WinForms-Spreadsheet-Control bietet benutzerfreundliche Excel-ähnliche Funktionen

• Neu! WinForms Map Control unterstützt eine unbegrenzte Anzahl von Ebenen und Datenbindungen

• Neu! Live Tile Manager schlägt eine Brücke zwischen vorhandenen WinForms-Anwendungen und Windows 8

• Neu! WinForms-Editoren: Tree-List Lookup, Sparkline und Popup Gallery

• Neu! Touch-fähiges Theme für WPF & Silverlight

• ASP.NET GridView, DataView, NewsControl und ImageGallery unterstützen die endlose Paginierung

• Neu! ASP.NET-Bildgalerie-Control mit Unterstützung für Touch-Fingerbewegungen

• Neu! MVC Image Slider-, File Manager- und Captcha-Erweiterungen

• Neu! Diagramm-Assistent für WPF

• Visual Studio-Vorlagengalerie vereinheitlicht die Verwendung von DevExpress-Vorlagen

Mehr über DevExpress DXperience und preisgekrönte DevExpress-Produkte unter:www.componentsource.com/features/devexpress

DevExpress DXperience 13.1 ab 1.318 € inkl. MwSt#1 SELLER

Ausblick auf Entity Framework 6

Stabilität und lang Erwartetes

36

Einführung in BYOD

Chancen und Risiken von Bring Your Own Device

68

Burn your Application

Komplexe Installationen einfach gelöst

74

Der schmale Grat 8Der faule Entwicklerstreber auf dem Weg von damals nach übermorgen

Überleben im Wirt schafts-darwinismus 16Agilität ist nur ein Anfang

New School of IT – IT neu gedacht! 26Im Spannungsfeld von Agilität, Mobilität und Elastizität verändern sich Unternehmen

NeueIT

Page 2: 1.2014 Anwendungen und Windows 8 … · 2015-09-21 · • 40+ mit HTML5, jQuery, CSS3 und SVG erstellte UI-Widgets • Neues TouchToolkit für touchfähige WinForms-Apps ... Das

von Ivan Appert und Stefan Wermelinger

Das WiX Toolset hat seit seinem Entwicklungsstart 2004 viele Fortschritte gemacht. Aus einer XML-Abs-traktion für MSI-Pakete hat sich ein eigenes Ökosystem entwickelt, das heute alle Installationsanforderungen erfüllen kann. Wenn es um die Benutzeroberfläche oder die Installation von Abhängigkeiten geht, war man al-lerdings bisher ziemlich eingeschränkt. In der Version 3.6 des WiX Toolsets gibt es nun mit Burn elegante Mechanismen, diese Einschränkungen zu überwinden. Burn erlaubt mit seiner Bootstrapper-Funktionalität die Implementierung eigener Installationsoberflächen und übernimmt die Kontrolle des Installationsablaufs.

Das WiX Toolset bietet eine entwicklerfreundliche In-tegration in Visual Studio, die Unterstützung von Con-tinuous Integration und Bibliotheken zur Einbindung von Standardaktionen in eigene Installationspakete. Unter [1] kann das WiX Toolset direkt heruntergeladen werden. Eine ausführliche Dokumentation und weitere Informationen zum Projekt sind unter [2] zu finden.

Zur Veranschaulichung stellen wir uns folgendes Szenario vor: Wir haben ein Projekt mit dem Namen Application. Der Einfachheit halber besteht es nur aus Textdateien, die auf dem Zielrechner installiert werden sollen. Weiter haben wir eine Vorbedingung Prerequisite Application, ebenfalls ein aus Textdateien bestehendes Projekt. Als Letztes gibt es noch ein Projekt ExtraApplication, zu dem unsere Application keine di-rekte Abhängigkeit besitzt, das aber auch mit installiert werden soll. Falls seine Installation fehlschlägt, soll die Installation der Application und ihrer Abhängigkeiten nicht rückgängig gemacht werden.

In Abbildung 1 sehen wir die Struktur unserer Ap-p likationen. Man kann sich unschwer vorstellen, dass

die Projekte in einer realen Situation vermutlich sehr viel größer sind und möglicherweise sogar unabhängig voneinander entwickelt werden. Der Einfachheit halber sind alle drei Projekte unseres Szenarios in einer einzigen Visual-Studio-Solution erstellt worden. Die komplette Lösung ist auf GitHub unter [3] öffentlich bereitgestellt.

MSI-Pakete mit WiXNach der Installation des WiX Toolset kann direkt im Vi-sual Studio ein neues Installationsprojekt erstellt werden. Wir werden für das Projekt Application exemplarisch aufzeigen, wie ein einzelnes MSI-Paket erstellt wird.

In unserer Solution fügen wir ein neues Projekt hinzu: ein Set-up-Projekt namens ApplicationInstaller. Dabei wird bereits die Datei Product.wxs mit einem Grund-gerüst für den Installer erzeugt. Um uns die Arbeit zu erleichtern, fügen wir zudem eine Projektreferenz zu Application hinzu. So können wir innerhalb des Set-up-Projekts auf die zu installierenden Ressourcen verwei-sen.

Der konzeptionelle Aufbau eines MSI-Pakets sieht so aus, dass man ein Product definiert, bestehend aus einem bis mehreren Features. Ein Feature enthält Kom-ponenten. Eine Komponente beinhaltet eine einzelne Datei, einen Registry-Eintrag usw. (Abb. 2).

Zuallererst definieren wir, welche Eigenschaften unser Programm hat. Dazu benutzen wir den Block Product, der den Namen des zu installierenden Produkts sowie dessen Version und IDs enthält. Das Attribut Upgrade-Code des Produkts ist essenziell: Es muss eine für jede Software eindeutige GUID sein und darf, wenn einmal veröffentlicht, nicht mehr verändert werden. Diese GUID dient zur Identifikation des Produkts durch den Windows Installer und ermöglicht unter anderem Up-grades unseres installierten Produkts:

Komplexe Installationen einfach gelöst

Burn your Application Mit Burn bietet das WiX Toolset ein einfaches, aber mächtiges Tool zur Erstellung moderner und flexibler Installationsprogramme für Windows. Burn erlaubt die einfache Installation von Abhängigkeiten, die für die eigene Software unabdingbar sind. Zusätzlich kann die Installer-Oberfläche komplett neu geschrieben und so-mit vom alten Korsett aus Windows-XP-Zeiten befreit werden.

74

praxis . Burn

1.2014

Page 3: 1.2014 Anwendungen und Windows 8 … · 2015-09-21 · • 40+ mit HTML5, jQuery, CSS3 und SVG erstellte UI-Widgets • Neues TouchToolkit für touchfähige WinForms-Apps ... Das

<Product Id="*" Name="Windows Developer Application" Language="1033" Version="1.0.0.0" Manufacturer="bbv Software Services AG" UpgradeCode="{GUID}">

In einem separaten Fragment definieren wir, wie die Ordnerstruktur auf dem Zielrechner erstellt werden soll. Im Programmverzeichnis des Betriebssystems soll ein Ordner Windows Developer Application mit einem Unterordner Files angelegt werden:

<!-- Step 1: Define directory structure --><Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLFOLDER" Name="Windows Developer Application"> <Directory Id="Files" Name="Files"/> </Directory> </Directory></Directory>

Jetzt können wir die Komponenten definieren. Um die Upgrade- und Repair-Fähigkeit der Installation zu ge-währleisten, verpacken wir jede zu installierende Datei in eine Komponente. In diesem Fall bündeln wir die Komponenten in einer Komponentengruppe:

<!-- Step 2: Components of the application --><ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> <Component Id="Main" Guid ="{GUID}"> <File Id="Main.txt" Source="$(var.Application.TargetDir)Main.txt" KeyPath="yes"/> </Component></ComponentGroup>

Im letzten Schritt müssen wir diese Komponenten noch einem Feature zuordnen. Ein Feature ist ein Bestandteil einer Applikation und kann unabhängig von anderen Features installiert werden. Falls eine Oberfläche für den Installer verwendet wird, kann man die Auswahl der zu installierenden Features auch dem Benutzer überlassen. Wir fügen unserem einzigen Feature ProductFeature die beiden Komponentengruppen Main und Files hinzu:

<!-- Step 3: Features to install --><Feature Id="ProductFeature" Title="Application" <ComponentGroupRef Id="ProductComponents" /> <ComponentGroupRef Id="Files"/></Feature>

Nun haben wir einen funktionsfähigen Installer für unser Projekt Application erstellt. Auf dieselbe Wei-se verfahren wir mit den beiden anderen Projekten PrerequisiteApplication und ExtraApplication. Als

Resultat haben wir drei unab-hängige MSI-Pakete.

Vor- und Nachbedingung mit Burn installierenWenn nun aber gleichzeitig mehrere Installationspakete in-stalliert werden müssen, reicht die MSI-Kernfunktionalität nicht mehr aus. Burn schließt diese Lücke mit der Bootstrap-ping- und Chaining-Funktiona-lität. In Visual Studio erstellen wir dazu wieder ein neues Pro-jekt, diesmal vom Typ Boot-strapper Project, denn wir wollen die Installationspakete zusammenbündeln. Folgendes Code-Snippet zeigt den Aufbau eines Burn Bundles:

<Bundle Name="Windows Developer" Version="2.1.0.0" Manufacturer="bbv Software Services AG" UpgradeCode="{GUID}">

<BootstrapperApplicationRef Id=<yourBootstrapperApplication> /> <Chain> <!-- Your installation sequence --> </Chain></Bundle>

Das Bundle-Element übernimmt die Bündelung der beiden Funktionalitäten und definiert die Applikati-onseinstellungen, also den Namen, die Version und den UpgradeCode zur Identifikation des Produkts. Im Ele-ment BootstrapperApplicationRef wird die gewünschte Bootstrapper-Applikation hinterlegt. Im Element Chain wird die Installationsreihenfolge festgelegt. Schauen wir uns die einzelnen Elemente genauer an.

BootstrappingDas Bootstrapping-Element beinhaltet die Referenz zur verwendeten Bootstrapper-Applikation. Mit Version 3.6 des WiX Toolset unterstützt Burn zwei verschiedene Bootstrapper-Applikationen von Haus aus, nämlich HyperlinkLicense und RtfLicense. Der Hyperlink-Bootstrapper wird folgendermaßen einge-bunden:

<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense"> <bal:WixStandardBootstrapperApplication LicenseUrl="path to License.rtf" ThemeFile =" path to HyperlinkTheme.xml" LogoFile=" path to bbvLogo.jpg" /></BootstrapperApplicationRef>

Abb. 1: Applikationsstruktur

Abb. 2: Konzeptioneller Aufbau eines MSI-Pakets

75

Burn . praxis

www.windowsdeveloper.de1.2014

Page 4: 1.2014 Anwendungen und Windows 8 … · 2015-09-21 · • 40+ mit HTML5, jQuery, CSS3 und SVG erstellte UI-Widgets • Neues TouchToolkit für touchfähige WinForms-Apps ... Das

Über das Id-Attribut wird der gewünschte Bootstrap-per referenziert. Zusätzlich können Einstellungen, etwa in Hinblick auf das Logo oder den Link zum Lizenz-text, über das Unterelement WixStandardBootstrap-perApplication vorgenommen werden. Wenn man das Installationsprojekt kompiliert, erhält man bereits einen angepassten Installer im vordefinierten Layout (Abb. 3).

ChainingSchließlich definieren wir die Chain – wir bestim-men also, welche Pakete in welcher Reihenfolge installiert werden. Zuerst wird die Voraussetzung un-serer Applikation, der PrerequisiteApplicationInstaller,

ausgeführt. Anschließend folgt die eigentliche Appli-kation, der App licationInstaller. Als Letztes wird der ExtraApplication Installer ausgeführt. Vor diesem gibt es eine Rollback Boundary, die im Falle eines Rollbacks der Installation die vor der Boundary installierten Pa-kete nicht wieder deinstallieren würde. Wenn die Ins-tallation der ExtraApplication fehlschlägt, werden die bereits installierten Produkte Application und Prerequi-siteApplication auf dem System belassen, während das Paket ExtraApplication wieder sauber entfernt wird.

Die einzelnen MSI-Pakete werden im Quiet-Modus in-stalliert, also ohne ihre eigenen Benutzeroberflächen. So bekommt der Benutzer nichts von den einzelnen MSI-Pa-keten mit; ihm präsentiert sich lediglich eine einzelne, ein-heitliche Oberfläche. Diese sieht noch relativ rudimentär aus. Im Folgenden werden wir zeigen, wie auf einfache Art und Weise eine individuelle Benutzeroberfläche für den In-stallationsassistenten bereitgestellt werden kann.

Burn mit eigener InstallationsoberflächeWir haben bisher gesehen, wie mit Burn ein komplet-tes Installationsprogramm mit Standard-Bootstrapper und Chaining-Mechanismus kreiert werden kann. Neben dem Standard-Bootstrapper bietet Burn die Möglichkeit, eigene Bootstrapper-Applikationen zu schreiben, um die Oberfläche und Benutzerführung perfekt auf das zu installierende Produkt abzustim-men. Wir werden nun schrittweise eine auf WPF ba-sierende Installationsoberfläche implementieren.

In unserem Beispiel werden wir die Szenarien Instal-lation und Deinstallation abdecken. Zuerst legen wir in Visual Studio ein neues C#-Class-Library-Projekt an und referenzieren die DLL BootstrapperCore.dll aus dem WiX Toolset. Als Einstiegspunkt dient die abstrakte Klasse BootstrapperApplication, die die Brückenfunktion zwischen der Burn Engine und un-serem Bootstrapper übernimmt. Von ihr leiten wir eine neue Klasse CustomBootstrapperApplication ab, die die Implementierung des Bootstrappers enthalten wird. Mithilfe eines Eintrags im Assembly-Info wird sie als Einstiegspunkt für die Burn Engine deklariert. Das wird folgendermaßen erreicht:

[assembly: BootstrapperApplication(typeof(CustomBootstrapperApplication))]

Bevor wir mit der eigentlichen Implementierung un-seres Bootstrapper beginnen können, muss zusätzlich noch die BootstrapperCore.Config-Datei zum Projekt hinzugefügt werden. Im SDK-Unterorder des instal-lierten WiX Toolsets ist eine Vorlage zu finden, die folgendermaßen angepasst wird:

<wix.bootstrapper> <host assemblyName="WiXArtikelBootstrapper"/></wix.bootstrapper>

Der Host Assembly-Eintrag dient zur Identifikation der eigenen Bootstrapper-DLL, die von der Burn Engine wäh-

Abb. 4: Projektstruktur für einen eigenen Bootstrapper

Listing 1

<Chain> <MsiPackage Id="Prerequisite" SourceFile="$(var.PrerequisiteApplicationInstaller.TargetDir) PrerequisiteApplicationInstaller.msi" Visible="yes"/> <MsiPackage Id="Application" SourceFile="$(var.ApplicationInstaller.TargetDir) ApplicationInstaller.msi" Visible="yes"/> <RollbackBoundary Vital="yes" /> <MsiPackage Id="Extra" SourceFile="$(var.ExtraApplicationInstaller.TargetDir) ExtraApplicationInstaller.msi" Visible="yes"/></Chain>

Abb. 3: Bootstrapper mit „HyperlinkLicense“

LogoLogo

76

praxis . Burn

1.2014

Page 5: 1.2014 Anwendungen und Windows 8 … · 2015-09-21 · • 40+ mit HTML5, jQuery, CSS3 und SVG erstellte UI-Widgets • Neues TouchToolkit für touchfähige WinForms-Apps ... Das

rend der Installation gestartet wird. Das jetzt bestehende Projekt (Abb. 4) beinhaltet alle zwingend notwendigen Elemente für den eigenen Bootstrapper.

Jetzt kann mit der Implementierung des Custom Bootstrappers begonnen werden. Wie vorher erwähnt, leitet die Klasse CustomBootstrapperApplica-tion von der abstrakten Klasse BootstrapperApplication ab (Listing 2). Die Methode Run muss zwingend implementiert werden, da diese von der Burn Engine aufgerufen wird, um die Installation durchzuführen. Folgende Aktio-nen müssen ausgeführt werden:

1. Detektieren, welche Komponenten bereits installiert sind oder installiert werden müssen

2. Planung der Installation für die fehlenden Komponenten3. Ausführung der nötigen Schritte

Über die Engine-Eigenschaft der BootstrapperApplication-Klasse kann direkt auf die Burn Engine zugegriffen werden. Das Detektieren des aktuellen Sys-temzustands wird folgendermaßen ausgeführt:

this.Engine.Detect();

Es besteht die Möglichkeit, über das Abonnieren von Events der Basisklasse Einfluss auf einzelne Phasen und Ereignisse der Installation zu nehmen. Der nächste Schritt besteht in der Planung der nötigen Aktionen. Dazu wird wie-der die Burn Engine benutzt:

this.engine.Plan(LaunchAction.Install);

Über den Methodenparameter wird die auszuführende Aktion festgelegt. Wenn die Planung beendet ist, wird das PlanComplete-Event ausgelöst. War die Pla-nung erfolgreich, kann die Installation mit folgendem Befehl ausgeführt werden:

this.bootstrapperApplication.Engine.Apply(this.ViewWindowHandle);

Als Methodenparameter muss die Referenz zur angezeigten View übergeben werden, die bei Instanziierung der Installationsoberfläche erstellt wird und zwi-schengespeichert werden muss. Ohne Referenz zur View kann die Burn Engine nicht mit der Installationsoberfläche interagieren. Die Methode Apply führt alle vorher geplanten Aktionen durch und feuert am Ende das Event ApplyComplete. Beendet wird die Burn Engine mit dem Aufruf der Quit-Methode.

Dieser Ablauf muss nun in eine Oberfläche integriert werden, in unserem Fall eine WPF-Oberfläche. Anhand des Parameters, mit dem unsere Installations-applikation aufgerufen wurde, wird entschieden, ob eine Installation oder eine Deinstallation vorgenommen wird. Ist die definierte Aktion Install, wird die Ins-tallationsoberfläche angezeigt, ansonsten die Deinstallationsoberfläche. Grund-sätzlich sollte die Entscheidung, welche Aktion durchgeführt wird, aber nicht auf den Aufrufparameter abgestützt werden. Stattdessen sollte das Resultat vom Detektieren des Systemzustands abhängig sein, damit im gegebenen Falle etwa ein Upgrade oder ein Repair durchgeführt werden kann. Die oben beschriebenen Schritte werden in den jeweiligen ViewModels implementiert und ausgeführt. Zusätzlich werden, falls angebracht, Kommandos zur Ausführung von Benut-zeraktionen verwendet. Zum Beispiel wird die Planung der Installation über ein Kommando gestartet, während das Abonnieren des PlanComplete-Events vom ViewModel übernommen wird. Das ViewModel führt auch direkt den Apply-Befehl aus. Die Oberfläche entspricht der in Abbildung 5. Es werden ein Logo und zwei Buttons dargestellt, einer zum Starten der Installation und einer zum Aufrufen der Herstellerwebseite. Das Kreieren, Zusammenhängen und Anzeigen der Oberfläche erfolgt direkt in der Methode ShowInstallView im Bootstrap-per (Listing 2). Zwei Punkte sollten besonders beachtet werden: zum einen der

1.2014

Burn . praxis

Anzeige

Page 6: 1.2014 Anwendungen und Windows 8 … · 2015-09-21 · • 40+ mit HTML5, jQuery, CSS3 und SVG erstellte UI-Widgets • Neues TouchToolkit für touchfähige WinForms-Apps ... Das

Aufruf der Methode Ini-tialize auf dem ViewMo-del und zum anderen die Bestimmung des View-WindowHandle. Wie bereits erwähnt, ist die View-Referenz notwen-dig zur Ausführung der Installation. Die Initia-lize-Methode ist für das Abonnieren von Events der Burn Engine verant-wortlich, namentlich der Events PlanComplete und Apply Complete. So-

mit ist die Implementation des eigenen Bootstrappers komplett und er kann in unsere Installationsapplikati-on eingebunden werden. Dazu wird die Bundle-Defini-tion wie folgt angepasst:

<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost"> <Payload SourceFile="path to CustomBootstrapperApplication.dll"/> <Payload SourceFile="path to BootstrapperCore.config"/></BootstrapperApplicationRef>

Anstatt den Standard-Bootstrapper über das Id-Attribut zu referenzieren, wird der ManagedBootstrapperAppli-cationHost neu referenziert und die eigene Bootstrapper-DLL mit dem Payload-Element übergeben. Über das Payload-Element müssen alle nötigen Dateien übergeben werden, die zusammen die Installationsapplikation erge-ben. Zusätzlich zur DLL der Applikation muss die Boot-strapperCore.config übergeben werden.

Wir haben an einem einfachen Beispiel die Implemen-tierung eines eigenen Bootstrappers durchgespielt. Die Oberfläche des Bootstrappers und die Behandlung der Installationsszenarien kann beliebig ausgebaut werden. Die Burn Engine bietet die Flexibilität, alle Zwischen-schritte des Installationsprozesses abzufangen und mit eigenen Regelwerken anzureichern.

FazitWährend das WiX Toolset alle Möglichkeiten des MSI bietet, geht man mit Burn noch einen Schritt weiter: Wir können Abhängigkeiten auf einfache Weise bündeln und gemeinsam wie gewünscht installieren lassen. Bei Bedarf kann die Installationsoberfläche selbst geschrieben und komplett den individuellen Bedürfnissen angepasst wer-den. Durch die Schlichtheit und Flexibilität dieser Tech-nologie haben wir ein ideales Werkzeug für große und komplexe Produkte, deren Installation auch über längere Zeit gepflegt und gewartet werden muss.

Ivan Appert und Stefan Wermelinger arbeiten als Softwareingenieure bei bbv Software Services. Sie ha-ben mehrjährige Erfahrung im Bereich der Softwareent-wicklung mit verschiedenen Technologien und sind insbesondere auch für die Erstellung und Pflege von

Installationspaketen verantwortlich.

Listing 2

namespace WindowsDeveloperBootstrapper{ using Microsoft.Tools.WindowsInstallerXml.Bootstrapper;

public class CustomBootstrapperApplication : BootstrapperApplication { protected override void Run() { this.Engine.Detect(); if (this.Command.Action == LaunchAction.Install) { this.ShowInstallView(); } else { this.ShowUninstallView(); }

this.Engine.Quit(0); }

}

private void ShowInstallView() { InstallViewModel viewModel = new InstallViewModel( new InstallCommand(this.Engine), new OpenHomepageCommand(), this); viewModel.Initialize();

InstallView view = new InstallView(); viewModel.ViewWindowHandle = new WindowInteropHelper(view).EnsureHandle(); view.DataContext = viewModel; view.ShowDialog(); }

private void ShowUninstallView() { ... }}

Links & Literatur

[1] http://wix.codeplex.com/

[2] http://wixtoolset.org/

[3] https://github.com/iappert/BurnYourApplication

Abb. 5: Custom Bootstrapper mit Burn

Logo

78

praxis . Burn

1.2014

Page 7: 1.2014 Anwendungen und Windows 8 … · 2015-09-21 · • 40+ mit HTML5, jQuery, CSS3 und SVG erstellte UI-Widgets • Neues TouchToolkit für touchfähige WinForms-Apps ... Das

Alle Printausgaben frei Haus

App im App Store kostenlos runterladen

Jetzt 3 Top-Vorteile sichern!

www.windowsdeveloper.de

1

App im App Store kostenlos runterladen2

Windows Developer und Bonusinhalte in der App lesen

3

Jetzt abonnieren!

www.windowsdeveloper.de

WINDOWS3

DEVELOPER

Jetzt exklusiv

für Abonnenten:

4 x im Jahr inklusive!