Bagaimana saya bisa mengontrol urutan file dalam arsip ZIP?

13

Ada kalanya diperlukan untuk file dalam arsip ZIP berada dalam urutan tertentu (misalnya, saya saat ini membuat EPUB , yang mengharuskan entri pertama dalam ZIP menjadi mimetypefile). Bagaimana saya bisa melakukan ini di Windows?

Saat ini saya menggunakan 7-Zip sebagai pengarsipan saya, tetapi saya tidak melihat opsi untuk mengontrol urutan file. Bisakah ini dilakukan dengan 7-zip? Jika tidak, opsi apa yang saya miliki?

Ben Blank
sumber
3
Menambahkannya sesuai urutan yang seharusnya harus dilakukan. Coba zip file mimetype terlebih dahulu, lalu tambahkan file lain ke zip sebagai operasi kedua.
Paul
1
@ Paul - Anehnya, itu tidak berhasil. : - /
Ben Blank
Apakah mungkin LIFO? Bisakah Anda mencoba menambahkan mimetype yang terakhir? Anda menguji terhadap pembaca epub, bukan hanya membuka ritsleting?
Paul
3
Aplikasi yang mengharuskan konten dalam urutan tertentu rusak.
psusi
3
Sheesh, penulis spec perlu dibawa kembali dan dipukul dengan petunjuk empat.
psusi

Jawaban:

3

Salah satu caranya adalah: Kebanyakan arsip, dan alat arsip memiliki kemampuan untuk menambahkan atau menambahkan item file tambahan ke arsip asli. Buat arsip Anda dengan item yang Anda inginkan di atas, lalu tambahkan item file tambahan ke arsip yang dibuat. Saya tahu ini bekerja di alat ZIP windows sendiri.

sepertinya jawaban sebenarnya ada di luar saya, di sini untuk C # /programming/5898787/creating-an-epub-file-with-a-zip-library

di sini untuk HTML (menggunakan 7z)
http://next.blurb.com/2011/02/17/how-to-make-an-ipad-photo-book/

secara khusus bagian ini

2. Buka folder sampel-foto-buku, dan salin jenis file mimetype ke arsip (kosong) terlebih dahulu.
3. Sekarang, salin folder lain (META-INF dan OEBPS) ke dalam arsip.


http://idpf.org/epub/30/spec/epub30-ocf.html#physical-container-zip

Isi dari file mimetype tidak boleh mengandung padding atau spasi putih mana pun, tidak boleh dimulai dengan tanda tangan Unicode (atau Byte Order Mark), dan case dari string tipe MIME harus persis seperti yang disajikan di atas. File mimetype juga tidak boleh dikompresi atau dienkripsi, dan tidak boleh ada bidang tambahan di header ZIP-nya.

Psycogeek
sumber
1
Saya memberikan ini mencoba di 7-zip (menciptakan arsip dengan hanya mimetype , kemudian menambahkan file lainnya), tetapi tidak berhasil. The mimetype Data datang pertama dalam file, tetapi tabel file tampaknya abjad.
Ben Blank
2
@BenBlank Pastikan Anda tidak memeriksa ini menggunakan klien zip - mereka akan memesan ulang dengan cara yang sesuai dengan manusia, belum tentu apa yang akan dilihat pembaca epub.
Paul
Mungkin masalahnya adalah bahwa 7-Zip suka mempertahankan direktori itu dalam urutan alpha dan kemudian (harus) menulis ulang ketika menutup file zip. Seseorang bisa, secara teori, memperbaikinya dengan mengedit file zip dengan hex editor atau semacam alat ad-hoc dan menata ulang direktori - itu tidak terlalu rumit. Pengeditan akan disederhanakan dengan memasukkan file dummy yang selalu diurutkan terlebih dahulu. Namun, tentu saja, teknik pada tautan di atas juga bisa digunakan.
Daniel R Hicks
Saya biasa 7z l filename.zipmendaftar isi zip, dan tampaknya tidak dalam urutan apa pun (nama, jalur, tanggal, ukuran ...). Jadi, menggunakan baris perintah ini dapat membantu menentukan urutan sebenarnya dari file di zip.
Scott McClenning
@ Paul - Saya memeriksa dengan membuka .epubeditor teks dan memeriksa tabel file secara langsung, jadi sepertinya pendekatan ini tidak bekerja untuk saya. Saya akan mengambil palu Python untuk masalah dan melihat apakah itu tidak memperbaikinya.
Ben Blank
3

