Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group...

53
Deployment und Deployment und Versioning Versioning von .NET Applikationen von .NET Applikationen Uwe Baumann Uwe Baumann Technologieberater Technologieberater Developer Group Developer Group Microsoft GmbH Microsoft GmbH [email protected] [email protected]

Transcript of Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group...

Page 1: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Deployment und Versioning Deployment und Versioning von .NET Applikationenvon .NET Applikationen

Uwe BaumannUwe Baumann

TechnologieberaterTechnologieberaterDeveloper GroupDeveloper GroupMicrosoft GmbHMicrosoft GmbH

[email protected]@microsoft.com

Page 2: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Was Sie erwartetWas Sie erwartet

Eine kurzer Überblick in den Eine kurzer Überblick in den Problemkreis Problemkreis Die „DLL-Hölle“ und ihre UrsachenDie „DLL-Hölle“ und ihre Ursachen

Eine Einführung in die Eine Einführung in die .NET-Technologien für .NET-Technologien für Deployment und VersioningDeployment und Versioning Konfiguration von Applikationen mit Hilfe Konfiguration von Applikationen mit Hilfe

von Policy Filesvon Policy Files Komponenten mit integriertem Setup-CodeKomponenten mit integriertem Setup-Code Microsoft Installer (MSI) SupportMicrosoft Installer (MSI) Support

Page 3: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Anforderungen [1/3]Anforderungen [1/3]

Unkompliziertes DeploymentUnkompliziertes Deployment "XCopy"-Installation"XCopy"-Installation Einfaches physikalisches Verschieben von Einfaches physikalisches Verschieben von

ApplikationenApplikationen

Verhinderung von "Nebenwirkungen"Verhinderung von "Nebenwirkungen" Neue Applikationen sollen bereits Neue Applikationen sollen bereits

installierte Applikationen nicht negativ installierte Applikationen nicht negativ beeinflussenbeeinflussen

Page 4: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Anforderungen [2/3]Anforderungen [2/3]

Management von Software-ServiceManagement von Software-Service Wie können Bugfixes ausgeliefert werden?Wie können Bugfixes ausgeliefert werden? Was tun, wenn der Bugfix neue Bugs Was tun, wenn der Bugfix neue Bugs

enthält?enthält? Was tun, wenn ein Bugfix für eine Was tun, wenn ein Bugfix für eine

gemeinsamegemeinsame Komponente nur von Komponente nur von einereiner Applikation genutzt werden soll?Applikation genutzt werden soll?

Page 5: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Anforderungen [3/3]Anforderungen [3/3]

Einfache Installation von benötigten Einfache Installation von benötigten RessourcenRessourcen Erstellen von DatenbankenErstellen von Datenbanken Setup von Message QueuesSetup von Message Queues

Page 6: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Ein Beispielprojekt: Ein Beispielprojekt: "MyOffice .NET""MyOffice .NET"

Page 7: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

"MyOffice"-Komponenten"MyOffice"-Komponenten

MyText und MyCalcMyText und MyCalc "Textverarbeitung" und "Textverarbeitung" und

"Tabellenkalkulation""Tabellenkalkulation" .NET WinForms-Applikationen (EXE).NET WinForms-Applikationen (EXE)

MySpellerMySpeller "Rechtschreibprüfung""Rechtschreibprüfung" .NET Klassenbibliothek (DLL).NET Klassenbibliothek (DLL) Gemeinsam genutzte Komponente –Gemeinsam genutzte Komponente –

wird von MyText und MyCalc referenziertwird von MyText und MyCalc referenziert

Page 8: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Gemeinsame Systemkomponenten(Zentraler Speicherort)

"MyOffice" - Abhängigkeiten"MyOffice" - Abhängigkeiten

System.Windows.Forms.DLL.NET Formularbibliothek

System.Windows.Forms.DLL.NET Formularbibliothek

System.Data.DLL.NET Datenzugriffs-Bibliothek

System.Data.DLL.NET Datenzugriffs-Bibliothek

MSCorLib.DLL.NET Basis-Datentypen

