Weitergabe von WPF/C#/SQLite-Anwendungen

Wenn Sie ein Abonnement des Magazins 'DATENBANKENTWICKLER' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.

Weitergabe von WPF/C#/SQLite-Anwendungen

Die bisher bekannte Methode im Rahmen der Entwicklung von Anwendung in diesem Magazin war das Kopieren des bin/debug-Verzeichnisses auf den Zielrechner. In dieser Ausgabe wollen wir uns nun ansehen, wie Sie Anwendungen mit den Bordmitteln von Visual Studio 2015 in der Community-Edition weitergeben können. Die Möglichkeiten sind beschränkt, aber für die meisten Fälle durchaus ausreichend.

Voraussetzungen

Für Testzwecke wollen wir unser bisher in diesem Magazin besprochene Anwendung Bestellverwaltung weitergeben. Dazu benötigen Sie die Erweiterung Visual Studio Installer Projects, die Sie über den Dialog Extensions und Updates installieren können (Menüeintrag Extras|Extensions und Updates...). Klicken Sie dort auf Online und geben Sie Install als Suchbegriff ein. Sie finden dann den Eintrag Microsoft Visual Studio 2015 Installer Projects, den Sie per Mausklick herunterladen und anschließend installieren können.

Weitergabe-Projekte

Visual Studio bietet, wenn Sie ein neues Projekt erstellen, einige Einträge im Bereich Vorlagen|Andere Projekttypen|Visual Studio Installer (siehe Bild 1).

Weitergabe-Projekte

Bild 1: Weitergabe-Projekte

Von diesen Projekttypen ist für unsere Zwecke nur einer interessant, nämlich Setup Project: Dieser erstellt eine Datei mit dem Namen Setup.exe sowie eine weitere namens .msi.

Aus zwei mach eins

Nun werden Sie sich vermutlich fragen, wie Sie die Anwendung auf Basis des weiterzugebenden Projekts und das Setup-Projekt zusammenbringen sollen. Das ist gar nicht so schwer: Wir öffnen einfach die Projektmappe mit dem weiterzugebenden Projekt (also die .sln-Datei) und fügen der Projektmappe das Setup-Projekt hinzu. Dazu klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projektmappen-Element und wählen aus dem Kontextmenü den Eintrag Hinzufügen|Neues Projekt aus (siehe Bild 2). Im nun erscheinenden Dialog Neues Projekt wählen Sie dann die bereits weiter oben genannte Projektvorlage Setup Project aus und erstellen diese unter dem Namen InstallBestellverwaltung im Verzeichnis der Projektmappe, welches hier bereits voreingestellt sein dürfte (diese Bezeichnung wird als Name für die .msi-Datei verwendet und im Setup-Dialog als Titelzeile eingeblendet, also wählen Sie diesen sorgfältig aus). Im Gegensatz zu dem oben abgebildeten Dialog Neues Projekt enthält der vom Projektmappen-Explorer aus gestartete Dialog nicht das Textfeld Projektmappenname. Logisch, denn wir fügen ja einer Projektmappe ein neues Projekt hinzu.

Hinzufügen eines Setup-Projekts

Bild 2: Hinzufügen eines Setup-Projekts

Nach dem Erstellen des neuen Projekts erscheint dieses im Projektmappen-Explorer in der gleichen Ebene wie das Projekt selbst (siehe Bild 3).

Zwei Projekte in einer Projektmappe

Bild 3: Zwei Projekte in einer Projektmappe

Dateisystem-Editor

Nun erscheint der FileSystem-Editor (siehe Bild 4).

Der nach dem Erstellen des Setup-Projekts eingeblendete FileSystem-Editor.

Bild 4: Der nach dem Erstellen des Setup-Projekts eingeblendete FileSystem-Editor.

Sollten Sie diesen einmal versehentlich schließen, können Sie ihn über den Kontextmenü-Eintrag View|Dateisystem des Setup-Projekts wieder einblenden (siehe Bild 5). Dies gilt auch für die anderen Editoren des Setups, auf die wir später zu sprechen kommen.

