Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen der Sprachsyntax
3 Klassendesign
4 Weitere Datentypen
5 Multithreading
6 Collections und LINQ
7 Eingabe und Ausgabe
8 Anwendungen: Struktur und Installation
9 Code erstellen und debuggen
10 Einige Basisklassen
11 Windows-Anwendungen erstellen
12 Die wichtigsten Steuerelemente
13 Tastatur- und Mausereignisse
14 MDI-Anwendungen
15 Grafiken mit GDI+
16 Drucken
17 Entwickeln von Steuerelementen
18 Programmiertechniken
19 WPF – Grundlagen
20 Layoutcontainer
21 WPF-Steuerelemente
22 Konzepte von WPF
23 Datenbankverbindung mit ADO.NET
24 Datenbankabfragen mit ADO.NET
25 DataAdapter
26 Offline mit DataSet
27 Datenbanken aktualisieren
28 Stark typisierte DataSets
A Anhang: Einige Übersichten
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual Basic 2008 von Andreas Kuehnel, Stephan Leibbrandt
Das umfassende Handbuch
Buch: Visual Basic 2008

Visual Basic 2008
3., aktualisierte und erweiterte Auflage, geb., mit DVD
1.323 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1171-0
Pfeil 8 Anwendungen: Struktur und Installation
Pfeil 8.1 Bibliotheken
Pfeil 8.1.1 Projekte in einer Projektmappe
Pfeil 8.1.2 Zugriffsmodifikatoren
Pfeil 8.1.3 Einbinden einer Klassenbibliothek
Pfeil 8.2 Assemblies
Pfeil 8.2.1 Struktur einer Assembly
Pfeil 8.2.2 Globale Assemblies
Pfeil 8.3 Konfigurationsdateien
Pfeil 8.3.1 Die verschiedenen Konfigurationsdateien
Pfeil 8.3.2 Struktur einer Anwendungskonfigurationsdatei
Pfeil 8.3.3 Anwendungskonfigurationsdatei automatisch erstellen
Pfeil 8.3.4 Anwendungskonfiguarionsdatei auswerten
Pfeil 8.3.5 Editierbare, anwendungsbezogene Einträge mit <appSettings>
Pfeil 8.3.6 Versionsumleitung in einer Konfigurationsdatei
Pfeil 8.3.7 Die Herausgeberrichtliniendatei
Pfeil 8.4 Weitergabe mit MS-Installer
Pfeil 8.4.1 Weitergabeprojekte
Pfeil 8.4.2 Windows-Installer
Pfeil 8.4.3 Setup-Projekt
Pfeil 8.4.4 Editoren eines Weitergabeprojekts
Pfeil 8.4.5 Dateisystem-Editor
Pfeil 8.4.6 Der Registrierungs-Editor
Pfeil 8.4.7 Dateityp-Editor
Pfeil 8.4.8 Benutzeroberflächen-Editor
Pfeil 8.4.9 Editor für benutzerdefinierte Aktionen
Pfeil 8.4.10 Editor für Startbedingungen
Pfeil 8.5 ClickOnce-Verteilung
Pfeil 8.5.1 Erstellen einer ClickOnce-Anwendung
Pfeil 8.5.2 Die Installation einer ClickOnce-Anwendung


Rheinwerk Computing - Zum Seitenanfang

8.4 Weitergabe mit MS-Installer Zur nächsten ÜberschriftZur vorigen Überschrift

Für lokale .NET-Anwendungen, die ausschließlich mit ihrem eigenen Verzeichnis auskommen, reicht für eine Installation ein einfacher Kopierbefehl. Insbesondere sind weder Systemdateien noch die Registrierungsdatenbank betroffen. Haben Sie nur solche Anwendungen, können Sie diesen Abschnitt getrost überspringen. Wollen Sie dem Benutzer aber eine grafische Installationsoberfläche bieten oder außer der eigentlichen Anwendung noch andere Teile des Computers beeinflussen, brauchen Sie einen Installer. In Visual Studio wählen Sie dazu im Projektauswahldialog innerhalb des Knotens Setup und Bereitstellung eine Projektvorlage.


Rheinwerk Computing - Zum Seitenanfang

8.4.1 Weitergabeprojekte Zur nächsten ÜberschriftZur vorigen Überschrift

Visual Studio 2008 stellt Ihnen sechs verschiedene Weitergabeprojekttypen zur Verfügung:

  • Setup-Projekt
  • Websetup-Projekt
  • Merge-Modulprojekt
  • CAB-Projekt
  • CAB-Projekt für intelligente Geräte
  • Setup-Assistent (weniger Möglichkeiten, aber später änderbar)

Websetup-Projekt und Setup-Projekt

Diese beiden Typen unterscheiden sich darin, woher das Installationsprogramm die zu installierenden Dateien nimmt. Bei einem Setup-Projekt ist es das Dateisystem auf einem Rechner, bei einem Websetup-Projekt ein virtuelles Verzeichnis auf einem Webserver.

Merge-Modulprojekte

Ein Merge-Modulprojekt ist kein Setup-Projekt im eigentlichen Sinne und kann daher auch nicht eigenständig installiert werden. Ein Merge-Modul wird in andere Weitergabeprojekte integriert und erleichtert damit nur das Erstellen mehrerer Installationsprogramme, die identische Komponenten beinhalten. Merge-Module lassen sich daher besser mit DLL-Dateien vergleichen, denen eine ähnliche Aufgabe zukommt.

CAB-Projekte

CAB-Dateien beinhalten komprimierte Dateien, die zu einem leicht zu verteilenden Paket zusammengeschnürt werden. Eine CAB-Datei kann wie ein Merge-Modul in anderen Projekten verwendet werden, eignet sich aber auch zur Weitergabe von Dateien über das Internet.


Hinweis
Wir werden uns in diesem Kapitel nur mit dem Setup-Projekt beschäftigen.