MSCorLib.DLL.NET Basis-Datentypen

Applikations-Komponenten

(Lokaler Speicherort)

MyText.EXEMyText.EXE

MySpeller.DLLMySpeller.DLL

MyCalc.EXEMyCalc.EXE

NEUEVERSION!

NEUEVERSION!

Page 9: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Die „DLL-Hölle“…Die „DLL-Hölle“…

Der „Highlander-Effekt“ bei DLLs:Der „Highlander-Effekt“ bei DLLs:„Es kann nur eine(n) geben“ „Es kann nur eine(n) geben“ Alle Clients müssen dieselbe DLL Alle Clients müssen dieselbe DLL

verwendenverwenden Diese wird eventuell von einer anderen Diese wird eventuell von einer anderen

Applikation mit einer inkompatiblen Applikation mit einer inkompatiblen Version überschriebenVersion überschrieben

Clients können keine „private Kopie“ der Clients können keine „private Kopie“ der DLL verwenden oder eine bestimmte DLL verwenden oder eine bestimmte Version anfordernVersion anfordern

Page 10: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

……und die .NET Runtime (CLR)und die .NET Runtime (CLR)

Die CLR kann verschiedene Versionen Die CLR kann verschiedene Versionen einer gemeinsam genutzten einer gemeinsam genutzten Komponente gleichzeitig ausführenKomponente gleichzeitig ausführen Jede Client-Applikation kann individuell die Jede Client-Applikation kann individuell die

gewünschte Version anforderngewünschte Version anfordern Extensive Konfigurationsmöglichkeiten Extensive Konfigurationsmöglichkeiten

Komponenten enthalten alle wichtigen Komponenten enthalten alle wichtigen Informationen über sich selbstInformationen über sich selbst Keine Eintragungen in der Registry mehr Keine Eintragungen in der Registry mehr

nötignötig

Page 11: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Inside "MySpeller"Inside "MySpeller"

MySpeller.DLL

MSIL Code(kompiliert)

MSIL Code(kompiliert)

