Eine hybride Visual Basic 6.0- und Visual Basic .NET-Anwendung bereitstellen

Sales Support: Eine hybride Visual Basic 6.0- & Visual Basic 2005-Anwendung, Teil 4

Scott Swigart

Februar 2008

Zusammenfassung: Dieser Artikel ist der letzte einer vierteiligen Serie, die zeigt, wie eine bestehende Microsoft Visual Basic 6.0-Anwendung durch Funktionalität, die man von modernen Anwendungen erwartet, verbessert werden kann. In diesem Teil dreht sich alles um die Themen Bereitstellung und Installation.

Inhalte

Einführung

Abhängigkeiten der Anwendung

Den VBNET_Extensions Installer erstellen

Aus VBNET_Extensions eine für SalesSupport83 erforderliche Komponente machen

Die Setup.exe des Bootstrappers erstellen

Zusammenfassung

@@HINWEIS: Inhaltsverzeichnis als mit den Bereichen verlinken@@

Einführung

Diese Artikelserie, „Sales Support: Eine hybride Visual Basic 6.0- & Visual Basic 2005-Anwendung“, beschreibt, wie eine vorhandene Microsoft Visual Basic 6.0-Anwendung verbessert werden kann, indem man sie um Features erweitert, die heutzutage von einer modernen Anwendung erwartet werden. Die Verbesserungen und Erweiterungen der Anwendung wurden in Microsoft Visual Basic .NET codiert, und zwar weil dies produktiver und für die gewünschte Funktionalität besser geeignet ist.

Die entscheidende Botschaft dieser Artikelserie ist, dass die bestehende Visual Basic 6.0-Anwendung nicht nach Visual Basic .NET migriert werden muss, um die gewünschte Funktionalität zu erhalten. Die vorhandene Anwendung wurde mithilfe von ein wenig Visual Basic .NET Code verbessert. Dieses Verfahren sollten Sie dringend in Erwägung ziehen, wenn Sie eine umfangreiche Visual Basic 6.0-Codebasis besitzen, die Sie weiterhin warten und verbessern.

In Teil 1 dieser Artikelserie, „Eine Visual Basic 6.0-Anwendung durch die Integration der Windows-Desktopsuche und von Office Outlook erweitern“, habe ich gezeigt, dass es nicht erforderlich ist, eine Visual Basic 6.0-Anwendung nach Visual Basic 2005 zu migrieren, um die Vorteile der .NET-Funktionalität nutzen zu können. Stattdessen können Sie die Microsoft Windows-Desktopsuche in eine Visual Basic 6.0-Anwendung integrieren, indem Sie COM-Objekte verwenden, die mit Visual Basic 2005 erstellt wurden.

In Teil 2, „Eine Visual Basic 6.0-Anwendung um den MapPoint-Webdienst erweitern“, habe ich gezeigt, wie die gleiche Anwendung Karten für Adressen aus einer bestehenden Datenbank anzeigen kann, indem der Microsoft MapPoint-Webdienst verwendet wird.

In Teil 3, „Eine Visual Basic 6.0-Anwendung um das ReportViewer-Steuerelement erweitern“, habe ich gezeigt, wie die Anwendung um Berichtsmöglichkeiten erweitert werden kann.

Wenn Sie die bisherigen Artikel noch nicht gelesen haben, empfehle ich Ihnen auf jeden Fall den ersten Teil zu lesen, der Sie mit der Anwendung vertraut macht. Dieser Artikel befasst sich ausschließlich mit Fragen zur Bereitstellung bzw. Installation.

Abhängigkeiten der Anwendung

Wenn Sie die Bereitstellung planen, ist es wichtig, die Abhängigkeiten der Anwendung zu verstehen. Im vorliegenden Fall handelt es sich bei Sales Support um eine Visual Basic 6.0-Anwendung, die von Erweiterungen abhängt, die in Visual Basic .NET geschrieben wurden. Die Abhängigkeiten der Anwendungen zeigt das Diagramm aus Abbildung 1.

Cc299498.9f6c6bd9-278f-4796-b713-3fb1f5825385(de-de,VS.80).gif

Abbildung 1: Die Abhängigkeiten der Anwendung