Rheinwerk Computing - Zum Seitenanfang

8.4.2 Windows-Installer Zur nächsten ÜberschriftZur vorigen Überschrift

Bei den Dateien, die bei der Kompilierung eines Setup-Projekts erzeugt werden, handelt es sich im Wesentlichen nur um setup.exe und eine komprimierte Datei mit der Dateierweiterung .MSI. Die Datei setup.exe hat die Aufgabe zu überprüfen, ob auf dem Zielrechner der Windows Installer installiert ist. Falls er nicht installiert ist, wird in Abhängigkeit vom Betriebssystem entweder die Datei InstMsiW.exe oder die Datei InstMsiW.exe installiert (die Situation ist unwahrscheinlich, weil .NET ihn bereits zur Installation gebraucht hat). Erst danach kann die MSI-Datei installiert werden, die alle Dateien und Informationen zum Installationsprozess enthält.


Rheinwerk Computing - Zum Seitenanfang

8.4.3 Setup-Projekt Zur nächsten ÜberschriftZur vorigen Überschrift

Zuerst erstellen wir ein Setup-Projekt. Da der Projektbezeichner den Namen der MSI-Datei bestimmt, sollten Sie einen aussagekräftigen Namen wählen (siehe Abbildung 8.12).

Abbildung 8.12 Setup-Projekt

Außer zu Testzwecken werden Sie keine Debuginformation mit ausliefern wollen. Sie sollten daher zuerst eine Release-Version des Projekts kompilieren. Die Umschaltung dazu erfolgt in der Symbolleiste der Entwicklungsumgebung. Im linken Fensterteil fügen Sie die zu installierende Anwendung dem Anwendungsordner hinzu, benutzte Bibliotheken werden in der Regel automatisch mit eingebunden. In Abbildung 8.13 wurde GacAnwendung aus Abschnitt 8.2.2, »Globale Assemblies«, hinzugefügt.

Abbildung 8.13 Setup-Anwendung

Kompilieren des Weitergabeprojekts

Sind alle Einstellungen vorgenommen (einschließlich der, die wir noch erörtern werden), muss das Projekt nur noch kompiliert werden. Die vorgenommenen Einstellungen werden in einer Datei mit der Erweiterung VDPROJ gespeichert. Es ist eine reine Textdatei, die allerdings nicht verändert werden sollte. Vorausgesetzt, die Release-Konfiguration wurde erstellt, befinden sich die zu verteilenden Dateien im Unterordner Release des Setup-Projekts. Es handelt sich dabei um die Datei setup.exe, mit der die Installation gestartet wird, sowie um eine MSI-Datei mit den komprimierten Dateien des Projekts.


Hinweis
Sie können die Installation bzw. Deinstallation über den Kontextmenüeintrag In/Deinstallieren des Weitergabeprojekts ausführen.



Rheinwerk Computing - Zum Seitenanfang

8.4.4 Editoren eines Weitergabeprojekts Zur nächsten ÜberschriftZur vorigen Überschrift

Mit den Basiseinstellungen des Setup-Projekts wird der Benutzer willkommen geheißen. Dann wird ihm ein Vorschlag für das Installationsverzeichnis gemacht, der Fortschritt der Installation wird durch einen Fortschrittsbalken angezeigt, und am Ende wird die hoffentlich erfolgreiche Installation gemeldet.

Ein Installationsprogramm kann auch zusätzliche Ordner auf dem Zielrechner anlegen. Es lassen sich Bedingungen zur Installation bestimmter Dateien festlegen, Sie können zusätzliche Dialoge einbinden, Dateitypen können registriert werden usw. Ausgangspunkt sind die in Abbildung 8.14 gezeigten Weitergabeeditoren am oberen Rand des Weitergabeprojekts im Projektmappen-Explorers.

Abbildung 8.14 Symbolleiste eines Weitergabeprojekts im Projektmappen-Explorer

Von links nach rechts stehen in der Symbolleiste:

  • Eigenschaften: Dialogfenster zur Festlegung allgemeiner Verteilungsbedingungen.
  • Dateisystem-Editor: Hier werden die weiterzugebenden Dateien angegeben sowie die Ordner auf dem Zielrechner, in denen die Dateien installiert werden.
  • Registrierungs-Editor: Hier legen Sie Registrierungsschlüssel und -werte für den Zielrechner fest. Nach erfolgreicher Installation kann ein Programm darauf zugreifen.
  • Dateityp-Editor: Hier verknüpfen Sie die Anwendung mit Dateierweiterungen. Darüber hinaus werden die für den Dateityp zulässigen Aktionen festgelegt.
  • Benutzeroberflächen-Editor: Hier fügen Sie dem Installationsvorgang zusätzliche Dialoge hinzu. Dieser Editor bietet die größte Einflussmöglichkeit auf den Installationsprozess.
  • Editor für benutzerdefinierte Aktionen: Aktionen, die während der Installationsphase auf dem Zielrechner ausgeführt werden, zum Beispiel wenn ein Fehler auftritt oder im Falle einer Deinstallation.
  • Editor für Startbedingungen: Aktionen, die beim Fehlen von Dateien auf dem Zielrechner vor der Installation ausgeführt werden. Ein Beispiel ist die Nachinstallation von .NET.

Hinweis
Jeder Editor schreibt seine Bezeichnung in den Karteireiter des Fensters.



Rheinwerk Computing - Zum Seitenanfang

8.4.5 Dateisystem-Editor Zur nächsten ÜberschriftZur vorigen Überschrift

Der Dateisystem-Editor ist nach dem Start eines neuen Setup-Projekts geöffnet. Er enthält alle Dateien, die vom Installationsprogramm benötigt werden, beispielsweise die Symboldateien. Die Ordner im linken Fenster repräsentieren die Ordner auf dem Rechner, auf den installiert wird. Weitere Ordner können Sie über das Kontextmenü eines der Fensterteile hinzufügen (die grauen in Abbildung 8.15 existieren schon). Dadurch können Sie beispielsweise eine Anwendung in das Startmenü eintragen oder einen Link auf dem Desktop des Benutzers setzen.