Aufruf der verschiedenen Editoren des Setups

Bild 5: Aufruf der verschiedenen Editoren des Setups

Quelle hinzufügen

Nun fügen wir allerdings erst einmal die Information über die Dateien hinzu, die im Setup landen sollen. Dazu klicken Sie mit der rechten Maustaste auf den Eintrag Application Folder im Dateisystem-Editor und wählen dort den Kontextmenü-Befehl Add|Projektausgabe aus (siehe Bild 6).

Hinzufügen der Projektausgabe

Bild 6: Hinzufügen der Projektausgabe

Damit öffnen Sie den Dialog aus Bild 7, der im oberen Kombinationsfeld den Namen des Projekts enthalten sollte, dessen Ausgabe in das Setup aufgenommen werden soll – hier also Bestellverwaltung. In der Liste darunter soll der Eintrag Primäre Ausgabe markiert sein. Klicken Sie auf OK, um den Dialog zu schließen.

Projektausgabegruppe festlegen

Bild 7: Projektausgabegruppe festlegen

Damit kommt Leben in die Sache. Sowohl im Projektmappen-Explorer, der nun einige Einträge unterhalb des bis dahin leeren Elements Detected Dependencies enthält, landen diese auch im Ordner Application Folders des FileSystem-Editors – nebst dem Element Primäre Ausgabe from Bestellverwaltung (Active) (siehe Bild 8).

Gefüllter Application Folder

Bild 8: Gefüllter Application Folder

Zielverzeichnis einstellen

Nun legen wir fest, wo auf dem Zielrechner die Anwendung landen soll. Dazu klicken Sie wiederum mit der rechten Maustaste auf den Eintrag Application Folder und wählen diesmal den Kontextmenü-Eintrag Eigenschaftenfenster aus. Hier finden Sie die Eigenschaft DefaultLocation vor, die in unserem Beispiel standardmäßig den Wert [ProgramFilesFolder][Manufacturer][ProductName] enthält (siehe Bild 9). Die einzelnen Elemente werden bei der Installation ersetzt. Den Wert für ProgramFilesFolder ermittelt das Setup abhängig vom Zielsystem. Die beiden anderen Einstellungen, Manufacturer und ProductName, können Sie selbst in den Eigenschaften des Projekts festlegen.

Zielverzeichnis festlegen

Bild 9: Zielverzeichnis festlegen

Dazu wechseln Sie im Projektmappen-Explorer zu dem Eintrag für das Install-Projekt (hier InstallBestellverwaltung). Aktivieren Sie mit F4 die Anzeige der Eigenschaften, erscheint der Dialog aus Bild 10. Hier stellen Sie dann etwa die Eigenschaften Manufacturer, ProductName oder Title ein. Wir haben hier Werte verwendet, mit denen wir bei einem ersten Test schnell erkennen können, welche Eigenschaft wo im Setup landet – also etwa Eigenschaften_Manufacturer für Manufacturer.

Einstellen der Setup-Eigenschaften

Bild 10: Einstellen der Setup-Eigenschaften

Setup erstellen

Danach erstellen wir das Setup. Dazu speichern Sie vorsichtshalber alle Änderungen (Menüeintrag Datei|Alles speichern). Anschließend öffnen Sie mit dem Menüeintrag Erstellen|Konfigurations-Manager... den Konfigurations-Manager. Dieser zeigt die beiden Projekte der aktuellen Projektmappe an. Hier stellen Sie nun für beide Einträge unter Konfiguration den Wert Release ein und markieren jeweils die Option Erstellen (siehe Bild 11). Schließen Sie den Dialog dann wieder.

Konfigurieren der Erstellung

Bild 11: Konfigurieren der Erstellung

Wählen Sie dann den Menüeintrag Erstellen|Projektmappe erstellen aus. Nach dem Erstellen des Setups finden Sie im Ordner ...InstallBestellverwaltungRelease die beiden Dateien InstallBestellverwaltung.msi und setup.exe (siehe Bild 12).