Die verschiedenen Komponenten dieser Anwendung müssen als Teil der Bereitstellung verpackt werden. Die Anwendung Sales Support wird durch eine traditionelle Setup.exe installiert, die der Microsoft Visual Studio 6.0 Package and Deployment-Assistent erstellt hat. Die DLL VBNET_Extensions, in der sich die in den bisherigen Teilen beschriebene Funktionalität befindet, wird von einem Visual Studio 2005-Setupprojekt verpackt. Die Anwendung benötigt außerdem Microsoft SQL Server 2005 und Microsoft .NET Framework 2.0, die ebenfalls von der Sales Support-Installation verpackt werden.

Die Installation ist ein wenig kompliziert, weil sowohl eine vorhandene Visual Basic-Anwendung als auch die VB.NET-Komponenten, das .NET Framework sowie SQL Server 2005 Express Edition installiert werden müssen. Jede dieser Komponenten besitzt einen eigenen Installer. Diese Installer müssen jedoch auf irgendeine Art miteinander verbunden werden, damit der Endanwender nur eine einzige Setup.exe starten muss, um alles, was nötig ist, zu installieren.

Um dies zu ermöglichen, wird eine Setup.exe benötigt, die als Bootstrapper fungiert. Ein Bootstrapper kann mehrere benötigte Pakete installieren und dann das Setupprogramm der Hauptanwendung starten. Auf diese Weise können .NET Framework 2.0, SQL Server 2005 Express Edition und VBNET_Extensions als für die Anwendung Sales Support benötigte Komponenten installiert werden.

Cc299498.033a70a5-3199-4d20-977b-d8e3c7c64288(de-de,VS.80).gif

Abbildung 2: Die Schritte beim Erstellen des kompletten Installers

Die erste Komponente, die erstellt werden muss, ist der Installer für die DLL VBNET_Extensions. Dies wird mit einem Visual Studio 2005-Setupprojekt erledigt und ist in Kasten (1) von Abbildung 2 dargestellt.

Ein Bootstrapper kennt das Konzept von erforderlichen Komponenten. Erforderliche Komponenten sind solche, die vor der Installation der Hauptanwendung installiert werden müssen. Sie können eingebaute erforderliche Komponenten verwenden, wie .NET Framework oder SQL Server 2005 Express Edition. Im Hinblick auf die Anwendung Sales Support muss VBNET_Extensions als erforderliche Komponente installiert werden. Das Tool Bootstrap Manifest Generator wird verwendet, um den Installer für VBNET_Extensions zu konfigurieren und so kann er als erforderliche Komponente festgelegt werden, was Kasten (2) von Abbildung 2 zeigt.

Anschließend wird MSBuild verwendet, um die Setup.exe mit dem Bootstrapper zu erzeugen und alle erforderlichen Installer in den Bereitstellungsordner zu kopieren. Wenn MSBuild fertig ist, besitzen Sie einen einzelnen Ordner, der die Setup.exe, alle erforderlichen Komponenten und den Installer der Visual Basic 6.0-Anwendung enthält. Der gesamte Ordner könnte dann in einen freigegebenen Netzwerkordner oder auf eine CD kopiert werden.

Wenn die Bootstrapperdatei Setup.exe ausgeführt wird, werden die erforderlichen Komponenten in der in Abbildung 2 gezeigten Reihenfolge installiert und anschließend wird der Installer der Anwendung Sales Support aufgerufen.

Dies sind eine ganze Reihe verschiedener Schritte und wenn Sie mit dem Thema Bereitstellung noch nicht so vertraut sind, kann dies ein wenig verwirrend sein. Jedoch ist jeder Schritt in dem gesamten Prozess recht gradlinig; die nachfolgenden Abschnitte beschreiben detailliert, wie die verschiedenen Teile der Installation erstellt werden.

Den VBNET_Extensions Installer erstellen

Visual Studio ermöglicht es, in eine vorhandene Projektmappe ein Setupprojekt einzufügen. Dieser Projekttyp stellt eine Funktionalität zur Verfügung, die mit der des Visual Basic 6.0 Package and Deployment-Assistenten identisch ist, und macht es recht einfach, eine Visual Basic .NET-Anwendung oder eine DLL bereitzustellen.

Cc299498.fc04613c-7631-4e85-ad85-2ec22035f40d(de-de,VS.80).gif

Abbildung 3: In die Projektmappe VBNET_Extensions ein Setupprojekt einfügen

