Работа с архивами
Цитата: Никита от 07.06.2021, 18:52Всем приветы)
Моменты следующий..
Есть приложение для андроид (apk файл)
нужно архиватором заменить в нём файл.
отключил проверку целостности и подписи апк на смартфоне.и если заменить нужный файл внутри апк с помощью архиватора 7-zip то приложение устанавливается на смартфон.
а если я это делаю в автоматическом режиме с помощью C# ZipArchive то готовое приложение не устанавливается.
есть ещё какие-то хорошие способы замены файлов внутри архивов с помощью C# ?
Всем приветы)
Моменты следующий..
Есть приложение для андроид (apk файл)
нужно архиватором заменить в нём файл.
отключил проверку целостности и подписи апк на смартфоне.
и если заменить нужный файл внутри апк с помощью архиватора 7-zip то приложение устанавливается на смартфон.
а если я это делаю в автоматическом режиме с помощью C# ZipArchive то готовое приложение не устанавливается.
есть ещё какие-то хорошие способы замены файлов внутри архивов с помощью C# ?
Цитата: Сергей от 07.06.2021, 18:53Привет, Никита 🖐
Как вариант, использовать консольную версию 7-Zip в Твоём проекте.
Привет, Никита 🖐
Как вариант, использовать консольную версию 7-Zip в Твоём проекте.
Цитата: Adler от 07.06.2021, 19:00Добрый день.
Я бы посмотрел в сторону сторонней Ionic.zip.
Есть еще одна из популярных библиотек, более легковесная, название забыл. На GitHub можете посмотреть. Ну или позже за компом буду, найду.А можете выложить, как пример, оригинальный apk и перепакованный ZipArchive, что бы найти отличия?
Добрый день.
Я бы посмотрел в сторону сторонней Ionic.zip.
Есть еще одна из популярных библиотек, более легковесная, название забыл. На GitHub можете посмотреть. Ну или позже за компом буду, найду.
А можете выложить, как пример, оригинальный apk и перепакованный ZipArchive, что бы найти отличия?
Цитата: Никита от 07.06.2021, 19:16Цитата: Adler от 07.06.2021, 19:00Добрый день.
Я бы посмотрел в сторону сторонней Ionic.zip.
Есть еще одна из популярных библиотек, более легковесная, название забыл. На GitHub можете посмотреть. Ну или позже за компом буду, найду.А можете выложить, как пример, оригинальный apk и перепакованный ZipArchive, что бы найти отличия?
Обязательно выложу, но уже ближе к ночи, сейчас не у компа)
Я думаю лучше вернее не оригинальный, а именно рабочий с использованием 7-Zip и нерабочий с моего проекта))
Цитата: Adler от 07.06.2021, 19:00Добрый день.
Я бы посмотрел в сторону сторонней Ionic.zip.
Есть еще одна из популярных библиотек, более легковесная, название забыл. На GitHub можете посмотреть. Ну или позже за компом буду, найду.А можете выложить, как пример, оригинальный apk и перепакованный ZipArchive, что бы найти отличия?
Обязательно выложу, но уже ближе к ночи, сейчас не у компа)
Я думаю лучше вернее не оригинальный, а именно рабочий с использованием 7-Zip и нерабочий с моего проекта))
Цитата: Никита от 07.06.2021, 19:17Цитата: Сергей от 07.06.2021, 18:53Привет, Никита
Как вариант, использовать консольную версию 7-Zip в Твоём проекте.А там такое есть, прошу прощения?))) тоже посмотрю)) спасибо
Цитата: Сергей от 07.06.2021, 18:53Привет, Никита
Как вариант, использовать консольную версию 7-Zip в Твоём проекте.
А там такое есть, прошу прощения?))) тоже посмотрю)) спасибо
Цитата: Adler от 07.06.2021, 19:25Когда-то надо было тоже из архива файл удалять и был нюанс, что он архив пересохраняет меняя какой-то параметр сжатия. Давно было, нюансов не помню, как и того, чем я это делал, встроенной библиотекой или сторонней. Надо бы на архивы "в живую" глянуть.
Имхо, 7-Zip конечно можно к C# прикрутить (SevenZipSharp), но это избыточное решение, если нужно только zip перепаковывать, особенно, учитывая, что с ним можно работать исключительно "родными" средствами .Net.
В отличии от того же lzma2 в 7z, для которого нет реализации на c#, то весь zip описан вдоль и поперек.
Когда-то надо было тоже из архива файл удалять и был нюанс, что он архив пересохраняет меняя какой-то параметр сжатия. Давно было, нюансов не помню, как и того, чем я это делал, встроенной библиотекой или сторонней. Надо бы на архивы "в живую" глянуть.
Имхо, 7-Zip конечно можно к C# прикрутить (SevenZipSharp), но это избыточное решение, если нужно только zip перепаковывать, особенно, учитывая, что с ним можно работать исключительно "родными" средствами .Net.
В отличии от того же lzma2 в 7z, для которого нет реализации на c#, то весь zip описан вдоль и поперек.
Цитата: Никита от 07.06.2021, 19:36Цитата: Adler от 07.06.2021, 19:25Когда-то надо было тоже из архива файл удалять и был нюанс, что он архив пересохраняет меняя какой-то параметр сжатия.
Как раз первым делом на сжатие и подумал, но пробовал и по дефолту оставлять и с принудительно отключенным сжатием
Цитата: Adler от 07.06.2021, 19:25Когда-то надо было тоже из архива файл удалять и был нюанс, что он архив пересохраняет меняя какой-то параметр сжатия.
Как раз первым делом на сжатие и подумал, но пробовал и по дефолту оставлять и с принудительно отключенным сжатием
Цитата: Никита от 07.06.2021, 19:39Цитата: Сергей от 07.06.2021, 18:53Привет, Никита
Как вариант, использовать консольную версию 7-Zip в Твоём проекте.Вот сейчас попробовал..
написано было что параметр u обновляет файлы в архиве, если имеются с таким же именем..
Но он почему-то просто закинул в корень архива, как новый файл, даже не поискав и не удалив старый файл в подпапках
такой командой обновлял архив "7z u httpAPK.zip CERT.SF"
Цитата: Сергей от 07.06.2021, 18:53Привет, Никита
Как вариант, использовать консольную версию 7-Zip в Твоём проекте.
Вот сейчас попробовал..
написано было что параметр u обновляет файлы в архиве, если имеются с таким же именем..
Но он почему-то просто закинул в корень архива, как новый файл, даже не поискав и не удалив старый файл в подпапках
такой командой обновлял архив "7z u httpAPK.zip CERT.SF"
Цитата: Никита от 07.06.2021, 23:33Цитата: Adler от 07.06.2021, 19:25Когда-то надо было тоже из архива файл удалять и был нюанс, что он архив пересохраняет меняя какой-то параметр сжатия. Давно было, нюансов не помню, как и того, чем я это делал, встроенной библиотекой или сторонней. Надо бы на архивы "в живую" глянуть.
Имхо, 7-Zip конечно можно к C# прикрутить (SevenZipSharp), но это избыточное решение, если нужно только zip перепаковывать, особенно, учитывая, что с ним можно работать исключительно "родными" средствами .Net.
В отличии от того же lzma2 в 7z, для которого нет реализации на c#, то весь zip описан вдоль и поперек.
Прилагаю ссылочку на архив.. Заменен файл AndroidManifest.xml в корне..
Цитата: Adler от 07.06.2021, 19:25Когда-то надо было тоже из архива файл удалять и был нюанс, что он архив пересохраняет меняя какой-то параметр сжатия. Давно было, нюансов не помню, как и того, чем я это делал, встроенной библиотекой или сторонней. Надо бы на архивы "в живую" глянуть.
Имхо, 7-Zip конечно можно к C# прикрутить (SevenZipSharp), но это избыточное решение, если нужно только zip перепаковывать, особенно, учитывая, что с ним можно работать исключительно "родными" средствами .Net.
В отличии от того же lzma2 в 7z, для которого нет реализации на c#, то весь zip описан вдоль и поперек.
Прилагаю ссылочку на архив.. Заменен файл AndroidManifest.xml в корне..
Цитата: Никита от 08.06.2021, 00:51Цитата: Adler от 07.06.2021, 19:25Когда-то надо было тоже из архива файл удалять и был нюанс, что он архив пересохраняет меняя какой-то параметр сжатия. Давно было, нюансов не помню, как и того, чем я это делал, встроенной библиотекой или сторонней. Надо бы на архивы "в живую" глянуть.
Имхо, 7-Zip конечно можно к C# прикрутить (SevenZipSharp), но это избыточное решение, если нужно только zip перепаковывать, особенно, учитывая, что с ним можно работать исключительно "родными" средствами .Net.
В отличии от того же lzma2 в 7z, для которого нет реализации на c#, то весь zip описан вдоль и поперек.
А вот ссылка на архив с файлами где обычная замена через 7zip и через C#
Цитата: Adler от 07.06.2021, 19:25Когда-то надо было тоже из архива файл удалять и был нюанс, что он архив пересохраняет меняя какой-то параметр сжатия. Давно было, нюансов не помню, как и того, чем я это делал, встроенной библиотекой или сторонней. Надо бы на архивы "в живую" глянуть.
Имхо, 7-Zip конечно можно к C# прикрутить (SevenZipSharp), но это избыточное решение, если нужно только zip перепаковывать, особенно, учитывая, что с ним можно работать исключительно "родными" средствами .Net.
В отличии от того же lzma2 в 7z, для которого нет реализации на c#, то весь zip описан вдоль и поперек.
А вот ссылка на архив с файлами где обычная замена через 7zip и через C#
Цитата: Adler от 08.06.2021, 10:26Из заметных отличий, это то, что в заголовке архива 7zip, как и у оригинального, параметр
Version needed to extract archiveуказан как 0x14, а у перепакованного C# 0x0A и перепаковка 7zip не меняет размер архива, т.к. та же степень сжатия, а у C# меньше.
P.S. Насчет замены файлов не понял, т.к. по всех 4 архивах содержимое всех файлов абсолютно одинаковое.
[spoiler title="AndroidManifest.xml"]
[/spoiler]P.S. Есть еще вот такая библиотека для работы с zip - zipstorer
Из заметных отличий, это то, что в заголовке архива 7zip, как и у оригинального, параметр СкопированоVersion needed to extract archive указан как 0x14, а у перепакованного C# 0x0A и перепаковка 7zip не меняет размер архива, т.к. та же степень сжатия, а у C# меньше.
P.S. Насчет замены файлов не понял, т.к. по всех 4 архивах содержимое всех файлов абсолютно одинаковое.