Abbildung 8.15 Spezielle Ordner

Wenn Sie einen Ordnerknoten markieren, werden im Eigenschaftsfenster dessen Eigenschaften angezeigt. Tabelle 8.6 listet die wichtigsten auf.


Tabelle 8.6 Eigenschaften eines Dateisystemordners

Eigenschaft Beschreibung

AlwaysCreate

Bei True wird der Ordner auch angelegt, wenn er keine Dateien enthält.

Condition

Bedingung, die erfüllt sein muss, damit der Ordner installiert wird.

DefaultLocation

Standardinstallationsverzeichnis auf dem Zielrechner.

Transitive

Bei True wird bei jeder Installation der Anwendung die Condition-Eigenschaft ausgewertet, andernfalls nur bei der ersten Installation.


Die Eigenschaft DefaultLocation hat folgenden Wert:

[ProgramFilesFolder][Manufacturer]\[ProductName]

Für den Firmennamen Tollsoft und den Produktnamen MyFirstApp wird der Installations-ordner

C:\Programme\Tollsoft\MyFirstApp

angeboten. Standardmäßig ist der Produktname der Name des Projekts. Sie können sowohl den Produkt- als auch den Firmennamen in den Projekteigenschaften festlegen.


Hinweis
Viele der Eigenschaften des Setup-Projekts finden Sie in den Eigenschaften der MSI-Datei im Windows-Explorer wieder.


Die Spezifikation von DefaultLocation kann spezielle Ordnerreferenzen in eckigen Klammern enthalten. Alle erlaubten finden Sie in der MSDN-Library unter dem Stichwort Windows Installer unter Properties. Tabelle 8.7 gibt einen Auszug wieder.


Tabelle 8.7 Pfadbezogene Eigenschaften im Windows Installer

Eigenschaft Verzeichnis

AppDataFolder

Anwendungsdaten des aktuellen Benutzers

CommonAppDataFolder

Anwendungsdaten für alle Benutzer

CommonFilesFolder

\Programme\Gemeinsame Dateien des aktuellen Benutzers

DesktopFolder

Desktop

FavoritesFolder

Favoriten des aktuellen Benutzers

MyPicturesFolder

Eigene Bilder des aktuellen Benutzers

ProgramFilesFolder

Programme

SendToFolder

SendTo des aktuellen Benutzers

StartMenuFolder

Startmenü des aktuellen Benutzers

SystemFolder

Sytem32

TempFolder

Temp

TemplateFolder

Vorlagen des aktuellen Benutzers

WindowsFolder

Winnt


Hinzufügen von Dateien und Ordnern

Zu installierende Komponenten fügen Sie über die Untermenüpunkte Ordner, Projektausgabe, Datei und Assembly des Kontextmenüs AnwendungsordnerHinzufügen hinzu.

Die Entwicklungsumgebung fügt nicht nur die ausgewählte Programmdatei in das Weitergabeprojekt ein, sondern erkennt darüber hinaus auch alle Abhängigkeiten, sowohl die Abhängigkeit vom .NET Framework als auch die Abhängigkeit von benutzerdefinierten Bibliotheken (DLL-Dateien), die automatisch in das Projekt einbezogen werden.

Dateizugriff vom Programmcode

Wenn Sie davon ausgehen müssen, dass eine bestimmte Datei nicht auf dem Zielrechner in einem bestimmten Verzeichnis vorgefunden wird, müssen Sie die Datei in die Installationsroutine mit aufnehmen. Dazu eignet sich prinzipiell jedes Verzeichnis, das auf dem Zielrechner identifiziert werden kann. Möchten Sie die Datei im Anwendungsordner verteilen, fügen Sie die Datei dem gleichnamigen Knoten im Dateisystem-Editor hinzu.

Startmenü und Desktop-Icon

Im linken Teilfenster des Dateisystem-Editors werden Programmmenü- und Desktop-Ordner bereits angeboten. Sie müssen jeweils nur noch eine Verknüpfung zur Programmdatei einrichten. Dazu bieten sich zwei Wege an, die für beide Knoten identisch sind:

  • Wählen Sie den Kontextmenüpunkt Neue Verknüpfung erstellen im rechten Fenster des Knotens, und wählen Sie im erscheinenden Dialog die Anwendungsdatei.
  • Wählen Sie den Kontextmenüpunkt Verknüpfung erstellen zu... der Anwendungsdatei, und verschieben Sie den erzeugten Link in den entsprechenden Knoten.

Durch das Hinzufügen von Unterordnern können Sie den Link zur Anwendungsdatei in eine geeignete Untermenüstruktur verschieben. Sie sollten nicht vergessen, die automatisch generierten Verknüpfungsnamen umzubenennen.

Um einer Verknüpfung ein individuelles Symbol zuzuordnen, markieren Sie die Verknüpfung, klicken im Eigenschaftsfenster auf Icon und wählen aus der Dropdown-Liste die Option Durchsuchen aus. Im folgenden Dialog Symbol navigieren Sie zu der Symboldatei mit der Endung ICO, die Sie vorher dem Dateisystem-Editor an beliebiger Stelle hinzugefügt haben. Desktop-Icons sind 32×32 Pixel groß, das Programmmenü braucht 16×16 Pixel.

Da die Symboldateien zur Liste der zu verteilenden Dateien hinzugefügt wurden, werden sie normalerweise auf dem Zielrechner installiert. Um das zu vermeiden, können Sie die Eigenschaft Exclude dieser Dateien auf True einstellen. Die Folge ist, dass die Dateien dann nicht installiert werden, wohl aber bei der Installation zur Einrichtung verwendet werden. Sie werden nicht mehr im Dateisystem-Editor angezeigt, sondern im Projektmappenexplorer mit einem Verbotszeichen markiert.


