ZIP MIME-Type hinzufügen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ZIP MIME-Type hinzufügen

Beitrag von ts-soft »

Die mimedatei darf nicht im Header auftauchen, das wird wohl immer der fall sein, wenn man eine Datei zu einem
Archiv hinzufügt.
EPUB Open Container Format hat geschrieben:The mimetype file additionally must be neither compressed nor encrypted, and there must not be an extra field in its ZIP header.
Ich denke mal, die Zipfunktionen in PB sind für Dein vorhaben ungeeignet.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: ZIP MIME-Type hinzufügen

Beitrag von Sebastian »

Ja aber... hmm. Warum kann ich nicht die fertige zip-Datei nehmen und die mimetype-Datei als Hex-Code einfach in die ZIP-Datei schreiben. Dann ist sie doch unkomprimiert?
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ZIP MIME-Type hinzufügen

Beitrag von ts-soft »

Dann verschieben sich doch die anfangspunkte der einzelnen komprimierten Dateien und können wohl nicht mehr gefunden werden. Den Header müßtest Du auch manipulieren, wobei es wahrscheinlich ausreicht, den Wert im Zentral-Header zu
erhöhen, damit das erste Archiv gefunden wird.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: ZIP MIME-Type hinzufügen

Beitrag von Sebastian »

Genau das habe ich versucht...
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8837
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: ZIP MIME-Type hinzufügen

Beitrag von NicTheQuick »

Was verstehst du eigentlich unter Hex-Code? Machst du aus der originalen MIME-Datei eine Hex-Datei, also eine String, der nur aus 0-9 und A-F besteht und versuchst den irgendwie in die schon gepackte ZIP-Datei zu integrieren? Das kann wohl kaum gut gehen. ;)

PS.: Schon meine private Nachricht gesehen?
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: ZIP MIME-Type hinzufügen

Beitrag von Sebastian »

Nein. Das ist mir ja klar. Ich habe einfach eine valide EPUB-Datei genommen und die entsprechenden Teile kopiert. Dann natürlich noch den Offset und die Größe korrigiert und.. naja.. es geht eben nicht. Sobald man eine Datei mit 7zip einfügt, wird der Header mit dem mimetype übrigens auch überschrieben...
Nebenbei: Ein weiteres Problem. Wie legt man ein Verzeichnis mit der Packer-Library in der ZIP-Datei an? Wenn ich "/Verzeichnis/Datei.end" angeben, dann scheint es nicht richtig zu funktionieren. Mit Windows geöffnet erscheint die Datei leer. Der Hex-Editor zeigt, dass etwas in der Datei ist und in der Ansicht von 7-Zip sieht man ein Verzeichnis ohne Namen und in diesem ist dann das Verzeichnis /Verzeichnis/Datei.end :freak:
Also diese Pack-Bibliothek ist doch Murks... :twisted: Oder ich bin einfach doof... :oops:
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ZIP MIME-Type hinzufügen

Beitrag von ts-soft »

Wegem leerem Ordner:
siehe: http://www.purebasic.fr/english/viewtop ... 60#p400660

Ansonsten habe ich noch eine einfach Procedure um das zu bewerkstelligen (Crossplattform), die
könnte ich bei Bedarf später auch noch posten (habe ich hier unter linux nicht zur Verfügung).

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: ZIP MIME-Type hinzufügen

Beitrag von Sebastian »

Irgendwie schaffe ich es heute wohl nicht, mich deutlich auszudrücken... :roll:
Ich möchte kein leeres Verzeichnis erstellen. Ich möchte aber ein Verzeichnis mit einer Datei darin erstellen, nur leider gibt sich hier die Packer-Library überfordert. Oder mache ich da etwas falsch? Es werden einfach keine Verzeichnisse im Root erstellt, sondern in einem Unterverzeichnis, das ohne Namen ist.
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ZIP MIME-Type hinzufügen

Beitrag von ts-soft »

Verzeichnis wird hier problemlos erstellt, lediglich "If PackEntryType(0) = #PB_Packer_Directory" wird nicht erkannt.

Ich hoffe, Du weißt, das die verwendete libzip alle Änderungen erst bei ClosePack() schreibt!.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: ZIP MIME-Type hinzufügen

Beitrag von Sebastian »

Ja, Änderungen erst nach ClosePack... okay. Das habe ich nicht gewusst, aber ich habe den Befehl verwendet.
Wenn ich den folgenden Code ausführen und die Datei unter Windows öffne, dann sieht man nichts... ein leeres Verzeichnis.

Code: Alles auswählen

UseZipPacker()
CreatePack(0,"testpaket.zip",#PB_PackerPlugin_Zip)
AddPackFile(0,GetCurrentDirectory()+"test.txt","/Texte/test.txt")
ClosePack(0)
(Win 11 64-bit, PB 6.04 und 6.10)
Antworten