Wenn Sie eine Bereitstellung erstellen, besteht der erste Schritt darin festzulegen, was bereitgestellt werden soll. Mit dieser Bereitstellung soll die DLL VBNET_Extensions bereitgestellt werden, die die Forms enthält, die Sie in den Bildschirmabbildungen in den anderen Teilen der Artikelserie gesehen haben. Hierzu wurde im Projektmappen-Explorer das Projekt VBNET_Extensions_Install mit der rechten Maustaste angeklickt und dann der Befehl Add | Project Output (Hinzufügen | Projektausgabe) gewählt. Hierdurch wird das Dialogfeld Add Project Output Group (Projektausgabegruppe hinzufügen) angezeigt, das Sie in Abbildung 4 sehen.

Cc299498.fd52cc39-75f2-48cc-ad94-5684c1cc6e6c(de-de,VS.80).gif

Abbildung 4: Das Dialogfeld Add Project Output Group

Im Dialogfeld Add Project Output Group ist zu erkennen, dass die primäre Ausgabe des Projekts VBNET_Extensions verpackt und bereitgestellt werden soll. Üblicherweise ist die primäre Ausgabe die ausführbare Datei der Anwendung oder, wie in unserem Fall, die DLL VBNET_Extensions.

Nachdem VBNET_Extensions als primäre Ausgabe in das Setupprojekt VBNET_Extensions_Install eingefügt wurde, erkennt Visual Studio automatisch weitere Abhängigkeiten und fügt diese als weitere Zieldateien ein. Sie können sich ansehen, was installiert wird, indem Sie das Projekt VBNET_Extensions_Install mit der rechten Maustaste anklicken und dann den Befehl View | File System (Ansicht | Dateisystem) wählen. Wie in Abbildung 5 zu erkennen ist, werden die Assembly Microsoft.InteropFormsTools und weitere Assemblies, die vom ReportViewer-Steuerelement benötigt werden, mit der Anwendung gebündelt und auf dem Zielsystem im Anwendungsordner bereitgestellt (bei dem es sich standardmäßig um einen Ordner unterhalb von C:\Program Files bzw. C:\Programme handelt).

Cc299498.2ef547f0-c8d2-42c5-8802-4c096cbbe96d(de-de,VS.80).gif

Abbildung 5: Dateien, die im Anwendungsordner bereitgestellt werden

In vielen Fällen müssen Installationsprogramme Aktionen durchführen, die über das Kopieren von Dateien in den richtigen Ordner hinausgehen. In unserem Beispiel muss die Anwendung eine Datenbankdatei installieren und diese Datei mit SQL Server 2005 Express Edition verbinden. Diese Vorgänge werden am besten mit benutzerdefinierten Aktionen vorgenommen. Der einfachste Weg, um eine benutzerdefinierte Aktion zu erstellen, besteht darin, in die Projektmappe ein neues Projekt des Typs Klassenbibliothek einzufügen. In diesem Projekt des Typs Klassenbibliothek können Sie den Code für alle Operationen aufnehmen, die als Teil der Installation durchgeführt werden müssen.

Um die benutzerdefinierten Aktionen für die Komponente VBNET_Extensions durchführen zu können, wird eine Klassenbibliothek mit dem Namen InstallerClassLibrary in die Projektmappe eingefügt. In dieses Projekt wird ein Element des Typs InstallerClass eingefügt. Bei InstallerClass handelt es sich um eine Klasse, die von der Basisklasse System.Configuration.Install.Installer abgeleitet ist. Diese Basisklasse ermöglicht es Windows Installer, Methoden dieser Klasse während Installation, Commit, Rollback und Deinstallation aufzurufen. Sie können für diese verschiedenen Phasen Code zur Verfügung stellen, indem Sie die Methoden der Basisklasse überschreiben. Ein Beispiel hierfür zeigt Listing 1.

    Public Overrides Sub Install( _
        ByVal stateSaver As System.Collections.IDictionary)

        Dim sf As New StatusForm
        sf.Message = "Select a server where the database should be installed."

        sf.ShowDialog()

        stateSaver.Add("DBInstance", sf.DBInstance)

        MyBase.Install(stateSaver)
    End Sub

Listing 1: Eine benutzerdefinierte Installationsaktion bereitstellen