Hinweis
Im Projektordner der Anwendung befindet sich bei Windows-Anwendungen die Symboldatei App.ico. Diese dient als Symbol, wenn im Windows-Explorer die Ansicht Große Symbole ausgewählt ist.


Cacheordner für globale Assembly

Eine besondere Bedeutung kommt dem Cacheordner für globale Assembly zu. Dateien, die Sie diesem Ordner hinzufügen, müssen einen starken Namen haben und werden automatisch im GAC (Global Assembly Cache) eingetragen. Intern wird demnach bei der Installation jede hier eingetragene Datei mit dem gacutil-Tool registriert.

Globale Assemblys, die Sie diesem Ordner hinzufügen, müssen nicht zwangsläufig auch unter Anwendungsordner aufgeführt sein. Verzichten Sie darauf, wird die Assembly nur im GAC eingetragen, kann aber nicht von anderen Anwendungen benutzt werden, denn über Verweise können in der Entwicklungsumgebung nur DLL-Dateien eingebunden werden. Möchten Sie die Dienste auch anderen Anwendungen zur Verfügung stellen, müssen Sie die Assemblierung deswegen zusätzlich in einem anderen Ordner eintragen. Meistens wird das auch der Anwendungsordner oder eines seiner Unterverzeichnisse sein.


Hinweis
Verteilen Sie zusammen mit der globalen Assembly eine Publisher-Richtlinien-Assembly, muss diese auch im Cacheordner für globale Assembly angegeben werden.



Rheinwerk Computing - Zum Seitenanfang

8.4.6 Der Registrierungs-Editor Zur nächsten ÜberschriftZur vorigen Überschrift

Die Registrierungsdatenbank ist die zentrale interne Datenbank von Windows. Da sie unabhängig von der zu installierenden Anwendung ist, können zum Beispiel dort Informationen abgelegt werden, die beim ersten Start der Anwendung bereits benötigt werden. Ich persönlich mag sie nicht, denn sie macht Anwendungen unflexibel und undurchschaubar für andere. Zum Beispiel können Sie eine installierte Anwendung nicht mal eben auf ein anderes Laufwerk verschieben und weiterarbeiten. Oder versuchen Sie mal herauszubekommen, welche Anwendungen automatisch beim Systemstart auch starten (etwa 30 Schlüssel). Schließlich können andere fehlerhafte Anwendungen aus Versehen Ihre Schlüssel ändern.

Im Registrierungs-Editor werden die Registrierungsschlüssel angezeigt, die den Standardregistrierungsschlüsseln von Windows entsprechen:

  • HKEY_CLASSES_ROOT
  • HKEY_CURRENT_USER
  • HKEY_LOCAL_MACHINE
  • HKEY_USERS
  • Benutzer/Computer-Hive

Die unter Benutzer/Computer-Hive eingegebenen Unterschlüssel und Werte werden im Knoten HKEY_CURRENT_USER installiert, wenn ein Benutzer bei der Installation die Option Aktueller Benutzer wählt. Wenn ein Benutzer bei der Installation Alle Benutzer auswählt, werden die Angaben im Schlüssel HKEY_USERS eingetragen.


Anmerkung

Die Auswahl Aktueller Benutzer bzw. Alle Benutzer erfolgt in dem Dialog der Installation, in dem der Benutzer den Installationsordner bestätigt oder neu angibt.


Einen neuen Unterschlüssel legen Sie über das Kontextmenü eines Knotens an; beliebig tiefe Gliederungsstrukturen sind erlaubt. Soll zu einem Schlüssel ein Wert definiert werden, müssen Sie zuerst den Datentyp festlegen. Es kann sich dabei um eine Zeichenfolge, einen Umgebungs-Zeichenfolgewert, einen Binärwert oder einen DWORD-Wert handeln. Anschließend wird dem Wert ein passender Name zugewiesen. Das kann sowohl im rechten Teilfenster des Registrierungs-Editors erfolgen als auch im Eigenschaftsfenster unter Value.

In Abbildung 8.16 ist im Registrierungs-Editor ein Schlüssel eingetragen, der TestKey heißt. Der Wert ist vom Typ String und beschreibt eine zugewiesene Zeichenfolge, die zumindest einmal nach der Installation angezeigt werden soll.


Hinweis
Jeder Schlüssel darf genau einen Standardwert haben. Sie legen ihn fest, indem Sie dem Wert einen leeren Namen geben (Kontextmenü), der als (Standard) angezeigt wird.


Abbildung 8.16 Der Registrierungs-Editor mit einem zusätzlichen Schlüssel

Die Eigenschaft DeleteAtUninstall eines Schlüssels scheint keinen Effekt zu zeigen, da die Schlüsseleinträge einer Anwendung nach der Deinstallation immer gelöscht werden.


Rheinwerk Computing - Zum Seitenanfang

8.4.7 Dateityp-Editor Zur nächsten ÜberschriftZur vorigen Überschrift

Dieser Editor legt das Doppelklickverhalten und Kontextmenüeinträge für Dateien gegebener Endungen fest. Über das Kontextmenü des Knotens Dateitypen auf dem Zielcomputer fügen Sie eine oder mehrere Dateitypen hinzu. Sie erscheinen im Dateityp-Editor als untergeordnete Knoten, denen Sie passende Namen geben sollten. Standardmäßig ist mit &Öffnen jedem Knoten sofort eine Aktion zugeordnet.

Eigenschaften eines Dateityps

Der Knoten eines zu verknüpfenden Dateityps hat mehrere Eigenschaften (siehe Tabelle 8.8).


Tabelle 8.8 Eigenschaften eines registrierten Dateityps

Eigenschaft Beschreibung

Command

Ausführbare Datei, die bei einer Aktion mit diesem Dateityp gestartet wird

Description