.method public static bool CheckSpelling(string DocumentString) cil managed{ // Code size 40 (0x28) .maxstack 3 .locals init ([0] bool CheckSpelling) IL_000c: ldstr "HALLO" IL_0011: ldc.i4.0 IL_0012: call IL_0017: ldc.i4.0 IL_0025: nop IL_0026: ldloc.0 IL_0027: ret} // end of method MySpeller::CheckSpelling

MetadatenMetadaten

Reference-Tabellen Was wird importiert?

Definition-Tabellen Was wird exportiert?

Jedes Modul enthält…Jedes Modul enthält… Metainformationen Metainformationen

darüber, welche externen darüber, welche externen Typen, Methoden etc. von Typen, Methoden etc. von diesem Modul verwendet diesem Modul verwendet werdenwerden

Metainformationen Metainformationen darüber, welche Typen, darüber, welche Typen, Methoden etc. von diesem Methoden etc. von diesem Modul exportiert werdenModul exportiert werden

Optional: Ausführbaren Optional: Ausführbaren Code (MSIL)Code (MSIL)

Imports System.IOImports System.DataImports Microsoft.Win32

Public Class MySpeller

'Simple "Rechtschreibprüfung", kann nur auf das Wort "HALLO" prüfen Public Shared Function CheckSpelling _ (ByVal DocumentString As String) As Boolean

If DocumentString.ToUpper.Trim <> "HALLO" Then Return False Else Return True End If

End Function

Page 12: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

AssembliesAssemblies

"Logische" EXE oder DLL unter .NET"Logische" EXE oder DLL unter .NET Eine Assembly kann aus einem oder Eine Assembly kann aus einem oder

mehreren Files bestehen, ist aber nach mehreren Files bestehen, ist aber nach außen außen eineeine logische Einheit logische Einheit

Versionierung, Deployment und Versionierung, Deployment und Security beziehen sich jeweils auf die Security beziehen sich jeweils auf die AssemblyAssembly als Ganzes als Ganzes

Enthält ein Manifest, welches Auskunft Enthält ein Manifest, welches Auskunft über die Assembly gibtüber die Assembly gibt

Page 13: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Single File AssemblySingle File Assembly

MSIL Code(kompiliert)

MSIL Code(kompiliert)

MySpeller.DLL

Assembly MySpellerVersion X

Jede Assembly enthält Jede Assembly enthält genau ein Manifestgenau ein Manifest Auch bei Single File Auch bei Single File

AssembliesAssemblies

Jedes File der Jedes File der Assembly enthält Assembly enthält Metadaten über seine Metadaten über seine eigenen Typen und eigenen Typen und MethodenMethoden

MetadatenMetadaten

Importe

ManifestManifest

Exporte

Files

Exporte

Page 14: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

DemoDemo

"MySpeller" im MSIIL Disassembler "MySpeller" im MSIIL Disassembler ILDasm.exeILDasm.exe

Page 15: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Multi File AssemblyMulti File Assembly

MSIL Code(kompiliert)

MSIL Code(kompiliert)

MetadatenMetadaten

Importe

Exporte

ManifestManifest

Exporte

Files

MySpeller.DLL

MSIL Code(kompiliert)

MSIL Code(kompiliert)

MetadatenMetadaten

Importe

Exporte

MySpellerTools.DLL

MSIL Code(kompiliert)

MSIL Code(kompiliert)

MetadatenMetadaten

Importe

Exporte

MyGrammar.DLL

Assembly MySpellerVersion X

Page 16: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

DemoDemo

Erstellung einer Multi File AssemblyErstellung einer Multi File Assembly

Page 17: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Private und Public AssembliesPrivate und Public Assemblies

Private AssembliesPrivate Assemblies Befinden sich im Applikationsverzeichnis Befinden sich im Applikationsverzeichnis

oder einem Unterverzeichnis davonoder einem Unterverzeichnis davon Werden nur von einer Applikation genutztWerden nur von einer Applikation genutzt

Public AssembliesPublic Assemblies Werden von einer oder mehreren Werden von einer oder mehreren

Applikationen genutztApplikationen genutzt Befinden sich an einem zentralen Ort, dem Befinden sich an einem zentralen Ort, dem

Global Assembly Cache (GAC)Global Assembly Cache (GAC)

Page 18: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Der Global Assembly CacheDer Global Assembly Cache

Speicherort für Public AssembliesSpeicherort für Public Assemblies Kann mehrere Versionen derselben Kann mehrere Versionen derselben

Assembly aufnehmenAssembly aufnehmen Die CLR ist in der Lage, unterschiedlichen Die CLR ist in der Lage, unterschiedlichen

Applikationen verschiedene Versionen Applikationen verschiedene Versionen einer Assembly zu liefern und diese einer Assembly zu liefern und diese gleichzeitig im Speicher zu haltengleichzeitig im Speicher zu halten

Page 19: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Identifizierung von AssembliesIdentifizierung von Assemblies

Assemblies im GAC müssen eindeutig Assemblies im GAC müssen eindeutig identifizierbar seinidentifizierbar sein Was passiert, wenn es zwei verschiedene Was passiert, wenn es zwei verschiedene

MySpeller-Bibliotheken gibt?MySpeller-Bibliotheken gibt? COM-Lösung: Eindeutige GUID?COM-Lösung: Eindeutige GUID?

Page 20: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Strong Names [1/3]Strong Names [1/3]

Strong Names liefern IdentitätStrong Names liefern Identität Teile der Metainformation werden mit Teile der Metainformation werden mit

einem Private Key digital signierteinem Private Key digital signiert Assemblies, welche die Public Assembly Assemblies, welche die Public Assembly

referenzieren, enthalten den referenzieren, enthalten den entsprechenden Public Keyentsprechenden Public Key

Strong Names sind sicherStrong Names sind sicher Nur der Autor hat den Private Key und Nur der Autor hat den Private Key und

kann damit signierenkann damit signieren Manipulationen werden verhindertManipulationen werden verhindert

Page 21: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Strong Names [2/3]Strong Names [2/3]

Private Key

Public Key

MSIL Code(kompiliert)

MSIL Code(kompiliert)

MetadatenMetadaten

ManifestManifest

Assembly MySpeller

Hash-Wert

RSA Signatur

MySpeller.DLL

.snk File

+

Page 22: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Strong Names [3/3]Strong Names [3/3]

Private Key

Public Key

MSIL Code(kompiliert)

MSIL Code(kompiliert)

MetadatenMetadaten

ManifestManifest

Assembly MySpeller

Hash-Wert A

RSA Signatur

MySpeller.DLL

.snk File

+

Hash-Wert B

A=B ?

RSA Signatur

Page 23: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

DemoDemo

Der Global Assembly Cache (GAC)Der Global Assembly Cache (GAC)

Page 24: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

.NET Deployment: Grundregel.NET Deployment: Grundregel

Verwenden Sie möglichst wenige Verwenden Sie möglichst wenige Shared Assemblies!Shared Assemblies! Alle Private Assemblies, auf die Ihre Alle Private Assemblies, auf die Ihre

Applikation verweist, können im Applikation verweist, können im Applikationsverzeichnis bzw. Applikationsverzeichnis bzw. Unterverzeichnissen davon "leben"Unterverzeichnissen davon "leben"

Die gesamte Applikation kann so per Die gesamte Applikation kann so per "XCopy" an eine andere Stelle kopiert "XCopy" an eine andere Stelle kopiert werdenwerden

Eine solche Applikation läuft Eine solche Applikation läuft beispielsweise auch direkt von CD!beispielsweise auch direkt von CD!

Page 25: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Shared Assemblies Shared Assemblies

Shared Assemblies sind trotzdem Shared Assemblies sind trotzdem unvermeidbarunvermeidbar Systembibliotheken, Systembibliotheken,

Datenzugriffsbibliotheken uvm.Datenzugriffsbibliotheken uvm. Änderungen an Shared Assemblies Änderungen an Shared Assemblies

beeinflussen potentiell viele Applikationenbeeinflussen potentiell viele Applikationen(wie "einst" unter COM! ;-)(wie "einst" unter COM! ;-)

Bei negativen Auswirkungen auf einzelne Bei negativen Auswirkungen auf einzelne Applikationen kann selektiv durch Applikationen kann selektiv durch Konfigurationsfiles eingegriffen werden!Konfigurationsfiles eingegriffen werden!

Page 26: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Konfigurationsfiles [1/2]Konfigurationsfiles [1/2]

"Human-readable" XML-Files"Human-readable" XML-Files Bestimmen die Regeln für die Suche Bestimmen die Regeln für die Suche

nach der richtigen Assemblynach der richtigen Assembly("Assembly Binding")("Assembly Binding") Wo suchen?Wo suchen? Welche Version verwenden?Welche Version verwenden?

Page 27: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Konfigurationsfiles [2/2]Konfigurationsfiles [2/2]

Application Configuration FilesApplication Configuration Files Bestimmen für jede Applikation einzeln, Bestimmen für jede Applikation einzeln,

wie und wo nach Assemblies gesucht wirdwie und wo nach Assemblies gesucht wird

Publisher Configuration FilesPublisher Configuration Files Leiten Aufrufe an einzelne Shared Leiten Aufrufe an einzelne Shared

Assemblies auf neuere Versionen um (bei Assemblies auf neuere Versionen um (bei Bugfixes)Bugfixes)

Machine Configuration FilesMachine Configuration Files Gelten global für den gesamten ComputerGelten global für den gesamten Computer Überschreiben Application ConfigurationÜberschreiben Application Configuration

Page 28: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Konfigurationsfiles editierenKonfigurationsfiles editieren

„„Per Hand“ mit NotepadPer Hand“ mit Notepad Mit PlugIns der Management-KonsoleMit PlugIns der Management-Konsole

Windows XP: Windows XP: Systemsteuerung Systemsteuerung Verwaltung Verwaltung .NET Framework Konfiguration.NET Framework Konfiguration

Page 29: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Deployment Szenario 1Deployment Szenario 1

Einfaches XCopy DeploymentEinfaches XCopy Deployment Alle Files von MyOffice sollen in ein Alle Files von MyOffice sollen in ein

ApplikationsverzeichnisApplikationsverzeichnis

Page 30: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Deployment Szenario 1Deployment Szenario 1

Global Assembly Cache

C:\WINNT\ASSEMBLY

Applikationsverzeichnis

C:\PROGRAMME\MYOFFICE

C:\PROGRAMME\MYOFFICE\TOOLS

MyCalc.EXEMyCalc.EXE

MySpeller.DLLMySpeller.DLL

MyText.EXEMyText.EXE

XCOPY

Page 31: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

DemoDemo

Deployment von „MyOffice“ per XCopyDeployment von „MyOffice“ per XCopy

Page 32: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Deployment Szenario 2Deployment Szenario 2

Verschieben von Komponenten in Verschieben von Komponenten in UnterverzeichnisseUnterverzeichnisse MySpeller soll in das Unterverzeichnis \MySpeller soll in das Unterverzeichnis \

Tools unterhalb des Applikations-Tools unterhalb des Applikations-verzeichnis verschoben werdenverzeichnis verschoben werden

Dieser Pfad muß im Application Dieser Pfad muß im Application Configuration File eingetragen werdenConfiguration File eingetragen werden

Page 33: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Deployment Szenario 2Deployment Szenario 2

Global Assembly Cache

C:\WINNT\ASSEMBLY

Applikationsverzeichnis

C:\PROGRAMME\MYOFFICE

C:\PROGRAMME\MYOFFICE\TOOLS

MyCalc.EXEMyCalc.EXE

MyText.EXE.config

MyText.EXE.config

MyText.EXEMyText.EXE

MySpeller.DLLMySpeller.DLL

<?xml version="1.0" encoding="utf-8" ?><configuration> <runtime> <assemblyBinding xmlns="urn:schemas-

microsoft-com:asm.v1"> <probing privatePath="tools;"/> </assemblyBinding> </runtime></configuration>

Wo istMySpeller?

Page 34: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

DemoDemo

Verschieben der Komponente Verschieben der Komponente „MySpeller“„MySpeller“

Page 35: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Deployment Szenario 3Deployment Szenario 3

"MySpeller" soll eine Shared Assembly "MySpeller" soll eine Shared Assembly werdenwerden MySpeller muß einen StrongName MySpeller muß einen StrongName

bekommenbekommen MySpeller.DLL muß in den GAC kopiert MySpeller.DLL muß in den GAC kopiert

werden (Tool: GACUtil.EXE oder VS) werden (Tool: GACUtil.EXE oder VS) Die Runtime lädt jetzt MySpeller aus dem Die Runtime lädt jetzt MySpeller aus dem

GAC, und nicht mehr aus dem GAC, und nicht mehr aus dem ApplikationsverzeichnisApplikationsverzeichnis

Page 36: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Deployment Szenario 3Deployment Szenario 3

Global Assembly Cache

C:\WINNT\ASSEMBLY

Applikationsverzeichnis

C:\PROGRAMME\MYOFFICE

C:\PROGRAMME\MYOFFICE\TOOLS

MyCalc.EXEMyCalc.EXE

MyText.EXE.config

MyText.EXE.config

MyText.EXEMyText.EXE

MySpeller.DLLMySpeller.DLL

MySpeller.DLLMySpeller.DLL

Wo istMySpeller?

Page 37: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

DemoDemo

Signieren von „MySpeller“ und Signieren von „MySpeller“ und Installation im Global Assembly CacheInstallation im Global Assembly Cache

Page 38: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Deployment Szenario 4 [1/2]Deployment Szenario 4 [1/2]

Ein neue Version von MySpeller ist Ein neue Version von MySpeller ist verfügbarverfügbar

Alle Applikationen, die MySpeller Alle Applikationen, die MySpeller verwenden, sollen mit der neuen verwenden, sollen mit der neuen Version arbeitenVersion arbeiten Ein Publisher Policy File kann die Aufrufe Ein Publisher Policy File kann die Aufrufe

der alten Version an die neue Version der alten Version an die neue Version "umleiten""umleiten"

Page 39: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Deployment Szenario 4Deployment Szenario 4

Global Assembly Cache

C:\WINNT\ASSEMBLY

Applikationsverzeichnis

C:\PROGRAMME\MYOFFICE

C:\PROGRAMME\MYOFFICE\TOOLS

MyCalc.EXEMyCalc.EXE

MyText.EXE.config

MyText.EXE.config

MyText.EXEMyText.EXE

MySpeller.DLLMySpeller.DLL

MySpeller.DLLVersion 1.0

MySpeller.DLLVersion 1.0

policy.1.0.MySpeller.DLL

policy.1.0.MySpeller.DLL

MySpeller.DLLVersion 1.5

MySpeller.DLLVersion 1.5

<configuration> <runtime> <assemblyBinding xmlns="…" <dependentAssembly> <assemblyIdentity name="MySpeller" <bindingRedirect oldVersion="1.0.0.0" newVersion="1.5.0.0"/> </dependentAssembly> </assemblyBinding> </runtime>

</configuration>

Page 40: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

DemoDemo

Deployment der neuen Version von Deployment der neuen Version von „MySpeller“ und Konfiguration der „MySpeller“ und Konfiguration der Client-ApplikationenClient-Applikationen

Page 41: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Deployment Szenario 4 [2/2]Deployment Szenario 4 [2/2]

Moment mal… einige Applikationen Moment mal… einige Applikationen haben Probleme mit dieser neuen haben Probleme mit dieser neuen Version!Version! Einzelne Applikationen können in ihrem Einzelne Applikationen können in ihrem

Application Configuration File bestimmen, Application Configuration File bestimmen, daß die vorherige Version verwendet wird daß die vorherige Version verwendet wird ("Safe Mode")("Safe Mode")

Page 42: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Deployment Szenario 4Deployment Szenario 4

Global Assembly Cache

C:\WINNT\ASSEMBLY

Applikationsverzeichnis

C:\PROGRAMME\MYOFFICE

C:\PROGRAMME\MYOFFICE\TOOLS

MyCalc.EXEMyCalc.EXE

MyText.EXE.config

MyText.EXE.config

MyText.EXEMyText.EXE

MySpeller.DLLMySpeller.DLL

MySpeller.DLLVersion 1.0

MySpeller.DLLVersion 1.0

policy.1.0.MySpeller.DLL

policy.1.0.MySpeller.DLL

MySpeller.DLLVersion 1.5

MySpeller.DLLVersion 1.5<?xml version="1.0" encoding="utf-8" ?>

<configuration> <runtime> <assemblyBinding <dependentAssembly> <assemblyIdentityname="MySpeller"/> <publisherPolicy apply="no"/> </dependentAssembly> </assemblyBinding> </runtime></configuration>

Page 43: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

DemoDemo

„„MyCalc“ zur Verwendung der MyCalc“ zur Verwendung der vorherigen Version von „MySpeller“ vorherigen Version von „MySpeller“ zwingenzwingen

Page 44: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Komponenten mit integrierterKomponenten mit integrierterSetup-RoutineSetup-Routine Manche Komponenten funktionieren Manche Komponenten funktionieren

nicht „standalone“, sondern erfordern nicht „standalone“, sondern erfordern Konfiguration der UmgebungKonfiguration der Umgebung Erstellen von DatenbankenErstellen von Datenbanken Setup von Message QueuesSetup von Message Queues

Komponenten können selbst Code Komponenten können selbst Code enthalten, der bei ihrer (De-)Installation enthalten, der bei ihrer (De-)Installation ausgeführt wirdausgeführt wird

Page 45: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Die Custom Installer-KlasseDie Custom Installer-Klasse

Eine Custom Installer-Klasse innerhalb Eine Custom Installer-Klasse innerhalb der Komponente erbt von der Komponente erbt von System.Configuration.Install.InstallerSystem.Configuration.Install.Installer

Überschreibt entsprechende Methoden, Überschreibt entsprechende Methoden, um bei der Installation Aktionen um bei der Installation Aktionen auszuführenauszuführen InstallInstall UnInstallUnInstall RollbackRollback

Page 46: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Aufruf der Custom Installer -MethodenAufruf der Custom Installer -Methoden

Komandozeilen-Tool Komandozeilen-Tool InstalUtil.exeInstalUtil.exe Custom Action innerhalb einer Custom Action innerhalb einer

Microsoft Installer Package (MSI-Datei)Microsoft Installer Package (MSI-Datei)

Page 47: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

DemoDemo

„„MySpeller“-Datenbank über MySpeller“-Datenbank über InstallUtil.exe installierenInstallUtil.exe installieren

Page 48: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Setup-Projekte mit VS .NETSetup-Projekte mit VS .NET

Visual Studio . NET bietet gute Visual Studio . NET bietet gute Unterstützung der MSI-TechnologieUnterstützung der MSI-Technologie Projekttyp „Setup Project“Projekttyp „Setup Project“ Wizard hilft bei der ErstellungWizard hilft bei der Erstellung

.NET-Deployment Features sind .NET-Deployment Features sind integriertintegriert Installation von Shared Assemblies in den Installation von Shared Assemblies in den

Global Assembly CacheGlobal Assembly Cache Aufruf von CustomInstaller-Methoden Aufruf von CustomInstaller-Methoden

durch Custom Actionsdurch Custom Actions

Page 49: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Vorteile der MSI-TechnologieVorteile der MSI-Technologie

Transaktionsbasierte InstallationTransaktionsbasierte Installation „„Alles oder nichts“Alles oder nichts“ Saubere DeinstallationSaubere Deinstallation

LoggingLogging Unterstützung von InstallationsmodiUnterstützung von Installationsmodi

„„Vollständig“, „Typisch“, Vollständig“, „Typisch“, „Benutzerdefiniert“„Benutzerdefiniert“

Dritthersteller-Tool (InstallShield, WISE) Dritthersteller-Tool (InstallShield, WISE) wird benötigt wird benötigt

Konfigurierbare BenutzeroberflächeKonfigurierbare Benutzeroberfläche

Page 50: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

DemoDemo

MSI-Paket für „MyOffice“ mit Visual MSI-Paket für „MyOffice“ mit Visual Studio .NET erstellenStudio .NET erstellen

Page 51: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Deployment der Runtime [1/2]Deployment der Runtime [1/2]

Windows .NET Server enthält als erstes Windows .NET Server enthält als erstes Betriebssystem die .NET RuntimeBetriebssystem die .NET Runtime

Für alle anderen Systeme ab Windows Für alle anderen Systeme ab Windows 98 kann die .NET Runtime separat 98 kann die .NET Runtime separat installiert werdeninstalliert werden

Page 52: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Deployment der Runtime [2/2]Deployment der Runtime [2/2]

Standalone Executable: Standalone Executable: DotNetFx.EXEDotNetFx.EXE Ca. 21 MB groß, installiert komplette Ca. 21 MB groß, installiert komplette

RuntimeRuntime

DotNetFx.EXE kann per Bootstrapper DotNetFx.EXE kann per Bootstrapper installiert werden (silent mode)installiert werden (silent mode) Siehe Siehe

http://msdn.microsoft.com/library/defaulthttp://msdn.microsoft.com/library/default.asp?url=/.asp?url=/librarylibrary//en-usen-us//dnnetdepdnnetdep//htmlhtml//vsredistdeploy.aspvsredistdeploy.asp

Page 53: Deployment und Versioning von.NET Applikationen Uwe Baumann Technologieberater Developer Group Microsoft GmbH uwebaum@microsoft.com.

Vielen Dank!Vielen Dank!

Fragen kostet nichts…Fragen kostet nichts…