Setup-Dateien

Bild 12: Setup-Dateien

Unterschied .msi und setup.exe

Wozu benötigen Sie diese beiden Dateien? Aktuelle Windows-Systeme sind mit dem Windows Installer ausgestattet. Klicken Sie doppelt auf die .msi-Datei, wird diese mit dem Windows Installer geöffnet. Die .msi-Datei ist eine Datenbankdatei, welche Informationen über die zu installierende Anwendung und gegebenenfalls die Anwendung und weitere benötigte Dateien selbst enthält. Die Datei setup.exe ist eine Bootstrapper-Datei. Diese führt nicht die Installation durch, sondern prüft, ob die korrekte Version des Windows Installers auf dem Zielsystem installiert ist und ruft diese dann für die .msi-Datei auf.

Test der Installation

Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.

Bitte geben Sie die Zeichenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.

Neues aus unseren Magazinen
Listenfeld: Reihenfolge mehrerer Einträge...

Wir haben bereits in mehreren Beiträgen beschrieben, wie Sie die individuelle Reihenfolge von Elementen einer Tabelle über den Inhalt eines Feldes etwa namens »ReihenfolgeID« einstellen können –... [mehr]

Diagramme mit gefilterten Daten

In Ausgabe 2/2019 haben wir in zwei Artikeln die modernen Diagramme von Access vorgestellt. Im vorliegenen Beitrag zeigen wir Ihnen, wie Sie diese abhängig von den in einem Formular angezeigten... [mehr]

Benutzerverwaltung mit verschlüsselten...

Wenn Sie in einer Access-Anwendung Benutzer verwalten wollen, die sich per Benutzername und Kennwort an die Anwendung anmelden, sollten Sie sehr sensibel mit den in der Anwendung gespeicherten... [mehr]

HTML-Tabellen mit fester Kopfzeile

In den vorherigen Ausgaben von Access im Unternehmen und in der aktuellen Ausgabe arbeiten wir in einigen Beiträgen mit dem Webbrowser-Steuerelement und stellen Daten, die wir mit den Bordmitteln... [mehr]

Flexible HTML-Tabellen mit fester Kopfzeile

Im Beitrag »HTML-Tabellen mit fester Kopfzeile« haben wir gezeigt, wie Sie Daten aus einer bestimmten Abfrage in einem Webbrowser-Steuerelement so anzeigen, dass die Spaltenköpfe oben fixiert... [mehr]

Berechtigungen per HTML verwalten

Im Beitrag »Benutzerverwaltung mit verschlüsselten Kennwörtern« stellen wir eine Lösung vor, in der wir die Berechtigungen von Benutzergruppen an Datenbankobjekten definieren. Dort benötigen wir... [mehr]

Benutzer und Berechtigungen ermitteln

In den Beiträgen »Benutzerverwaltung mit verschlüsselten Kennwörtern« und »Berechtigungen per HTML verwalten« haben wir die Voraussetzungen für eine Benutzerverwaltung geschaffen. Im vorliegenden... [mehr]

Zugriffsrechte mit Datenmakros

Es gibt verschiedene Möglichkeiten, auf Basis des aktuell angemeldeten Benutzers sicherzustellen, dass dieser nur die für ihn vorgesehenen Aktionen mit Daten durchführen darf – beispielsweise durch... [mehr]

Kennwörter generieren

Für den einen oder anderen Zweck möchten Sie vielleicht Kennwörter generieren oder in einer Benutzeroberfläche die Möglichkeit zum Generieren von Kennwörtern anbieten. Wenn Sie etwa Benutzer zu... [mehr]

Neuer Datensatz von Frontend zu Backend

Für manche Themen gibt es keine kurze, prägnante Überschrift. In diesem Fall wollen wir zeigen, wie Sie einen neuen Datensatz anlegen, der in einer temporären Tabelle im Frontend gespeichert wird,... [mehr]