Anzeige in der Spalte Typ in der Detailansicht des Windows Explorers

Extensions

Durch Semikolon getrennte zu registrierende Dateierweiterungen ohne *

Icon

Symbol, das für die Dateien dieses Typs angezeigt werden soll

MIME

Zuzuordnende MIME-Typen (Multipurpose Internet Mail Extensions helfen Webbrowser und E-Mail bei der Verarbeitung binärer Daten.)

Name

Der im Dateityp-Editor verwendete Name


EllipseButton.tifNachdem Sie der Eigenschaft Extensions eine oder auch mehrere durch Semikolon getrennte Dateierweiterungen zugeordnet haben, legen Sie die mit den Erweiterungen verbundene Anwendung in der Eigenschaft Command fest (der Button öffnet einen Auswahldialog). Sie wird bei allen noch festzulegenden Aktionen aufgerufen. Meistens ist es eine EXE-Datei, die unter Anwendungsordner zu finden ist.

Sie sollten zur besseren (professionelleren) Identifikation für den Dateityp mit der Icon-Eigenschaft ein individuelles Symbol festlegen. Die dazugehörige ICO-Datei muss ebenfalls im Dateisystem-Editor dem Weitergabeprojekt hinzugefügt worden sein. Zuletzt tragen Sie unter Description noch eine Zeichenfolge ein, die in der Detailansicht des Windows Explorers den Benutzern eine informative Beschreibung des Dateityps anzeigt.

Aktionen

Jeder neue Dateitypeintrag hat standardmäßig die Aktion &Öffnen. Als Standardaktion ist sie fett geschrieben und wird durch einen Doppelklick ausgelöst.


Hinweis
Nur die oberste Position eines Dateitypknotens ist die Standardaktion. Sie können Aktionen durch Drag&Drop verschieben.


Das Kontextmenü einer Datei im Windows Explorer zeigt alle der für den Dateityp spezifizierten Aktionen mit dem in der Eigenschaft Name angegebenen Namen. Das & vor einem Buchstaben kennzeichnet ein Tastenkürzel für den schnelleren Zugriff. Eine typische Aktion ist das Drucken eines Dokuments.


Hinweis
Alle Aktionen starten die unter Command angegebene Anwendung mit den unter Arguments angegebenen Argumenten. "%x" ist das x-te Argument, "%1" der Pfad zur Anwendung.


Nehmen wir als Beispiel die hier verwendete GacAnwendung. Sie hat eine Main-Methode, die die übergebenen Argumente als Zeichenkettenarray entgegennimmt und ausdruckt. Zur Erinnerung sehen Sie hier noch einmal den Quelltext:


'...\Applikation\GacAnwendung\Programm.vb

Module Programm 
  Sub Main(args() As String) 
    Dim g As New GacTest.GacKlasse() 
    For no As Integer = 1 To args.Length 
      Console.WriteLine("{0}: {1}", no, args(no – 1)) 
    Next 
    Console.WriteLine(g.Version()) 
    Console.ReadLine() 
  End Sub 
End Module

Abbildung 8.17 zeigt die beiden Aktionen Öffnen und Report, die beide mit den Dateiendungen .xxx und .zzz verknüpft sind.

Abbildung 8.17 Aktionen im Dateityp-Editor

Im Eigenschaftsfenster sind für die zweite Aktion spezielle Argumente eingetragen.

Abbildung 8.18 Aktionenargumente

Nach der Installation finden Sie die Aktionen im Kontextmenü.

Abbildung 8.19 Kontextmenü der installierten Anwendung

Die gezeigte Aktion führt zur Ausgabe der Argumente (siehe das Listing etwas weiter oben).

1: Pfad 
2: C:\TestInstall\MeinDocument.xxx 
Zweite Version

Wenn Sie im Programm GacAnwendung die übergebenen Argumente in Kontrollstrukturen auswerten, können Sie beliebige Reaktionen der Aktion implementieren.


Rheinwerk Computing - Zum Seitenanfang

8.4.8 Benutzeroberflächen-Editor Zur nächsten ÜberschriftZur vorigen Überschrift

Dieser Editor legt die Abfolge der bei der Installation gezeigten Dialoge fest. Der Knoten Installation definiert die Installation auf der lokalen Maschine, der Knoten Administratorinstallation die Installation im Netzwerk. Die Dialoge der in Abbildung 8.20 gezeigten Standardinstallation sind nur wenig beeinflussbar. Durch eigene Dialoge können Sie aber die volle Kontrolle erlangen. Auch eine automatische Installation ohne alle Dialoge ist erlaubt. Da die Dialoge immer nur als Standard-Icon angezeigt werden, empfiehlt sich eine Testinstallation.

Abbildung 8.20 Der Benutzeroberflächen-Editor

Eigenschaften der Standard-Installationsdialoge

Die Eigenschaften in Tabelle 8.9 sind nicht in allen dieser Dialoge zu finden.


Tabelle 8.9 Eigenschaften der Standard-Installationsdialoge

Eigenschaft Beschreibung

BannerBitmap

Bitmap- oder JPEG-Grafikdatei, die im Dialog angezeigt wird

CopyrightWarning

Text für einen Copyright-Vermerk im Dialog Willkommen

ShowProgressBar

Gibt an, ob der Fortschrittsbalken im Dialog Status angezeigt werden soll.

UpdateText

Text, der im Dialog Fertig angezeigt werden soll

WelcomeText

Text, der im Dialog Willkommen angezeigt werden soll


Die Dialoge zeigen am oberen Rand in einem Bereich von 500×70 Pixel eine Hintergrundgrafik an, deren Pfad die Eigenschaft BannerBitmap speichert. Die im Dateisystem-Editor hinzugefügte BMP- oder JPEG-Grafikdatei wird weder gestreckt noch gestaucht. Es scheint keine Möglichkeit zu geben, die Beschriftung durch eine andere zu ersetzen.