Die Funktion Install untersucht den Computer, um zu ermitteln, welche Instanzen von SQL Server bereits installiert sind. Zwar wird SQL Server 2005 Express Edition gemeinsam mit der Anwendung installiert, aber es kann sein, dass bereits eine andere Instanz von SQL Server vorhanden ist. Durch die Verwendung einer benutzerdefinierten Aktion fragt Sie der Installer, an welche SQL-Server-Instanz Sie die Datenbank Sales Support anhängen möchten.

Außerdem wird die SQL Server-Datenbankdatei SalesSupport83.mdf in das Projekt InstallerClassLibrary eingefügt. So ist es möglich, die Datenbankdatei gemeinsam mit der Anwendung bereitzustellen.

Nachdem der Code für die benutzerdefinierte Aktion fertig ist, muss dieser ebenfalls vom Installer bereitgestellt werden. Hierzu wird das Setupprojekt VBNET_Extensions_Install mit der rechten Maustaste angeklickt und der Befehl Add | **Project Output (Hinzufügen | Projektausgabe)**aufgerufen. Diesmal wird jedoch im Listenfeld Project das Projekt InstallerClassLibrary markiert und es werden die Optionen Primary Output (Primäre Ausgabe) und Content Files (Inhaltsdateien) ausgewählt. Durch die Auswahl von Inhaltsdateien ist sichergestellt, dass die zusätzlichen Dateien ebenfalls bereitgestellt werden. Die Datenbankdatei SalesSupport83.mdf ist eine Inhaltsdatei und durch die Auswahl dieser Option wird diese Datei ebenfalls für die Bereitstellung verpackt.

Abschließend muss die InstallerClassLibrary mit dem Installer verbunden werden, damit sie während der Installationsphase des Installationsprozesses ausgeführt wird. Hierzu wird das Projekt VBNET_Extensions_Install mit der rechten Maustaste angeklickt und der Befehl View | Custom Actions (Ansicht | Benutzerdefinierte Aktionen) ausgewählt.

Im Fenster Custom Actions (Benutzerdefinierte Aktionen) können Sie den verschiedenen Phasen einer Installation benutzerdefinierte Aktionen zuweisen. Bei dieser Bereitstellung muss die InstallerClassLibrary während der Install-Phase aufgerufen werden. Hierzu wird Install (Installieren) mit der rechten Maustaste angeklickt und der Befehl Add Custom Action (Benutzerdefinierte Aktion hinzufügen) gewählt. Der Installer muss wissen, wo sich der ausführbare Code der benutzerdefinierten Aktion befindet. Dies verdeutlicht, warum die DLL mit der benutzerdefinierten Aktion gemeinsam mit Ihrer Anwendung bereitgestellt werden muss. Die Aktion wird während der Installation auf dem Zielcomputer ausgeführt und darum muss sie in diese Bereitstellung aufgenommen werden. In unserem Fall befindet sich der Code im Anwendungsordner und wird dort als „Primary output from InstallerClassLibrary“ angezeigt, wie in Abbildung 6 zu erkennen.

Cc299498.ec4c9f4f-76bb-445c-a985-7c7069f00f5d(de-de,VS.80).gif

Abbildung 6: Die benutzerdefinierte Aktion im Rahmen der Datenbankinstallation mit dem Installer verbinden

Die Installation kann nun erstellt werden, indem das Projekt VBNET_Extensions_Install mit der rechten Maustaste angeklickt und der Befehl Build (Erstellen) gewählt wird.

Aus VBNET_Extensions eine für SalesSupport83 erforderliche Komponente machen

Zum jetzigen Zeitpunkt sind die einzelnen Teile zum Installlieren der gesamten Anwendung fertig. Jedoch befindet sich die Installation nicht in einer einzigen Setup.exe-Datei. Der Benutzer muss die Visual Basic 6.0-Anwendung Sales Support installieren, dann .NET Framework 2.0 und SQL Server 2005 Express Edition. Und abschließend ist noch die Installation der DLL VBNET_Extensions erforderlich.

Um diese Komponenten zu integrieren, damit sie von einer einzigen Setupdatei installiert werden können, wird ein Bootstrapper benötigt. Der Bootstrapper installiert .NET Framework 2.0, SQL Server 2005 Express Edition und die VBNET_Extensions als für die Anwendung erforderliche Komponenten. Dann ruft der Bootstrapper die Setup.exe für SalesSupport83 auf, um so die Hauptanwendung zu installieren.

