Self-Extractor

Grunge

Erfahrenes Mitglied
Hi!


Man sieht immer wieder folgende Dinge:

Man lädt sich im internet ein programm runter und bekommt eine EXE! Wenn an diese Ausführt wird das Prgramm installiert... soweit ich weiß nennt sich der spaß Self-Extractor oder so....wie mach ich das mit einer VB anwendung ???
 
Es gibt bestimmte Richtlinien, nach denen binäre Anwendungsdateien aufgebaut sind. Bei selbstentpackenden Archiven ist das so geregelt, dass vorne ein Programm steht und hinten einfach nur die archivierten Daten angehängt sind.
Das führt dazu, dass die Anwendung fehlerfrei ausgeführt werden kann, weil alles, was dahinter kommt einfach ignoriert wird.

Kurz: Die eigene Anwendung wird mit Readonly-Zugriff binär geöffnet und die Daten ab einer bestimmten Stelle werden ausgelesen und verarbeitet.

Das ist zumindest die grobe Technik, die dahinter steckt. Zum anderen kommt dazu natürlich noch der ein oder andere Algorithmus zur Komprimierung der angehängten Daten - z.B. Huffman, RLE oder vergleichbares.
 
Wie wende ich sowas an???

Beispiel:

Ich habe einen Ordner und ein paar Files die sich dort befinden:

-Mein-Programm-Ordner
---TestProg.exe
---TestProg.ini
---TestProg.xxx
---TestProg.xxx
---TestProg.xxx
---TestProg.xxx
--- .
--- .
--- .

Wie "verwende" ich nun einen/den Self-Extracotr?? Also das wen ich den Befehlen usw.. folge das der meinen Ordner auf die bestimmt festplatte "entpackt"????
 
So ganz einfach ist das nicht, dazu müsstest Du Dich erstmal mit dem PE-Format auseinandersetzen, damit Du die Anwendung nicht kaputtmachst. Dann kannst Du erstmal die Dateien hinten an die Anwendung anhängen und nachher wieder auslesen.
Ist zwar ein nettes Vorhaben und ich werd mal sehen, ob ich dazu mal ein Tutorial zusammenbau - aber VB ist meiner Meinung nach die falsche Sprache dafür.
 
das ist nett das du ein tut dafür machen willst...schick mir mal ne mail wenn das ferdisch ist, bitte....(dj_bennie@gmx.de)
 
Hi!

Ich hab per zufall eine halb-loesung gefunden (sorry, keine Umlaute. Bin in USA an einem PC).
Mein Self-Extractor hat folgenden Code:

Code:
Dim Datei1() As Byte
Dim startpos As Long

Private Sub cmdCancel_Click()
    End
End Sub

Private Sub cmdExtract_Click()
startpos = 20481 'groesse dieser exe-datei +1
      
      Open App.Path & "\" & App.EXEName & ".exe" For Binary Access Read Lock Write As #1
        ReDim Datei1(LOF(1) - 1)
        Get #1, startpos, Datei1
      Close #1
      
      Open txtPath.Text & "\datei2.exe" For Binary As #1
        Put #1, , Datei1
      Close #1
End Sub

Private Sub Form_Load()
    txtPath.Text = App.Path & "\"
End Sub

Private Sub Form_Unload(Cancel As Integer)
    End
End Sub

Exe-Datei in zip angehaengt

Die frage ist nun, wie man andere Dateien nachtraeglich da reinschreibt...
Dazu hab ich ein Hilfsprogramm geschrieben

Source:
Code:
'Eigentlich ist keine Form notwendig, sondern nur Sub Main()
'Code by Dennis Lassiter (dennis@lassiter.de)
'Verbreitung nur mit ausdrücklicher Genehmigung

Dim Datei1() As Byte
Dim Datei2() As Byte


Private Sub Form_Load()
'Self-Xtractor laden
Open "C:\WINNT\PROFILES\Administrator\Desktop\Project1.exe" For Binary Access Read Lock Write As #1
ReDim Datei1(LOF(1) - 1)
    Get #1, 1, Datei1
Close #1

'Zweite Datei Laden
Open "C:\WINNT\system32\notepad.exe" For Binary Access Read Lock Write As #1
ReDim Datei2(LOF(1) - 1)
    Get #1, 1, Datei2
Close #1


'Fertige Datei ist in C und heisst datei.exe
Open "C:\datei.exe" For Binary As #1
    Put #1, , Datei1
    Put #1, , Datei2
Close #1
End Sub

Man koennte so eine Filelist einfuegen und dann alle datei die da drin stehen entpacken.

Dateien kann ich grad nicht hochladen.
Wenn ich wieder in Deutschland bin (Samstag) lad ich die Dateien hoch.

bis dann

Dennis
 
Eine einfachere Lösung wäre doch die Verwendung von Programmen wie WinZIP, WinAce oder WinRar, damit kann man auch selbstextrahierende Exe-Dateien erstellen.
 
es gibt bereiche wo es besser ist eine eigene Loesung zu verwenden
Ich hab schon weitergedacht...
In meiner jetzt funktionierenden Version wird eine ZIP-Datei die in der EXE versteckt ist mit pkzip (auch in exe versteckt) entpackt.
Leider ist meine zip-datei zu gross um hier hochzuladen.
Ich versuchs grad mit FTP hochzuladen (leider hab ich hier nur 56k, aber in Deutschland hab ich DSL).
Wenn ich erfolg hab ist es hier DOWNLOAD
wenn nicht, dann mach ichs in Deutschland


Liebe Gruesse aus Albuquerque/New Mexico/USA

PS:
CODE IST (C) BY DENNIS LASSITER!
 
Zuletzt bearbeitet:
Zurück