Die im Dialog Willkommen angezeigte Warnung vor Urheberrechtsverletzung in der Eigenschaft CopyrightWarning sollten Sie anpassen, denn »US-amerikanische Urheberrechtsgesetze« scheinen mir in Europa unpassend. Die Begrüßung in WelcomeText ist allgemeiner:

Der Installer wird Sie durch die zur Installation von [ProductName] erforderlichen Schritte führen.

Den Fortschrittsbalken im Dialog Status können Sie mit der Eigenschaft ShowProgressBar ausschalten. Im letzten Standarddialog Fertig werden dem Benutzen in UpdateText Hinweise gegeben. Der Standardtext bezieht sich auf das .NET Rahmenwerk:

Prüfen Sie mit Windows Update, ob wichtige Aktualisierungen für .NET Framework zur Verfügung stehen.

Weitere Dialoge einfügen

In jede der drei Gruppen Starten, Status und Beenden können Sie nach Bedarf weitere Dialoge einfügen. Jeder Dialog darf nur einmal in einem Weitergabeprojekt verwendet werden. Die Dialoge sind keine normalen Fenster. Sie haben eine begrenzte Auswahl zur Verfügung:

  • Der Splash-Dialog zeigt eine Begrüßungsbitmap an.
  • Der Button Benutzer registrieren im gleichnamigen Dialog ruft eine beliebige ausführbare Datei auf.
  • Im Dialog Kundeninformationen gibt der Anwender seinen Namen, den Namen der Firma und optional einer Seriennummer ein.
  • Den Lizenzvertrag im Dialog Lizenzvertrag muss der Benutzer lesen und bestätigen.
  • Der Dialog Infodatei zeigt einen Text an.
  • je ein Dialog mit zwei, drei oder vier Optionsschaltflächen
  • drei Dialoge mit bis zu vier Kontrollkästchen
  • drei Dialoge mit bis zu vier Textfeldern

Dialoge fügen Sie über die Kontextmenüpunkte Dialogfeld hinzufügen der Knoten Installation und Administratorinstallation hinzu.

Der Dialog Splash

Die Eigenschaft SplashBitmap spezifiziert eine Bitmap oder JPEG-Datei für den 480×320 Pixel großen Anzeigebereich des Bildes, das weder gestreckt noch gestaucht wird. Mit der Voreinstellung Sunken=True wird die Grafik innerhalb des Rahmens abgesenkt dargestellt. Zur Fortsetzung muss der Anwender selbst auf eine Weiter-Schaltfläche klicken.

Der Dialog Benutzer registrieren

Der Dialog zeigt eine Schaltfläche Jetzt registrieren, die eine beliebige von Ihnen unter Executable angegebene ausführbare Datei aufruft. Zusätzliche Befehlszeilenargumente tragen Sie in der Eigenschaft Arguments ein. Abbildung 8.21 zeigt einen Ausschnitt mit dem festen Text (der Wert SetupDemo von ProductName wird automatisch eingesetzt) und der Schaltfläche.

Abbildung 8.21 Benutzer registrieren

Der Dialog Kundeninformationen

Der Dialog fordert vom Benutzer die Eingabe seines Namens, seiner Firma und optional der Seriennummer (siehe Abbildung 8.22).

Abbildung 8.22 Der Dialog »Kundeninformationen«

Neben BannerBitmap besitzt dieser Dialog die drei in Tabelle 8.10 gezeigten speziellen Eigenschaften.


Tabelle 8.10 Eigenschaften des Dialogs »Kundeninformationen«

Eigenschaft Beschreibung

SerialNumberTemplate

Vorlage zur Überprüfung der eingegebenen Seriennummer

ShowOrganization

Gibt an, ob das Feld Organisation angezeigt wird.

ShowSerialNumber

Gibt an, ob das Feld Seriennummer angezeigt wird.


Wird vom Anwender die Angabe einer Seriennummer verlangt, muss er sich an das in der Eigenschaft SerialNumberTemplate gegebene Muster halten. Der Windows Installer addiert die an den Platzhalterstellen # stehenden Zahlen (siehe Tabelle 8.11). Ist die Summe nicht durch sieben teilbar, wird ein Meldungsfenster angezeigt, und die Installation kann nicht fortgesetzt werden.


Tabelle 8.11 Platzhalter der Eigenschaft SerialNumberTemplate

Platzhalter Beschreibung

#

Eine Zahl, die nicht vom Überprüfungsalgorithmus erfasst wird

%

Eine Zahl, die vom Überprüfungsalgorithmus erfasst wird

?

Ein vom Überprüfungsalgorithmus nicht erfasstes alphanumerisches Zeichen

^

Ein Zeichen in Großschreibung oder eine vom Überprüfungsalgorithmus nicht erfasste Zahl

-

Kennzeichnung, dass ein neues Eingabefeld beginnt (selbst keine Eingabe)


Die Schablone SerialNumberTemplate steht in spitzen Klammern, zum Beispiel:

<#%%-##%#%%#>

Bei der Installation werden zwei Eingabefelder angezeigt: In das erste muss der Anwender drei Zahlen eingeben, in das zweite sieben. Die Summe aus der ersten, vierten, fünften, siebten und zehnten Zahl muss durch sieben teilbar sein. Der Mechanismus ist eine einfache Hürde gegen unrechtmäßige Installationen.

Nur die beiden Platzhalterkombinationen »^« mit »?« und »#« mit »%« werden gemeinsam in einem Eingabefeld angezeigt – es sei denn, mit einem Bindestrich werden separate Eingabefelder erzwungen. Alle anderen Kombinationen führen dazu, dass zwischen den Platzhaltern intern ein Bindestrich gesetzt wird.

Der Dialog Lizenzvertrag

Dieser Dialog zeigt einen Lizenzvertrag, den der Benutzer lesen (sollte) und bestätigen muss. Die Weiter-Schaltfläche wird erst dann aktiviert, wenn der Benutzer auf die Optionsschaltfläche Ich stimme zu klickt (siehe den Ausschnitt in Abbildung 8.23).

