Распаковка архива в Windows 8

Раньше я использовал MiniZip (оболочку zlib) для распаковки архивов. MiniZip нельзя использовать для приложений Metro, так как он использует устаревшие API в "iowin32.c" -- CreateFile() и SetFilePointer().

Я подумал, что это будет легко исправить, и создал "iowinrt.c" с заменой CreateFile() и SetFilePointer() на CreateFile2() и SetFilePointerEx(). Хотя таким образом я получил версию MiniZip, которая использует только одобренные Win8 API, она все же оказалась бесполезной — я забыл о песочнице. Если я выберу файл с помощью FileOpenPicker() и передам его путь моему модифицированному MiniZip, я все равно не смогу его открыть — CreateFile2() завершится ошибкой с сообщением «Отказано в доступе». сообщение.

Получается, что старый C API для доступа к файлам сейчас практически бесполезен; насколько я понимаю, чтобы исправить это, мне нужно будет повторно реализовать мой «iowinrt» в C++/CX, используя новый асинхронный доступ к файлам. Есть ли другие варианты? Мне кажется, я где-то видел, что WinRT имеет функцию сжатия/распаковки, но она работает только с отдельными файлами, а не с архивами.

Дополнительные требования: мне нужно, чтобы это работало в памяти.

На мгновение я подумал, что нашел решение через .NET Framework 4.5:

  1. Я нашел эту информацию о том, как создавать классы .NET, которые можно использовать из C++/CX: http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/3ff383d0-0c9f-4a30-8987-ff2b23957f01

  2. .NET Framework 4.5 содержит классы ZipArchive и ZipArchiveEntry в System.IO .Сжатие: http://msdn.microsoft.com/en-us/library/system.io.compression.ziparchive%28v=vs.110%29.aspx#Y0 http://msdn.microsoft.com/en-us/library/system.io.compression.ziparchiveentry%28v=vs.110%29.aspx#Y0

Я думал, что смогу создать библиотеку классов C# Metro с выводом WinMD введите ZipArchive и ZipArchiveEntry, а затем используйте это в моем проекте C++/CX. Однако, даже если бы это работало, оно не работало бы в памяти; оказывается, что ZipArchive и ZipArchiveEntry работают только с файлами.

8
задан Galadrius Krunthar 11 June 2012 в 02:48
поделиться