Victor_VG
Tracker Mod | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Baltazar500 Aniskin Bulat_Ziganshin Сейчас проделал эксперимент - скачал ftp://anonymous:@ftp.videolan.org:21/pub/videolan/vlc-android/3.0.13/VLC-Android-3.0.13-x86.apk и посмотрел как его свойства показывают 7zFM v18.05 и WinRAR v5.60: а если глянуть дерево каталогов в оригинальном .apk и "player.zip": видно, что это явно переименованный .apk, правда с ним уже "шалили" и структура архива битая - достаточно посмотреть MANIFEST.MF где указаны SHA-1 - .so нулевого размера не пройдут верификацию, хотя тест архива и будет успешным: так что тут можно однозначно назвать причины явлений - ручки шаловливые. Из оригинального .apk можно удалять файлы как из простого Zip, а тут плагин ArcLite от Far Manager 3.0 выводит сообщение об ошибке: Не поддерживается (0x80004001) delete.cpp:197 в таком коде: Код: void Archive::delete_files(const vector<UInt32>& src_indices) { vector<UInt32> deleted_indices; deleted_indices.reserve(file_list.size()); for_each(src_indices.begin(), src_indices.end(), [&] (UInt32 src_index) { enum_deleted_indices(src_index, deleted_indices); }); sort(deleted_indices.begin(), deleted_indices.end()); vector<UInt32> file_indices; file_indices.reserve(num_indices); for(UInt32 i = 0; i < num_indices; i++) file_indices.push_back(i); vector<UInt32> new_indices; new_indices.reserve(num_indices); set_difference(file_indices.begin(), file_indices.end(), deleted_indices.begin(), deleted_indices.end(), back_inserter(new_indices)); wstring temp_arc_name = get_temp_file_name(); try { ComObject<IOutArchive> out_arc; CHECK_COM(in_arc->QueryInterface(IID_IOutArchive, reinterpret_cast<void**>(&out_arc))); shared_ptr<ArchiveFileDeleterProgress> progress(new ArchiveFileDeleterProgress()); ComObject<IArchiveUpdateCallback> deleter(new ArchiveFileDeleter(new_indices, progress)); ComObject<IOutStream> update_stream(new ArchiveFileDeleterStream(temp_arc_name, progress)); COM_ERROR_CHECK(copy_prologue(update_stream)); COM_ERROR_CHECK(out_arc->UpdateItems(update_stream, static_cast<UInt32>(new_indices.size()), deleter)); // строка 197 close(); update_stream.Release(); File::move_file(temp_arc_name, arc_path, MOVEFILE_REPLACE_EXISTING); } catch (...) { File::delete_file_nt(temp_arc_name); throw; } reopen(); } |
---------- Жив курилка! (Р. Ролан, "Кола Брюньон") Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti |
|