Die Lizenzinformationen sind in einer RTF-Datei gespeichert, die natürlich auch im Dateisystem-Editor hinzugefügt werden muss. Ein RTF-Dokument können Sie beispielsweise mit WordPad erstellen. In der Eigenschaft LicenseFile des Dialogs geben Sie die Datei an. Außer bei der Eigenschaft BannerBitmap können Sie mit der Eigenschaft Sunken den Inhalt der Lizenzinformationen in einem abgesenkten Rahmen darstellen.

Abbildung 8.23 Der Dialog »Lizenzvertrag«

Der Dialog Infodatei

Es gibt nur zwei Unterschiede zum Dialog Lizenzvertrag. Statt in LicenseFile steht der Dateipfad in ReadmeFile. Außerdem fehlt eine die Weiter-Schaltfläche blockierende Optionsschaltfläche Ich stimme zu.

Dialoge mit Optionsschaltflächen

Die Dialoge mit zwei, drei oder vier sich ausschließenden Auswahlmöglichkeiten dürfen je maximal einmal verwendet werden. Mit diesem Dialog können Sie beispielsweise den Anwender eine Sprache wählen lassen. Die Auswahl des Anwenders wird während des Installationsprozesses ausgewertet und berücksichtigt. Abbildung 8.24 zeigt die Eigenschaften des Dialogs.

Abbildung 8.24 Eigenschaften von Optionsschaltflächen

Für Abbildung 8.25 wurde BannerText der Wert Lingua gegeben und BodyText der Text Choisissez une langue s.v.p. zugewiesen. Als Beschriftung der Auswahlmöglichkeiten habe ich English für Button1Label und Deutsch für Button2Label gewählt. Button1Value ist der Wert, den die erste Optionsschaltfläche zurückliefert, wenn sie ausgewählt ist. Entsprechend ist es Button2Value für die zweite. Die Eigenschaft ButtonProperty benennt die Schaltflächengruppe. Der Name muss eindeutig bezüglich der gesamten Installation sein. Die letzte Eigenschaft ist DefaultValue. Sie selektiert die Optionsschaltfläche vor, die den angegebenen Wert in ihrer Value–Eigenschaft hat.


Hinweis
Inkonsistenzen, zum Beispiel identische Werte für Optionsschaltflächen, fallen erst während der Installation auf.


Abbildung 8.25 Dialog mit zwei Optionsschaltflächen

Auf die Auswahl können Sie in der Condition-Eigenschaft von zu installierenden Komponenten zugreifen, indem Sie den in der Eigenschaft ButtonProperty festgelegten Namen verwenden. Ihm wird automatisch der zur Auswahl korrespondierende Wert zugewiesen. Nur wenn die Condition-Eigenschaft leer oder ihr Wert True ist, wird die Komponente installiert. Dateien, Ordner, Registrierungseinträge sowie benutzerdefinierte Aktionen und Startbedingungen haben eine Condition-Eigenschaft. Hat in unserem Beispiel die Datei Lizenz.rtf unter Condition den Wert LANGUAGE=13 eingetragen und wurde Deutsch gewählt, wird die Datei installiert.

Dialoge mit Kontrollkästchen

Diese drei identischen Dialoge haben bis zu vier Kontrollkästchen, die Sie einzeln mit Visible=False ausblenden können. Jedes Kästchen kann die Werte Checked oder Unchecked annehmen und wird in der Condition-Eigenschaft von zu installierenden Komponenten unter dem Property-Namen angesprochen, zum Beispiel als CHECKBOXA3 (entspricht LANGUAGE des vorigen Abschnitts). Ansonsten sind die Eigenschaften und die Nutzung ganz analog zu den im letzten Abschnitt beschriebenen Optionsschaltflächen.


Hinweis
Achten Sie wegen des identischen Aufbaus der drei Dialoge auf eine eindeutige Benennung der Kästchen (die Standardnamen gewährleisten dies bereits).


Dialoge mit Textfeldern

Diese drei Dialoge zeigen bis zu vier Textfelder für individuelle Benutzereingaben. Die Beschriftungen stehen in je einer Label-Eigenschaft, die Vorbelegung steht in einer Value-Eigenschaft, und der Name, der in Condition-Eigenschaften verwendet wird, steht in einer Property -Eigenschaft.


Hinweis
Achten Sie wegen des identischen Aufbaus der drei Dialoge auf eine eindeutige Benennung der Textfelder (die Standardnamen gewährleisten dies bereits).



Rheinwerk Computing - Zum Seitenanfang

8.4.9 Editor für benutzerdefinierte Aktionen Zur nächsten ÜberschriftZur vorigen Überschrift

Der Editor hat vier Bereiche: Installieren, Commit ausführen, Rollback und Deinstallieren (siehe Abbildung 8.26). Jedem dieser Bereiche kann über sein Kontextmenü eine benutzerdefinierte Aktion zugeteilt werden – also nichts anderes als eine Datei, die ausgeführt wird (EXE, DLL oder Skript). Die Dateien müssen natürlich zum Weitergabeprojekt gehören.

Abbildung 8.26 Editor für benutzerdefinierte Aktionen

Der Knoten Installieren enthält die Aktionen, die am Ende der Installationsphase ausgeführt werden sollen, also wenn alle anderen Dateien bereits installiert worden sind. Während der Installation kann es zu Fehlern kommen. Wollen Sie in dieser Situation bestimmte Operationen automatisch ausführen lassen, tragen Sie diese unter dem Knoten Rollback ein. Nach einer erfolgreichen Installation werden alle Aktionen ausgeführt, die unter dem Knoten Commit ausführen eingetragen sind.

Benutzerdefinierte Aktionen im Knoten Deinstallieren werden aufgerufen, wenn eine Anwendung deinstalliert wird.


