PackerEx_Include (erweiterte Packfunktionen)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

funk.munich hat geschrieben:Hättest Du evtl. ein kleines Bsp. für mich?
Das Beispiel habe ich dir schon geschrieben:

Code: Alles auswählen

TempDir$ = C:\Temp\Test
PackName$ = Installer.exe 
 
CreateDirectory(TempDir$)
OpenFilePack(PackName$) 
ExtractPack(TempDir$) 
CloseFilePack()
Compiliere es als "Installer.exe"
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Beitrag von funk.munich »

Hi Thorsten,

ich habe eine Installer.exe mit dem folgenden Code compiliert:

Code: Alles auswählen

XIncludeFile "PackerEx_IncludeV4.pb"

CreateFilePack("icons.pck",0,0) 
AddFileToPack("logo00.png","icons.pck",9) 
CloseFilePack(0)

AppendFilePack("setup.exe","icons.pck") 
zuvor noch eine setup.exe compiliert:

Code: Alles auswählen

XIncludeFile "PackerEx_IncludeV4.pb" 

OpenFilePack("icons.pck",0,0) 
ExtractPack("D:\") 
CloseFilePack(0)
Die Aufgaben des Installers haben sogar funktioniert :)
Und die pck Datei wurde wohl auch an die setup.exe angehängt.

Da hätte ich eine Frage:
Vor dem Anhängen der pck Datei an die setup.exe hatte die Datei die Größe (~41 KB). Nachdem Anhängen die Größe (~224 MB) :o
Ist das korrekt (glaube ich eigentlich nicht)!

Wenn ich nun die setup.exe aufrufe, damit die pck Datei nach D: entpackt werden soll, funktioniert leider nicht. Hättest Du da noch einen Vorschlag für mich.

Generell bin ich froh keinen Installer selber zu schreiben, da mir die Expertise fehlt und ich da lieber auf Deinen Installer zugreife.
Mir geht es einfach nur darum das Prinzip und den Aufbau/Ablauf (im kleinen) zu verstehen.

Man dankt für jede Hilfe.

Daniel
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

Falscher Parameter bei "AddFileToPack()". Der erste enthält die Datei mit Pfad und der zweite die Datei ohne Pfad (bzw. Pfad im Archiv) :

Code: Alles auswählen

XIncludeFile "PackerEx_IncludeV4.pb" 
CreateFilePack("icons.pck",0,0) 
AddFileToPack("logo00.png","logo00.png",9) 
CloseFilePack(0) 
AppendFilePack("setup.exe","icons.pck")
Der Name der Packdatei stimmt nicht:

Code: Alles auswählen

XIncludeFile "PackerEx_IncludeV4.pb" 
OpenFilePack("setup.exe") 
ExtractPack("D:\") 
CloseFilePack()
Zuletzt geändert von Thorsten1867 am 22.09.2006 22:41, insgesamt 1-mal geändert.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Beitrag von funk.munich »

Hi Thorsten,

vielen Dank. Jetzt hat alles einwandfrei funktioniert :allright:

Das war ja nun der Vorgang wie man eine pck Datei an eine kompilierte Datei anhängt.

Wie kann ich mir das denn bei einer selbstextrahierenden Datei vorstellen?
Und wie kann man als erstes überhaupt eine selbstextrahierende Datei
in PB erstellen?

Vielen Dank für Deine Hilfe,
Daniel
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

Wenn du diesen Code für die Setup-Exe verwendest, entpackt sich diese Datei beim Start selbst. ( = selbstextrahierenden Datei)

Code: Alles auswählen

XIncludeFile "PackerEx_IncludeV4.pb" 
OpenFilePack("setup.exe") 
ExtractPack("D:\Temp") 
CloseFilePack()
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
Knight_Rider_2000
Beiträge: 145
Registriert: 05.02.2007 20:46
Kontaktdaten:

Beitrag von Knight_Rider_2000 »

Entschuldigt mich das ich diesen Thread hervorhole aber in keinem mir bekannten Thread ist Packerex so gut erklärt. Wenn der Installer dem Setup.exe die .pck hinzufügt wie kann man dort die Progressbar mit integrieren damit man sieht welche Datei gerad hinzugefügt wird?
PB 4.20,Blitz3D 1.98,Microsoft Visual Studio 2005 Professional, Microsoft Visual Studio 2008 Professional
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

Benutze ein 'CallBack', z.B. in 'CloseFilePack(callback)':

Entpacken mit Progressbar:

Code: Alles auswählen

Global PackProgress.l 
Procedure PackCallBack()
  PackProgress + PackItem()\Size
  SetGadgetState(#Gadget_Installer_ProgressBar,PackProgress)
EndProcedure

OpenFilePack(TempDir$ + "setup.pck", @PackCallBack())
  PackProgress = 0
  SetGadgetAttribute(#Gadget_Installer_ProgressBar, #PB_ProgressBar_Maximum, Pack\fullsize) ; Max-Wert
  ..... ;  Entpacken der Dateien
CloseFilePack()
Anzeigen der Prozentzahl. Kann man genausogut auf einen Progressbar (mit Max=100 s.o.) übertragen:

Code: Alles auswählen

Global Prozent.b
Procedure PackCallBack(SourcePosition, DestinationPosition)
  If SourcePosition = -1
    Prozent = 0
    StatusBarText(#StatusBar_Main, 0, "  "+language(#Lang_StatusBar_ProgFiles)+" "+PackItem()\Name)
  ElseIf SourcePosition >= 0
    actprogress.f = SourcePosition / PackItem()\Size * 100
    If actprogress > 100 : actprogress = 100 : EndIf
    If Prozent <> Int(actprogress)
      Prozent = Int(actprogress)
      StatusBarText(#StatusBar_Main, 1, RSet(Str(Prozent),3)+"%")
    EndIf
  EndIf
  While WindowEvent():Wend
  ProcedureReturn 1
EndProcedure

Procedure PackDir(Dir$, PackDatei$) ; Pack Directory
  Prozent = 0
  CreateFilePack(PackDatei$, 0, #Null)
  AddFullDirectoryToPack(Dir$, 9, 0)
  CloseFilePack(@PackCallBack())
  StatusBarText(#StatusBar_Main, 1, "")
EndProcedure
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
Knight_Rider_2000
Beiträge: 145
Registriert: 05.02.2007 20:46
Kontaktdaten:

Beitrag von Knight_Rider_2000 »

Ich meinte eig eine Progressbar beim Packen
PB 4.20,Blitz3D 1.98,Microsoft Visual Studio 2005 Professional, Microsoft Visual Studio 2008 Professional
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von Thorsten1867 »

Siehe 2. Beispiel!

Code: Alles auswählen

Procedure PackDir(Dir$, PackDatei$) ; Pack Directory
  SetGadgetAttribute(#Gadget_ProgressBar, #PB_ProgressBar_Maximum, 100)
  Prozent = 0
  CreateFilePack(PackDatei$, 0, #Null)
  AddFullDirectoryToPack(Dir$, 9, 0)
  CloseFilePack(@PackCallBack())
EndProcedure
StatusBarText(#StatusBar_Main, 0, ".....")
ersetzen durch:
SetGadgetState(#Gadget_ProgressBar, Prozent)
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
Knight_Rider_2000
Beiträge: 145
Registriert: 05.02.2007 20:46
Kontaktdaten:

Beitrag von Knight_Rider_2000 »

PackDir ist nicht was ich suche, das sollte mit AddFileToPack gehen.
PB 4.20,Blitz3D 1.98,Microsoft Visual Studio 2005 Professional, Microsoft Visual Studio 2008 Professional
Antworten