Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Eine Webanwendung auf CD

Geschrieben von: Andreas Roth
Kategorie: ASP Tricks

Für das Internet werden mittlerweile nicht mehr nur einfache Anwendungen geschrieben - oft ist sehr nützliche Software im Internet zu finden. Daher ist der oft gehörte Wunsch verständlich, diese Applikationen auch Kunden ohne Internetzugang zur Verfügung zu stellen. Mit der Software Intorel ActiveSite Compiler ist es möglich, ein ASP Anwendung als Exe(cutable) weiterzugeben. Hier nun der Bericht, von einem Projekt das den Weg vom Netz auf die Scheibe mit einigen seiner Haken wieder gibt.

Die Webanwendung

Die Firma A. Raymond, Grenoble, stellt Schnellbefestigungen für die Automobilindustrie her. Um die Entwickler unser aller liebsten Kinder, der Fahrzeuge, besser zu unterstützen, wurde ein mehrsprachiger Katalog Online gestellt, der sehr komplexe Recherchemöglichkeiten beinhaltet. Vorbild war eine alte MS-Foxpro Anwendung, die an die Entwickler auf CD Rom versendet wurde. Als zweiter Teil dieser Entwicklung sollte die MS-Foxpro Anwendung selbst ebenfalls abgelöst werden, da mit modernen Systemen teilweise erhebliche Probleme auftraten. Da für das Internet die ganze Anwendung bereits entwickelt und getestet war, lag es nahe, diese Programmierung weiter zu verwenden.

Der Intorel ActiveSite Compiler

Nach einiger Recherche stieß ich auf den Intorel ActiveSite Compiler, der es erlaubt, ASP Anwendungen zu ausführbaren Dateien zu kompilieren. Die Funktionsweise ist dabei in etwa die folgende: Die Dateien der Anwendung werden, zusammen mit einem kleinen Webserver in eine einzige Datei kombiniert. Beim Start des Executables wird der Webserver ausgeführt, der sich aus der Datei die jeweils aufgerufene ASP Datei in das Temp-Verzeichnis des Windows Verzeichnisses extrahiert, dort ausführt und die Datei anschließend gleich wieder löscht.

Ich kann hier nur vom Funktionsumfang der Vorversion, dem Octopod Weblicator berichten. Die aktuelle Version besitzt eine weitaus größere Zahl an Funktionen und unterstützt auch ASP.NET.

Große Datenmengen

Wie für einen Katalog üblich, galt es, eine große Menge an Information zu hinterlegen. Zu etwa 8.000 Produkten und zur Menüführung gab es jeweils Abbildungen, was eine Flut von ca. 30.000 Dateien zur Folge hatte. Zuviel um sie mit dem Sitecompiler in eine einzelne Datei zusammenzufassen. Der Site-Compiler erlaubt aber auf Wunsch den Zugriff auf Dateien außerhalb des Kompilats.

Auch die Informationen in der Datenbank ließen die MDB auf 16 MB anschwellen. Da Daten für Suchabfragen gespeichert werden, konnte ich Sie auch nicht auf der CD lassen, denn diese ist ja nicht beschreibbar. Um die Datenbank temporär auf die Festplatte zu schreiben sind 16MB jedoch zu viel. Die Lösung für die Datenbank wurde in einem angenehmen Feature der Jet Engine gefunden. In einer MDB kann man Tabellen anderer MDBs verknüpfen, die dann wie eigene Tabellen behandelt werden. Dies geht allerdings nur mit dem Access Frontend und nicht mit der Jet-Engine zur Laufzeit. Jedoch bleiben Verknüpfungen erhalten. Somit bestand der Trick darin, Tabellen, deren Inhalt sich ändert, in eine MDB zu kopieren. Dort wurden Verknüpfungen eingebaut, die auf eine MDB auf der CD verweisen. Diese MDB enthält die Tabellen mit den Produktinformationen, die den meisten Raum einnehmen und sich zur Laufzeit nicht ändern.

Da für Verknüpfungen Pfade gespeichert werden, wurde es darüber hinaus nötig, für jeden möglichen Laufwerksbuchstaben des CD Laufwerks eine solche MDB zu generieren. Auch der spätere Pfad einer solchen Datenbank muß immer der gleiche sein. Ich entschied mich für C:\temp. Soll die Anwendung nun von CD gestartet werden, ist der Bildpfad relativ zum Ausführungs-Ort gleich, die Datenbank wird immer in C:\temp\cdtemp.mdb gesucht. Damit die Bedingungen für die Anwendung stimmen, wird die Anwendung nicht direkt gestartet, sondern über ein VB Programm, das zuerst den Laufwerksbuchstaben bestimmt, gegebenenfalls den "Temp" Ordner anlegt und die MDB mit den richtigen Verknüpfungen dorthin kopiert. Für das Überspielen des Katalogs auf Festplatte wurde eine zweite Anwendung kompiliert, welche die vollständige Datenbank beinhaltet - und die Bilder werden komplett in den dafür angelegten Ordner kopiert.