Um .NET Framework 2.0 und SQL Server 2005 Express Edition als erforderliche Komponenten installieren zu lassen, müssen lediglich ein paar Kontrollkästchen aktiviert werden. Da es sich bei der DLL VBNET_Extensions um eigenen Code handelt, muss ein wenig mehr Arbeit verrichtet werden, damit die DLL als erforderliche Komponente installiert wird. Dies lässt sich am einfachsten mit dem Bootstrap Manifest Generator (BMG) erledigen, der als kostenloses Produkt bei CodePlex erhältlich ist.

BMG ermöglicht es, aus einem vorhandenen Installer für eine Anwendung ein Paket zu machen, das als erforderliche Komponente verwendet werden kann. Um aus den VBNET_Extensions eine erforderliche Komponenten zu machen, wird BMG gestartet und dann der Projekttyp Package Manifest ausgewählt, wie es Abbildung 7 zeigt.

Cc299498.d5933b12-e93d-493b-8dd1-95443555fb16(de-de,VS.80).gif

Abbildung 7: Ein neues Package Manifest erstellen

Im nächsten Schritt werden Sie aufgefordert, Informationen zu dem Paket, das Sie erstellen wollen, einzugeben, wie in Abbildung 8 gezeigt.

Cc299498.af845a51-a7fa-4efa-94e4-2c0c92ff487d(de-de,VS.80).gif

Abbildung 8: Die Basisinformationen über das Paket eingeben

Anschließend teilen Sie BMG mit, wo sich der VBNET_Extensions Installer befindet. Hierzu klicken Sie in der Symbolleiste auf die Schaltfläche Add Install File, die sich direkt oberhalb des Wortes „Package“ befindet. Im Dialogfeld wird dann der MSI-Installer für VBNET_Extensions ausgewählt, wie in Abbilduzng 9 zu sehen.

Cc299498.408f5f87-3dbc-42f1-b0d3-e866f460145a(de-de,VS.80).gif

Abbildung 9: Auswahl des VBNET_Extensions Installers, um ein erforderliches Paket zu erstellen

Wenn die Setup.exe des Bootstrappers die erforderlichen Komponenten installiert, muss sie wissen, ob die Komponente korrekt installiert wurde oder ob ein Fehler auftrat. Diese Information werden festgelegt, indem bei Package die Datei VBNET_Extensions_Install.msi markiert und dann, wie in Abbildung 10 gezeigt, die Registerkarte Exit Codes geöffnet wird.

Cc299498.97a6808c-a437-4610-a860-c8e79f0e95c7(de-de,VS.80).gif

Abbildung 10: Die Exitcodes für den Erfolg und den Fehler konfigurieren

Unterhalb von Custom Exit Codes wird der Exitcode 0 ergänzt, der angibt, dass die Installation erfolgreich war. Wird der Exitcode nicht angegeben, geht der Bootstrapper auch dann, wenn die Komponente VBNET_Extensions erfolgreich installiert wurde, davon aus, dass die Installation fehlschlug.

Nun kann das Paket für die erforderliche Komponente erstellt werden. Hierzu wird auf der Symbolleiste die Schaltfläche Build verwendet, die sich links oberhalb des Wortes „Package“ befindet.

Nun wird das in Abbildung 11 gezeigte Fenster geöffnet, das die Ausgabe des Buildprozesses anzeigt. BMG erstellt unterhalb der Visual Studio 2005-Installation das für das Paket benötigte Verzeichnis und legt dort die erforderlichen Dateien ab. So können die VBNET_Extensions, ebenso wie .NET Framework 2.0 oder SQL Server 2005 Express Edition, als erforderliche Komponente installiert werden.

Cc299498.49072600-6292-43e3-a4f6-721e9cdcb947(de-de,VS.80).gif

Abbildung 11: Die Ausgabe während der Erstellung eines Pakets

Die Setup.exe des Bootstrappers erstellen