P.S. Есть еще вот такая библиотека для работы с zip - zipstorer
Цитата: Никита от 08.06.2021, 10:38Цитата: Adler от 08.06.2021, 10:26Из заметных отличий, это то, что в заголовке архива 7zip, как и у оригинального, параметр
Version needed to extract archiveуказан как 0x14, а у перепакованного C# 0x0A и перепаковка 7zip не меняет размер архива, т.к. та же степень сжатия, а у C# меньше.
P.S. Насчет замены файлов не понял, т.к. по всех 4 архивах содержимое всех файлов абсолютно одинаковое.
[spoiler title="AndroidManifest.xml"]
[/spoiler]
Перепроверил. Да, случайно оба раза скинул комбинацию из архивов 7-zip и C# без оригинального файла.
Попробую Zipstorer сегодня ещё) спасибо
Цитата: Adler от 08.06.2021, 10:26Из заметных отличий, это то, что в заголовке архива 7zip, как и у оригинального, параметр
СкопированоVersion needed to extract archiveуказан как 0x14, а у перепакованного C# 0x0A и перепаковка 7zip не меняет размер архива, т.к. та же степень сжатия, а у C# меньше.
P.S. Насчет замены файлов не понял, т.к. по всех 4 архивах содержимое всех файлов абсолютно одинаковое.
AndroidManifest.xml
Перепроверил. Да, случайно оба раза скинул комбинацию из архивов 7-zip и C# без оригинального файла.
Попробую Zipstorer сегодня ещё) спасибо
Цитата: Adler от 08.06.2021, 10:46Цитата: Никита от 08.06.2021, 10:38Есть какие-то предложения, как добиться идентичного с 7-zip результата с помощью C#?
Попробовать другие, сторонние библиотеки, SharpZipLib, Ionic.Zip или ту же ZipStorer
Цитата: Никита от 08.06.2021, 10:38Есть какие-то предложения, как добиться идентичного с 7-zip результата с помощью C#?
Попробовать другие, сторонние библиотеки, SharpZipLib, Ionic.Zip или ту же ZipStorer