Die Herausforderung

Dem Kunden wurde eine Anwendung versprochen, die auf allen Windowssystemen ohne Installation läuft. Aus diesem Kontext ergaben sich erhebliche Probleme, denn auch der Sitecompiler hat gewisse Bedürfnisse, im wesentlichen waren dies:

  1. Jet Engine 4.0
  2. MDAC
  3. aktuelle Scripting Engine (WSH)
  4. TCP/IP muß auf dem System eingerichtet sein.

Da diese Komponenten auf den meisten Systemen aber bereits installiert sind, war die Bedingung in 90% aller Fälle erfüllt. Dennoch mußte für die restlichen 10% eine Lösung gefunden werden.

Eine weitere Schwierigkeit bestand darin, daß die CD Rom international lauffähig sein mußte. Gerade mit der Installationsroutine der ursprünglichen CD Rom Anwendung gab es hier Probleme, da diese in Frankreich entwickelt wurde und ohne Rückfrage einige französischsprachige DLLs installiert. Ein Problem, das sich natürlich nicht wiederholen sollte!

Die Lösung

Nachdem einige Installer getestet wurden, zeigte sich, daß diese meist ein unerwünschtes Vorgehen zeigen: Sie installieren einfach, selbst wenn es nicht nötig sein sollte. Einzig der Installer von Wise war soweit anpassbar, daß er sowohl die richtigen Komponenten zur Sprache als auch eine Installationsroutine, als auch gegebenenfalls einen direkten Start der Applikation ermöglicht, ohne daß eine Komponente installiert wird. Aus firmenpolitischen Gründen wurde jedoch auf den Einsatz dieser Software verzichtet - sodaß ich gezwungen war, ein eigenes Installations- und Startprogramm zu schreiben.

Visual Basic 5 zeigte sich hier als passendes Werkzeug. Da DLLs, wenn nicht auf dem System installiert, im Verzeichnis der Anwendung gesucht werden, konnte ich eine Ausführung ohne Installation garantieren, indem ich einen Basissatz der zur "Runtime" benötigten DLLs mit in das entsprechende Verzeichnis legte. Es war jedoch nicht möglich die erweiterten DLLs, wie zum Beispiel die Common Controls zu nutzen - das führte zu massiven Konflikten mit evt. vorhandenen Installationen. Systemprogrammierern längst vertraut, gibt es dafür eine passende Bezeichnung: "DLL-Hell".

Das selbstgeschriebene Installationsprogramm prüft nun zuerst auf die Existenz der benötigten Klassen und Schnittstellen und bietet gegebenenfalls die Installation an. Die 3 Dateien waren jeweils für die 4 Basissprachen auf der CD-Rom, ein Link für das Laden besagter Dateien direkt von Microsoft wurde für weitere Sprachen angeboten.

Tips für eigene Projekte

Autostart und eigenes Logo

Um der CD-Rom ein eigenes Logo zu geben, braucht man eine *.ico Datei mit dem gewünschten Icon. Dann schreibt man in das Wurzelverzeichnis der CD-Rom eine Textdatei: Autorun.inf, die folgenden Aufbau hat:

[autorun]
open={relativer Pfad zur Anwendung, die automatisch gestartet werden soll}
Icon={ relativer Pfad zum Icon, das als CD Logo angezeigt werden soll},0

Start und Installation

Wise Installer ist kein günstiges Programm, aber es ist um einiges billiger als ein Entwickler, der das Rad neu erfindet.

Testen, testen, testen

Besorgen Sie sich gleich zu Beginn einen schnellen Brenner und einen 200er Pack Rohlinge. Drücken Sie all Ihren Freunden, Verwandten und Bekannten eine Kopie der Beta in die Hand und bitten sie diese Menschen mögen die CD auf allen ihnen verfügbaren Systemen einlegen und ausprobieren. Besonders Freunde im Ausland sind willkommen.

Eine CD kann nicht mehr geändert werden, wenn Sie erst einmal gepresst ist. Deshalb muß jede Möglichkeit ausgeschöpft werden, Probleme zu finden, bevor der Master (eine ganz normale, gebrannte CD) zum Dienstleister geschickt wird, der sich um die Pressung kümmert.

Schlußbemerkung

Es ist faszinierend, welche Möglichkeiten sich ergeben, wenn man Webanwendungen für das Internet weitergibt. Demoversionen von Online-Produkten, Katalogysteme wie Rasch Safix, oder aber Wissensdatenbanken. Das Projekt hat gezeigt: Es ist möglich und gar nicht allzu schwer, ASP Anwendungen auf die Silberscheibe zu bringen.

Links zu anderen Sites

Intorel ActiveSite Compiler

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.