Git Product home page Git Product logo

ziparchive's Introduction

CI

SSZipArchive

ZipArchive is a simple utility class for zipping and unzipping files on iOS, macOS and tvOS.

  • Unzip zip files;
  • Unzip password protected zip files;
  • Unzip AES encrypted zip files;
  • Create zip files;
  • Create large (> 4.3Gb) files;
  • Create password protected zip files;
  • Create AES encrypted zip files;
  • Choose compression level;
  • Zip-up NSData instances. (with a filename)

Version 2.5.0+ Updates Minimum OS Versions

A key dependency of this project is the zlib library. zlib before version 1.2.12 allows memory corruption when deflating (i.e., when compressing) if the input has many distant matches according to CVE-2018-25032.

zlib 1.2.12 is included in macOS 10.15+ (with latest security patches), iOS 15.5+, tvOS 15.4+, watchOS 8.4+. As such, these OS versions will be the new minimums as of version 2.5.0 of ZipArchive.

If you need support for previous versions of ZipArchive for earlier OS support you can target an earlier version but know you will be using an unmaintained version of this library.

We will not support versions of ZipArchive that use dependencies with known vulnerabilities.

Installation and Setup

The main release branch is configured to support Objective-C and Swift 4+.

SSZipArchive works on Xcode 12 and above, iOS 15.5 and above, tvOS 15.4 and above, macOS 10.15 and above, watchOS 8.4 and above.

CocoaPods

In your Podfile:
pod 'SSZipArchive'

You should define your minimum deployment target explicitly, like: platform :ios, '15.5'

Recommended CocoaPods version should be at least CocoaPods 1.7.5.

SPM

Add a Swift Package reference to https://github.com/ZipArchive/ZipArchive.git (SSZipArchive 2.4.2 and higher or master)

Carthage

In your Cartfile:
github "ZipArchive/ZipArchive"

We do not release a Carthage pre-built package. Developers are encouraged to build one themselves.

Manual

  1. Add the SSZipArchive and minizip folders to your project.
  2. Add the libz and libiconv libraries to your target.
  3. Add the Security framework to your target.
  4. Add the following GCC_PREPROCESSOR_DEFINITIONS: HAVE_INTTYPES_H HAVE_PKCRYPT HAVE_STDINT_H HAVE_WZAES HAVE_ZLIB ZLIB_COMPAT $(inherited).

SSZipArchive requires ARC.

Usage

Objective-C

//Import "#import <ZipArchive.h>" for SPM/Carthage, and "#import <SSZipArchive.h>" for CocoaPods.

// Create
[SSZipArchive createZipFileAtPath:zipPath withContentsOfDirectory:sampleDataPath];

// Unzip
[SSZipArchive unzipFileAtPath:zipPath toDestination:unzipPath];

Swift

//Import "import ZipArchive" for SPM/Carthage, and "import SSZipArchive" for CocoaPods.

// Create
SSZipArchive.createZipFileAtPath(zipPath, withContentsOfDirectory: sampleDataPath)

// Unzip
SSZipArchive.unzipFileAtPath(zipPath, toDestination: unzipPath)

License

SSZipArchive is protected under the MIT license and our slightly modified version of minizip-ng (formally minizip) 3.0.6 is licensed under the Zlib license.

Acknowledgments

  • Big thanks to aish for creating ZipArchive. The project that inspired SSZipArchive.
  • Thank you @soffes for the actual name of SSZipArchive.
  • Thank you @randomsequence for implementing the creation support tech.
  • Thank you @johnezang for all his amazing help along the way.
  • Thank you @nmoinvaz for minizip-ng (formally minizip), the core of ZipArchive.
  • Thank you to all the contributors.

ziparchive's People

Contributors

jhudsonwa avatar coeur avatar soffes avatar willson-chen avatar adamyanalunas avatar fritzt0 avatar boherna avatar screekworkshop avatar stuclift avatar ssoper avatar caldofran avatar pietbrauer avatar ls-philippe-casgrain avatar randomsequence avatar davidde94 avatar antiraum avatar mollidor avatar clementpadovani avatar dimohamdy avatar nicked avatar lagapollo avatar rob2468 avatar wanewang avatar nivektric avatar squaredtiki avatar johnezang avatar jnis avatar ibsh avatar florianbachmann avatar dennda avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.