Versi GUI 7-zip:

  1. ekstrak mimetypedari file EPUB
  2. hapus mimetypedalam file EPUB
  3. ganti nama mimetypemenjadi!mimetype
  4. tambahkan !mimetypeke file EPUB
  5. ganti nama !mimetypemenjadi mimetypedi dalam file EPUB

Versi drag and drop sederhana 7-zip:

Pergi ke halaman unduh 7-zip dan unduh 7-Zip Extra: standalone console version, 7z DLL, Plugin for Far Manager(tidak bekerja dengan stabil 9.20, tetapi bekerja dengan baik dengan 9.38 beta dan 15.06 beta). Ambil 7za.exe. Simpan kode di bawah ini sebagai repair.batfile:

7za x %1 mimetype -y
7za d %1 mimetype
move /y mimetype !mimetype
7za a %1 !mimetype
del /f !mimetype
7za rn %1 !mimetype mimetype

Masukkan 7za.exedan repair.batdalam direktori yang sama dan cukup tarik file EPUB Anda repair.bat.

Tithen-Firion
sumber
2

Membuat EPUB membutuhkan proses dua langkah, pertama tambahkan mimetype tanpa kompresi (!), Kedua tambahkan file / folder lainnya. Jadi menggunakan 7z Anda bisa mengambil perintah berikut:

7z a -mx=0 dummy.zip mimetype

Untuk dapat menggunakan wildcard * Anda harus memindahkan file mimetype ke folder lain dan memulai langkah kedua:

7z a -r dummy.zip *

Setelah itu ganti nama ZIP menjadi EPUB dan Anda pergi!

Peter
sumber
Saya baru saja mencoba ini dan saya masih mendapatkan kesalahan ini:Epubcheck Version 3.0.1 ERROR: C:/MYSELF/Books/1984---George-Orwell/1984---George-Orwell.epub: Mimetype entry missing or not the first in archive
Tomáš Zato - Reinstate Monica
1

Dalam pengalaman saya, jawaban paling sederhana (untuk Windows, 7, 64-bit) adalah menggunakan fungsionalitas Zip bawaan Windows. Gunakan "Kirim Ke" untuk mengirim mimetype ke folder zip baru, kemudian gunakan 7Zip untuk menambahkan META-INF dan OEBPS ke zip baru. Itu tampaknya selalu bekerja dalam hal mengurutkan file mimetype terlebih dahulu. Saya belum berhasil melakukan operasi ini hanya dengan 7-zip. (Ini untuk ePUBS, tetapi harus berfungsi, untuk pengurutan, di area lain juga.)

Saya harap ini membantu orang lain.

Kimberly Hitchens
sumber
0

Menggunakan winrar telah membantu saya. Saya menambahkan mimetype ke zip-arsip (tidak terkompresi!), Kemudian menambahkan folder yang tersisa, kompresi reguler.

Solusi ini tidak bekerja dengan 7-zip untuk saya, karena ia terus menyusun ulang file.

kat
sumber
0

Saya memiliki masalah yang sama ketika bekerja dengan file EPUB.

Pada Windows 7 saya memperbaikinya dengan trik aneh ini di mana saya memastikan bahwa saya mengurutkan semua file yang akan saya buat menjadi zip dengan cara yang membuat saya mengetikkan file di atas (biasanya mengurutkan berdasarkan ukuran). Kemudian saya memastikan bahwa saya menandai semua file dari atas ke bawah dengan kursor saya sebelum mengirimnya ke folder (zip) terkompresi (seperti ini: https://support.microsoft.com/en-us/help/14200/ windows-kompres-uncompress-zip-file ). Setelah itu saya bisa mengubah nama dan tipe file apa pun .epub.

Namun, setelah saya memutakhirkan ke Windows 10 trik ini tidak berfungsi lagi. Untungnya saya telah menemukan cara lain. Pertama Anda mengirim file yang Anda inginkan di bagian atas (mimetype) di file zip ke folder (zip) terkompresi. Pastikan hanya file itu. Daripada saya mengambil file lain saya ingin zip (dua folder dalam kasus saya) tandai dengan kursor dan seret ke file zip yang baru saja saya buat. Windows kemudian akan menambahkan file baru ke file zip, dan menjaga file yang semula Anda zip di atas.

MatsKS
sumber
1
Bisakah Anda menunjukkan dengan jelas apa jawaban dari pertanyaan penulis? Memutakhirkan ke Windows 10 sebenarnya bukan jawaban untuk pertanyaan ini. Anda harus berkonsentrasi pada bagaimana Anda memperbaikinya, memberikan spesifik, pernyataan Anda adalah cara yang luas. Jika saya mereproduksi masalah asli, saya tidak akan bisa menyelesaikannya dengan jawaban Anda.
Ramhound