In Kürze erscheint die neue Version 3.0 der IB Zip-DLL Komponente. Mit dieser Komponente aus dem Hause "Ingo Bordasch" wird das Erstellen und Entpacken von ZIP-Archiven zum Kinderspiel. Auch selbstextrahierende EXE-Dateien lassen sich erstellen.01.12.01Ein Bericht von Dieter Otter
Zippen, Entpacken, Selfextracting EXE
... 32-Bit DLL (keine ActiveX-DLL)... Einsatz in Delphi, C++ und VB
... verschiedene Kompressionsraten
... Unterstützung von Passwörtern
... Erstellen von selfextracting Files
IB Zip-DLL ist eine DLL-Entwicklerkomponente, mit der Sie auf sehr einfache Weise ZIP-Funktionen in Ihren selbsterstellten Programmen integrieren. Und eine automatische Entpack-Funktion eines ZIP-Files ist z.B. immer dann interessant, wenn Sie Ihre Anwendung mit einer Online-Update Funktion ausgestattet haben und die neuen Dateien gezippt vom FTP-Server geladen werden. Wäre doch schön, wenn dann auch die Update-Dateien gleich aus Ihrer Anwendung heraus entpackt werden könnten, oder nicht?
Sicherlich gibt es hier noch viele weitere Beispiele - das soll aber nicht Thema dieser Toolbesprechung sein. Ich habe es mir zur Aufgabe gemacht, die Zip-DLL Komponente von Ingo Bordasch einmal genauer unter die Lupe zu nehmen. Und da im Installationsumfang kein Demo-Projekt für Visual Basic vorhanden war, musste ich also zunächst selbst ein kleines Beispiels-Projekt proggen, um die Funktionalität der Zip-DLL auch testen und beurteilen zu können. Aber das war nicht weiter tragisch - im Gegenteil es hat sogar Spass gemacht
Installation der IB Zip-DLL 3.0 Komponente
Die Test-Version liegt als ausführbare Setup-Datei vor. Die Installation erfolgt schnell und problemlos. Auch ein Deinstallations-Programm ist vorhanden, welches alle installierten
Dateien "sauber" entfernte. Der Download der Testversion geht ebenfalls schnell vonstatten, da die Datei nur 680 KByte gross ist. Das Setup beinhaltet die DLL-Komponente selbst, sowie eine Online-Hilfe, welche alle Funktionen der DLL kurz erläutert.
Handhabung
Wie bereits Eingangs erwähnt, ist im Installationsumfang keinerlei Beispielsprojekt enthalten. Um sich einen Überblick über die Funktionen der DLL zu schaffen, muss man entweder der
Online-Hilfe glauben oder eben selbst ein kleines Beispielsprojekt erstellen. Die DLL wird nicht - wie es im Gegensatz zu ActiveX-DLLs der Fall ist - über Projekte - Verweise
referenziert, sondern direkt über Deklarationen im Codeteil - also genau wie man es von den Windows-API Funktionen her kennt mit Declare Function "...". Alle DLL-Deklarationen
können in der Online-Hilfe nachgelesen werden.
Funktionen
Die Funktionen der IB Zip-DLL lassen sich grob in folgende vier Kategorien gliedern:
- Zip-Funktionen, um ZIP-Archive zu erstellen und zu bearbeiten
- Un(G)Zip-Funktionen, um Dateien aus ZIP-Archiven zu extrahieren
- Verschlüsselungsfunktionen, um Dateiinhalte zu ver- und entschlüsseln
- Weitere Funktionen, um z.B. Infos über das ZIP-Archiv zu ermitteln oder auch eine selfextracting EXE aus einer ZIP-Datei zu erstellen
Zip-Funktionen
Für das Erstellen und Verwalten von ZIP-Archiven stehen 14 Funktionen zur Verfügung, u.a. auch Funktionen, um ein Kennwort für das Extrahieren der Dateien festzulegen, oder die
Kompressionsrate zu bestimmen. Als Kompressionstyp einstellbar sind: normal, schnell, sehr schnell und extra. Desweiteren lassen sich Dateien aus bereits erstellten ZIP-Archiven löschen oder auch zusätzliche Dateien hinzufügen. IB Zip-DLL unterstützt auch Dateimasken, wie etwa *.* oder *.bmp.
Un(G)Zip-Funktionen
Für das Extrahieren von Dateien aus vorhandenen ZIP-Archiven stehen 10 UnZip Funktionen und weitere 4 UnGZip-Funktionen (Linux kompatible Zip-Dateien) bereit. Es lassen sich entweder alle, eine bestimmte Gruppe oder auch nur Einzeldateien aus dem Archiv entpacken. Optional kann auch ein Fortschrittsdialog eingeblendet werden. Befinden sich auch Unterordner im Zip-Archiv, lässt sich festlegen, ob die Ordner-Struktur beim Entpacken beibehalten werden soll.
Verschlüsselungsfunktionen
Über die Funktion IB_EncryptFile kann eine Datei verschlüsselt werden. Als Verschlüsselungsalgorithmus wird Blowfish genutzt. Für das Entschlüsseln solcher
verschlüsselter Dateien ist die IB_DecryptFile-Funktion zuständig.
Zusätzliche Funktionen
Hinter dieser Gruppe "verbergen" sich Funktionen, wie das Ermitteln der in einem ZIP-Archiv enthaltenen Dateien, das Ermitteln von Eigenschaften einzelner Dateien (Größe, Kompression) und für viele vielleicht auch noch sehr interessant - eine Funktion, um aus einem ZIP-Archiv eine selbstextrahierende EXE-Datei zu erstellen.
Verwenden der Zip-DLL in Visual Basic
Nachdem man die Funktions-Deklarationen aus der Online-Hilfe in sein Projekt übertragen hat, kann es losgehen.
Erstellen eines Zip-Archivs
Die Handhabung ist wirklich sehr einfach, was das nachfolgende Beispiel auch verdeutlicht:
Dim lResult As Long ' 1. Der DLL mitteilen, wie das Archiv heissen soll IB_ZipArchiveFile "MeinZipArchiv.zip" ' 2. Welche Dateien sollen komprimiert werden? ' WICHTIG! Die erste Datei muss per IB_ZipFileSpec angegeben werden! IB_ZipFileSpec "c:\temp\datei1.exe" ' Alle weiteren Dateien dann per IB_ZipAddFileSpec angeben! IB_ZipAddFileSpec "c:\temp\datei2.exe" IB_ZipAddFileSpec "c:\temp\datei3.exe" ' Und oder Alternativ: Dateimaske verwenden IB_ZipAddFileSpec "c:\temp\daten\*.*" ' 3. Passwort (falls gewünscht) IB_ZipPassword "geheim" ' 4. Kompressionsrate einstellen: 1=normal IB_ZipCompressType 1 ' 5. ZIP-Archiv erstellen (1=mit Fortschrittsanzeige) lResult = IB_Zip(1) ' 6. Rückgabewert auswerten If lResult = -2 Then MsgBox "Der Komprimiervorgang wurde durch den Benutzer abgebrochen" ElseIf lResult > 0 Then MsgBox CStr(lResult) Dateien komprimiert!" Else MsgBox "Es ist ein Fehler aufgetreten!" End If
Die auf diese Weise erzeugten ZIP-Archive sind kompatible zu WinZip und allen anderen Programmen, die das PKZIP-Verfahren nach Indusrie-Standard unterstützen.
SFX - selfextracting EXE erstellen
Das Erstellen einer selbsextrahierenden EXE erledigt die Funktion IB_SFX:
Dim lResult As Long lResult = IB_SFX("ib-zip.dll", "MeinZipArchiv.zip", "MeinZipExe.exe"
Ruft man nun die ersteltle EXE-Datei auf, erscheint ein Dialog zum Festlegen eines Ziel-Ordner, in welchem die Dateien dann entpackt werden.
Zip-Archiv entpacken
Das Entpacken aller oder auch nur einzelner Dateien aus einem ZIP-Archiv erfolgt ebenso einfach, wie das Erstellen des ZIP-Files selbst:
Dim lCount As Long ' 1. ZIP-Archiv festlegen IB_UnZipArchiveFile "MeinZipArchiv.zip" ' 2. Dateien, die entpackt werden sollen IB_UnZipFileSpec "*.*" ' 3. vorhandene Unterverzeichnisse berücksichtigen IB_UnZipUseStoredDirs 1 ' 4. Ziel-Ordner festlegen IB_UnZipExtractDir "d:\test" ' 5. Dateien überschreiben? (2=Dialog zeigen) IB_Overwrite 2 ' 6. Dateien entpacken (1 = mit ProgressBar) lCount = IB_UnZip(1) ' 7. Rückgabewert auswerten If lCount = -1 Then MsgBox "Das ZIP-Archiv existiert nicht!" ElseIf lCount = - 2 Then MsgBox "Benutzerabbruch während des Entpackens!" Else MsgBox CStr(lCount) & " von " & _ IB_ZipCount(txtZIPArchiv.Text) & " Dateien entpackt!" End If
Gesamteindruck
Die IB Zip-DLL Komponente überzeugt durch ihre einfache Handhabung und vor allem durch ihre umfangreichen Funktionen. Bereits nach kürzester Einarbeitungszeit lassen sich die eigenen Anwendungen mit Zip- und UnZip-Funktionen ausstatten.
Ich habe mich entschlossen, für alle Visual Basic Entwickler das eigens für diese Toolbesprechung von mir erstellte Beispiels-Projekt hier zum Download bereitzustellen. Somit können auch Sie sich schnell von der IB Zip-DLL überzeugen.
Das VB Beispiels-Projekt zeigt, wie man ein ZIP-Archiv erstellt, die Dateien wieder extrahiert und auch eine selfexatrcting EXE erzeugen kann: IBZip_VB6Demo.zip (80 KByte)
Die mir zum Test zugrunde liegende Version 3.0 der Zip-DLL erscheint in den kommenden Tagen. Das Demo lässt sich aber auch ohne Probleme mit der zur Zeit (noch) aktuellen Version 2.51 testen.
Erweiterungen der Version 3.0 gegenüber Version 2.51
- Multi-volume Diskettensätze können erstellt werden
- IB_SpaceOnFirstDisk: freigehaltender Platz in der ersten Diskette bei Multi-volume Diskettensätzen
- IB_Language: neue Funktion um die Texte der Fenster auf eine bestimmte Sprache einzustellen. Zur Zeit verfügbar sind die Sprachen: Englisch, Deutsch, Französisch und Italienisch
- IB_CRCCheck: mit Dateimaske als 2. Parameter
- IB_CRCCheck: Fehler behoben wenn Header in der Zip-Datei defekt ist
- IB_ZipPassword: gleichzeitig Passwort für CRC-Check
- IB_CRCAddPassword: zusätzliches Passwort für CRCCheck
- IB_UnZipAddPassword: zusätzliches Passwort für IB_UnZip
- IB_UnZip: Fehler beim entzippen von Zip-SFX Dateien die nicht dem PKZip-Standard entsprechen behoben (Headergröße)
- IB_Error: neue Funktion um während der Entwicklung Fehlermeldungen anzuzeigen
Preise
Die IB Zip-DLL gibt es in drei Varianten:
- Privat Anwender Lizenz (€ 30,-): Einzellizenz zur Anwendung für Freewareprogramme oder für den Eigenbedarf von Privatpersonen
- Sharewareautor Lizenz (€ 55,-): Einzellizenz für Sharewareautoren
- Software Entwickler Lizenz (€ 350,-) Lizenz für Softwarefirmen und Entwicklerteams
Bewertung
IB Zip-DLL 3.0 | |
GESAMTWERTUNG | |
PREIS / LEISTUNG | gut |
Preis: | ab 30,- EUR |
Weitere Infos unter: | http://www.zip-dll.de/ |
sehr viele Funktionen | |
leichte Handhabung | |
Kennwortschutz | |
SFX-Funktion | |
günstige Sharewareautoren-Lizenz | |
kostenlose Updates! | |
Entwicklerlizenz sehr teuer | |
Fazit
IB Zip-DLL sollte für all diejenigen zur ersten Wahl gehören, die in Ihren eigenen Anwendungen Zip-/ und UnZip-Funktionen benötigen. Weiterer Pluspunkt: die DLL benötigt keine weiteren abhängigen Komponentent! Hevrozuheben ist auch der vergünstigte Preis für Shareware-Autoren von 55,- EUR anstelle der doch nicht gerade geringen 350,- EUR für die Software Entwickler-Lizenz.
Kontakt
Ingo Bordasch Software
Kaskelstrasse 4
10317 Berlin
Deutschland
Tel.: +49 30 - 212 38 48 2
Fax: +49 30 - 55 1 55 909
Unterschiede Test- und Vollversion
Die Test-Version ist voll funktionsfähig, alle Funktionen stehen zur Verfügung - jedoch wird bei beim Erstellen von ZIP-Archiven und SFX-Dateien, sowie beim Entpacken von
Dateien ein Hinweis eingeblendet. Anwender der Vollversion erhalten zusätzlich alle weiteren Updates kostenlos!