Rheinwerk Computing - Zum Seitenanfang

8.4.10 Editor für Startbedingungen topZur vorigen Überschrift

Ob eine Anwendung überhaupt installiert werden kann beziehungsweise in welchem Umfang eine Installation erfolgt, kann mit dem Editor für Startbedingungen festgelegt werden. So können Sie zum Beispiel nach einer bestimmten Datei suchen, nach Registrierungseinträgen oder auch nach der Information, ob auf dem Zielcomputer das passende .NET Framework installiert ist.

Die Einstellungen im Editor für Startbedingungen werden vor Beginn der Installation überprüft. Ist das Ergebnis negativ, kann das Installationsprogramm zwei Dinge tun:

  • Die Installation wird mit einer Fehlermeldung abgebrochen.
  • Die Installation wird fortgesetzt. Möglicherweise werden dabei auch die Voraussetzungen dafür geschaffen, dass die Anwendung später problemlos ausgeführt werden kann.

Die Oberfläche des Editors

Unterhalb des Stammknotens Anforderungen für den Zielcomputer sind mit Zielcomputer durchsuchen und Startbedingungen bereits zwei untergeordnete Knoten eingetragen. Letzterer sucht auf dem Zielrechner nach dem .NET Framework und kann nicht gelöscht werden. Das Kontextmenü des ersten Kindknotens hat die drei in Abbildung 8.27 gezeigten Startkonditionen.

Abbildung 8.27 Der Editor für Startbedingungen

Bedingungen

Alle unter dem Knoten Startbedingungen angegebenen Bedingungen werden der Reihe nach ausgewertet. Jede der Bedingungen hat drei Eigenschaften:

  • Condition: ein boolescher Ausdruck, der das Ergebnis der Bedingung formuliert
  • InstallUrl: die lokale Adresse oder Internetadresse, die bei einem Klick auf die Schaltfläche Ja des »gescheitert«-Dialogs an den Windows Explorer geschickt wird
  • Message: Text im »gescheitert«-Dialog Der Dialog hat die Schaltflächen Ja und Nein.

Die erste Bedingung, deren Condition-Eigenschaft den Wert False ergibt, führt zum Abbruch und zeigt einen Dialog mit den Schaltflächen Ja und Nein, dem Produktnamen in der Titelleiste und dem Text der Message-Eigenschaft. Die gesamte Installation findet nicht statt.

In der Condition-Eigenschaft können Sie Werte von Optionsschaltflächen, Kontrollkästchen oder der nun folgenden Zielcomputersuche verwenden. Diese muss nicht für die Startbedingungen verwendet werden, sondern kann auch die Installation einzelner Komponenten steuern. Zum Beispiel unterdrückt Condition = NOT FILEEXISTS1 die Installation einer Komponente, wenn die Zielcomputersuche namens FILEEXISTS1 den Wert False ergibt (die Datei also bereits existiert).


Hinweis
Condition-Eigenschaften dürfen boolesche Operatoren wie NOT, AND, OR und = enthalten. Die Installation wird abgebrochen, wenn der Wert False ist.


.NET Framework-Startbedingung

Die wichtigste Voraussetzung zur Installation und Ausführung eines .NET-Programms ist, dass das .NET Framework auf dem Zielcomputer vorhanden ist – natürlich in der richtigen Version. Die Common Language Runtime sowie die .NET Framework-Komponenten sind in der Datei dotnetfx.exe enthalten, die es in mehreren Sprachversionen gibt.

Der Editor für Startbedingungen fügt automatisch eine entsprechende unlöschbare Startbedingung hinzu. Die für die Anwendung erforderliche Version des .NET Frameworks tragen Sie in der Eigenschaft Version ein. Mit AllowLaterVersions können Sie höhere Versionen des .NET Frameworks als die angegebene akzeptieren.

Suche nach einer Datei

Nach der Auswahl im Kontextmenü benennen Sie das neue Element und selektieren es. Im Eigenschaftsfenster legen Sie mit Folder und FileName den Dateipfad fest. Die Eigenschaft MinDate, MinSize und MinVersion sowie die korrespondierenden Max-Varianten schränken die Suche zusätzlich ein. Das Suchergebnis ist True oder False und kann in der Condition-Eigenschaft einer zu installierenden Komponente unter dem Namen angesprochen werden, der in der Property-Eigenschaft festgelegt ist, zum Beispiel FILEEXISTS1.

Suche nach Registrierungseinträgen

Elemente, die nach einem Eintrag in der Registry suchen, haben fünf Eigenschaften:

  • Name: Bezeichnung der Suche
  • Property: Name in Condition-Eigenschaften
  • RegKey: Schlüsselpfad (relativ zu Root und ohne Value)
  • Root: Wurzelknoten (vsdrrHKLM, vsdrrHKCU, vsdrrHKCR, vsdrrHKU)
  • Value: Schlüsselwert

Das Programm regedit.exe zeigt die Registrierungsdatenbank in einer halbwegs lesbaren Form. Wenn Sie hier unbekümmert agieren, können Sie sich Ihr gesamtes System unwiederbringlich zerstören.

Suche nach einer Windows-Installer-Startbedingung

Die Formulierung einer Windows-Installer-Startbedingung dient zur Suche nach einer Komponente, die in der Registrierungsdatenbank mit einer GUID (Globally Unique Identifier) eingetragen ist. Die GUID, eine 128-Bit-Zahl, die als Zeichenfolge beschrieben wird, muss in der Eigenschaft ComponentID eingetragen werden. Ansonsten unterscheiden sich die Suche nach der Komponente und die Auswertung des Suchergebnisses nicht von der Suche nach einer Datei oder eines Registrierungseintrags.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Visual Basic 2008
Visual Basic 2008
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Rheinwerk-Shop: Windows Presentation Foundation






 Windows Presentation
 Foundation


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern