Как можно контролировать порядок файлов в ZIP-архиве?

Как можно контролировать порядок файлов в ZIP-архиве?

Бывают случаи, когда необходимо, чтобы файлы в ZIP-архиве располагались в определенном порядке (например, я сейчас создаюEPUB-файлы, которые требуют, чтобы первой записью в ZIP-архиве был mimetypeфайл). Как это сделать в Windows?

Я сейчас использую7-Зипкак мой архиватор, но я не вижу возможности контролировать порядок файлов. Можно ли это сделать с помощью 7-zip? Если нет, какие у меня есть варианты?

решение1

Версия графического интерфейса 7-zip:

  1. извлечение mimetypeиз файла EPUB
  2. удалить mimetypeв файле EPUB
  3. переименовать mimetypeв!mimetype
  4. добавить !mimetypeв файл EPUB
  5. переименовать !mimetypeво mimetypeвнутренний файл EPUB

Простая версия 7-zip с функцией перетаскивания:

Идти кСтраница загрузки 7-zipи скачать 7-Zip Extra: standalone console version, 7z DLL, Plugin for Far Manager(не работает со стабильной версией 9.20, но хорошо работает с 9.38 beta и 15.06 beta). Извлечь 7za.exe. Сохраните код ниже как repair.batфайл:

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

Поместите 7za.exeи repair.batв тот же каталог и просто перетащите файл EPUB на repair.bat.

решение2

Один из способов: большинство архиваторов и инструментов архивирования имеют возможность добавлять или дополнять элементы файлов к исходному архиву. Создайте свой архив с нужными элементами вверху, затем добавьте дополнительные элементы файлов в созданный архив. Я знаю, что это работает в собственных инструментах ZIP Windows.

похоже, настоящий ответ мне неизвестен, здесь для C# https://stackoverflow.com/questions/5898787/создание-файла-epub-с-библиотекой-zip

здесь для HTML (используя 7z)
http://next.blurb.com/2011/02/17/how-to-make-an-ipad-photo-book/

конкретно эта часть

2.Откройте папку sample-photo-book и сначала скопируйте mimetype файла в (пустой) архив.
3.Теперь скопируйте другие папки (META-INF и OEBPS) в архив.


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

Содержимое файла mimetype не должно содержать начальных отступов или пробелов, не должно начинаться с подписи Unicode (или метки порядка байтов), а регистр строки типа MIME должен быть точно таким, как представлено выше. Файл mimetype также не должен быть ни сжатым, ни зашифрованным, и в его заголовке ZIP не должно быть дополнительных полей.

решение3

Создание EPUB требует двухэтапного процесса, сначала добавьте mimetype без (!) сжатия, затем добавьте другие файлы/папки. Таким образом, используя 7z, вы можете выполнить следующие команды:

7z a -mx=0 dummy.zip mimetype

Чтобы использовать подстановочный знак *, необходимо переместить файл mimetype в другую папку и начать второй шаг:

7z a -r dummy.zip *

После этого переименуйте ZIP-файл в EPUB и все готово!

решение4

Мне помогло использование WinRAR. Я добавил MIME-тип в zip-архив (несжатый!), затем позже добавил оставшиеся папки, обычное сжатие.

Это решение у меня не сработало с 7-zip, так как он постоянно меняет порядок файлов.

Связанный контент