Zum jetzigen Zeitpunkt ist die Setup.exe für die Visual Basic 6.0-Anwendung bereits vorhanden. Die DLL VBNET_Extensions wurde verpackt und kann nun ebenfalls als eine für die Anwendung erforderliche Komponente installiert werden. .NET Framework 2.0 und SQL Server 2005 Express Edition können standardmäßig als erforderliche Komponenten installiert werden. Damit alles von einer einzigen Setup.exe aus installiert werden kann, ist ein letzter Schritt erforderlich, um alles miteinander zu verbinden: das Erstellen der Setup.exe selbst.

Bei der Setup.exe handelt es sich um einen Bootstrapper; d.h., das einzige, was sie weiß, ist, wie sie andere Installer anstoßen kann. Der Bootstrapper startet die Installation von .NET Framework 2.0, die Installation von SQL Server 2005 Express Edition, die Installation für die benutzerdefinierte DLL VBNET_Extensions und schließlich die Setup.exe für die Visual Basic 6.0-Anwendung Sales Support.

Der Bootstrapper wird mit dem Tool MSBuild erstellt. Normalerweise wird MSBuild verwendet, um Projekte von der Befehlszeile aus zu kompilieren. MSBuild kann Dateien kompilieren und andere Aufgaben durchführen, die für einen automatisierten Buildprozess erforderlich sind, wie das Kopieren von Dateien. MSBuild wird durch eine XML-Datei gesteuert, in der die Anweisungen für den Buildprozess enthalten sind. Die MSBuild-Projektdatei, mit der der Bootstrapper erstellt wird, sehen Sie in Listing 2.

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <BootstrapperFile Include="Microsoft.Net.Framework.2.0">
      <ProductName>.NET Framework 2.0</ProductName>
    </BootstrapperFile>
    <BootstrapperFile Include="Microsoft.Sql.Server.Express.1.0">
      <ProductName>SQL Server 2005 Express Edition</ProductName>
    </BootstrapperFile>
    <BootstrapperFile Include="VBNET_Extensions">
      <ProductName>VBNET_Extensions</ProductName>
    </BootstrapperFile>
    <BootstrapperFile Include="Microsoft.Windows.Installer.3.1">
      <ProductName>Windows Installer 3.1</ProductName>
    </BootstrapperFile>

    <SourceFiles
      Include="$(MSBuildProjectDirectory)\..\SalesSupportV8_3\Package\setup.exe;
      $(MSBuildProjectDirectory)\..\SalesSupportV8_3\Package\SalesSupport.cab;
      $(MSBuildProjectDirectory)\..\SalesSupportV8_3\Package\Setup.LST" />

  </ItemGroup>

  <Target Name="Bootstrapper">
    <Copy
      SourceFiles="@(SourceFiles)"
      DestinationFolder="$(MSBuildProjectDirectory)\Deployment\SalesSupport" />

    <GenerateBootstrapper
      BootstrapperItems="@(BootstrapperFile)"
      ApplicationFile="SalesSupport\setup.exe"
      ApplicationName="Sales Support Installer"
      ComponentsLocation="Relative"
      Culture="en"
      FallbackCulture="en-US"
      CopyComponents="True"
      Validate="False"
      OutputPath="$(MSBuildProjectDirectory)\Deployment" />

  </Target>
</Project>

Listing 2: Die Datei Bootstrapper.msbuild für die Anwendung Sales Support

Der Abschnitt ItemGroup enthält eine Liste der Pakete, die als erforderliche Komponenten installiert werden sollen. Beachten Sie, dass in dieser Liste auch die eingebauten Pakete für .NET Framework 2.0 und SQL Server 2005 Express Edition enthalten sind. Auch das benutzerdefinierte Paket VBNET_Extensions ist dort aufgeführt. Dieses Paket wurde im Abschnitt „Aus VBNET_Extensions eine für SalesSupport83 erforderliche Komponente machen“ weiter oben in diesem Artikel erstellt.

Als Teil des Buildprozesses muss der Legacy-Installer (der vom Visual Basic 6.0 Package and Deployment-Assistenten erstellt wurde) in einen Bereitstellungsordner kopiert werden. Hierzu werden die Installationsdateien im Tag SourceFiles aufgeführt und dann bei der Aufgabe Copy unterhalb des Ziels Bootstrapper auf diese Liste verwiesen.

Das Tag GenerateBootstrapper enthält die Informationen, die MSBuild benötigt, um die Bootstrapperdatei Setup.exe zu erstellen. Das Attribut BootstrapperItems verweist auf die erforderlichen Komponenten, die eingeschlossen werden müssen. Mit dem Attribut ApplicationFile wird der Legacy-Installer angegeben, der ausgeführt werden soll, nachdem die erforderlichen Komponenten installiert sind. Mit OutputPath wird der Ordner angegeben, in dem der Bootstrapper erstellt und in den die erforderlichen Komponenten installiert werden.

Der Bootstrapper wird dann auf der MSBuild-Befehlszeile erstellt. Um MSBuild auszuführen, öffnen Sie eine Visual Studio-Eingabeaufforderung, die Sie im Startmenü finden (All Programs | Visual Studio 2005 | Visual Studio Tools | Visual Studio 2005 Command Prompt). Sie starten MSBuild und erstellen die Bootstrapperdatei Setup.exe, indem Sie die Befehlszeile msbuild "Sales Support Bootstrapper.msbuild" verwenden. Die Ausgabe des Programms zeigt Abbildung 12.

Cc299498.6749f214-41f7-429a-96a7-ad5864eb7d8b(de-de,VS.80).gif

Abbildung 12: Die Ausgabe bei der Erstellung des Bootstrappers

Den Ordner Deployment sehen Sie in Abbildung 13. Die Inhalte dieses Ordners können auf eine CD kopiert, für den Download gezippt oder auf andere Weise für die Verteilung verpackt werden.

Cc299498.ecc11bd5-4f20-4542-97a2-f94a215a4a93(de-de,VS.80).gif

Abbildung 13: Der fertige Ordner Deployment

Die gesamte Anwendung, einschließlich .NET Framework 2.0, SQL Server 2005 Express Edition und der VBNET_Extensions, kann nun durch Ausführen einer einzigen Setup.exe installiert werden.

Zusammenfassung

Das Erstellen eines korrekten Installationsprogramms für ein Softwareprodukt war und ist immer noch schwierig. Anwendungen hängen von erforderlichen Komponenten ab, für die häufig benutzerdefinierte Aktionen erstellt werden, die während der Installation ausgeführt werden müssen. Diese dienen beispielsweise dem Anhängen einer Datenbank, der Migration von früheren Versionen usw.

Die Bereitstellung einer hybriden Visual Basic 6.0- und Visual Basic .NET-Anwendung ist noch ein wenig komplexer. Der Code, den Sie in Visual Basic .NET erstellt haben, muss in den meisten Fällen in eine DLL kompiliert werden, die bereitgestellt werden muss. Die Anwendung hängt nun davon ab, dass .NET Framework installiert wird, das als erforderliche Komponente in den Installationsprozess eingeschlossen werden sollte.

Ich hoffe, dass dieser Artikel die Aufgabe einfacher macht und dass er genügend konkrete Informationen enthält, die Sie verwenden können, wenn Sie Ihre eigenen hybriden Anwendungen bereitstellen. Meiner Meinung nach ist dies bei Weitem einfacher als eine komplette Visual Basic 6.0-Anwendung nach Visual Basic .NET zu portieren.

Das Erstellen von hybriden Anwendungen ermöglicht Ihnen, die in vorhandene Anwendungen getätigten Investitionen weiter zu nutzen, nach und nach das .NET Framework und Visual Basic .NET kennenzulernen, und birgt nur wenig Risiken.

Über den Autor

Scott Swigart verbringt seine Zeit mit Consulting, mit Autorentätigkeit und ist als Referent über sich entwickelnde und neu entstehende Technologien tätig. Dank seiner mehr als 15-jährigen Erfahrung als Programmierer und seines permanenten Kontakts mit zukünftigen Technologien im Bereich der Softwareentwicklung ist Scott Swigart in der Lage, Unternehmen dabei zu unterstützen, das Beste aus den heutigen Technologien herauszuholen und sich dabei gleichzeitig auf die Verwendung von zukünftigen Technologien vorzubereiten. Scott Swigart ist außerdem Autor von mehreren Büchern zu .NET, zertifizierter Microsoft Trainer (MCT) und Entwickler (MCSD) sowie Microsoft MVP. Nehmen Sie mit Scott Swigart Kontakt auf über scott@swigartconsulting.com oder lesen Sie seine aktuellen Grübeleien unter blog.swigartconsulting.com.