Ark 라이브러리Ark Library
SDK 다운로드
SDK 사용 라이선스
Ark 라이브러리는 개인 개발자가 무료 프로그램을 개발하는 경우에 한해 무료로 사용할 수 있습니다. 만일 기업에서 자사 제품에 사용하거나 상업적 소프트웨어에 사용할 경우 제품을 구매하셔야 합니다. 아래 예시는 무료로 사용 가능한 경우와 구매를 하여야 하는 경우의 예입니다. 자세한 사항은 구매문의를 참고하시기 바랍니다.
무료로 사용 가능한 경우
- 개인 개발자가 프리웨어를 개발하여 무료로 배포하는 경우
- 학생이 학교 숙제나 졸업작품등에 사용하는 경우
SDK 라이선스를 구매하여야 하는 경우
- 법인이 프리웨어를 개발하여 무료로 배포하는 경우
- 법인이 상용 소프트웨어를 개발하여 판매하는 경우
- 개인 개발자가 유료 소프트웨어를 개발하여 판매하는 경우
- 기타 상업적 용도로 사용하는 경우
다운로드

변경사항
4.5.2.15
- 2012/5/10
- 압축파일 인식 부분 개선
- __OSX 메타폴더 무시 기능 사용시 발생하는 메모리 릭 문제 수정
- FILE_ATTRIBUTE_SYSTEM 속성을 처리하지 못하던 버그 수정
- unix 에서 압축한 zip 파일의 심볼릭 링크 처리 기능 추가(POSIX)
4.5.1.14
- 2012/4/23
- AVI, MKV 파일을 압축파일로 잘못 인식하지 않도록 개선 및 ARK_FF_MATROSKA 추가
- 7z 포맷의 FILE_ATTRIBUTE_ARCHIVE 속성을 가져오지 않던 버그 수정
4.5.0.13
- 2012/4/12
- 일부 파일을 BH포맷으로 잘못 인식하던 문제 수정
- tar 파일 생성시 헤더 저장방식 개선
- 코드사인된 zip 포맷의 sfx 파일을 열때 손상된 파일로 잘못 인식하던 버그 수정
- 아주 작은 크기의 .Z 포맷의 압축을 풀지 못하던 버그 수정
- 파일명에 포함된 tab 을 _ 로 바꾸도록 기능 추가
- 파일명에 따옴표가 포함된 경우 파일을 풀지 못하던 문제 수정
- 7z 포맷의 delta, deflate 알고리즘 압축 해제 지원 추가
- ARK_COMPRESSION_METHOD_DELTA 추가
4.4.0.11
- 2012/3/5
- J2J 로 두번 변조한 파일을 열지 못하는 문제점 수정
- zip/zipx 압축시 forceUtf8FileName 옵션이 켜져 있으면 파일의 read only, hidden 등의 속성이 저장되지 않는 버그 수정
- 리소스에 압축데이타가 포함된 일부 SFX 파일을 열지 못하던 문제 수정
- CheckFormat 에서 파일 앞부분을 체크하는 버퍼의 크기를 30k->1MB 로 늘림
- 일부 환경에서 작은 파일의 압축해제 속도가 느리던 문제 수정
- 맥 환경에서 발생하는 충돌을 피하기 위해서, Ark.h 의 BOOL 을 전부 BOOL32 로 바꾸어 버림
- ARKERR_CANT_CONVERT_FILENAME 추가
- zip 포맷에서 SArkFileInfo::SetFileName() 호출시 에러 발생할 경우 파일을 목록에 추가하지 않던것을 그냥 추가하도록 수정 (posix 에만 해당.)
- posix 에서는 파일명에 '?' 가 들어간 경우 정상적으로 압축을 해제할 수 있도록 수정
4.3.1.10
- 2012/2/22
- 여러개의 블럭에 파일의 데이타가 걸쳐진 CAB 파일의 압축을 풀지 못하던 버그 수정
- ZipCrypto 처리 속도 약간 향상 (대략 10%?)
- SArkGlobalOpt::bIgnoreMacOSXMetaFolder 옵션 추가
- 암호걸린 3G 이상인 EGG 포맷의 압축을 풀지 못하는 버그 수정
- AES 암호화 된 EGG 파일의 암호가 틀리거나 파일이 손상된 경우 ARKERR_CANT_READ_DATA 를 리턴하던것을 ARKERR_INVALID_FILE_CRC 를 리턴하도록 수정
- 압축하거나 압축 풀때 0 바이트 파일에 대한 진행율이 0% 가 나오던것을 100% 가 나오도록 수정
4.3.0.9
- 2012/2/10
- ZIP 파일 내부의 파일 갯수가 10만개쯤 넘어가면 파일을 여는 속도가 무지 느려지던 문제 수정
- TBZ 파일을 솔리드 압축으로 열때 파일 크기가 커지면(100MB 정도) 파일을 여는 속도가 무지 느려지던 문제 수정
- ZIP 포맷의 extra field header 가 손상된 경우 죽는 경우가 있던 버그 수정
- ZIP 포맷의 센트럴 헤더가 손상되어서 로컬헤더 정보를 읽다가 죽는 경우가 있던 버그 수정
- ZIP 포맷의 deflate64 알고리즘 처리시 데이타가 손상된 경우 죽는 경우가 있던 버그 수정
- LZH 포맷의 헤더가 손상된 경우 죽는 경우가 있던 버그 수정
- LZH 포맷의 데이타가 손상된 경우 죽는 경우가 있던 버그 수정
- LZH 포맷의 데이타가 조작되어서 압축 풀때 매우 큰 파일을 생성하는 문제 수정
- RAR 포맷의 헤더가 손상된 경우 죽거나 먹통되는 경우가 있던 버그 수정
- ARJ 포맷의 데이타가 손상된 경우 죽는 경우가 있던 버그 수정
- CAB 포맷에 CFData 항목이 있을때 죽는 버그 수정
- CAB 포맷에 내부 폴더 정보가 손상된 경우 죽는 버그 수정
- ACE 포맷의 압축 해제중 핸들릭이 발생하던 버그 수정
- 일부 분할 압축된 파일을 열 때 메모리 릭이 발생하던 버그 수정
- ZIP,TAR 포맷의 압축 해제시 실행 속성이 있을경우, 현재 유저뿐만 아니라 다른 사용자도 실행 가능하게 속성을 주도록 수정
4.2.1.7
- 2012/1/30
- SFX 로 분할 압축된 RAR 파일의 첫번째 파일의 확장자를 RAR 로 바꾸었을때에도 파일을 열 수 있도록 수정
- RAR 파일 내부에 솔리드 압축된 파일과 솔리드 압축되지 않은 파일이 섞여 있을때 압축을 풀지 못하던 버그 수정
- 손상된 Deflate64 데이타의 압축 해제시 버퍼 오버플로우가 발생하는 경우가 있던 버그 수정
- 파일명이 260자 넘어가는 긴 파일을 굳이 만들지 않도록 수정
- .tar 압축시 unix tar 에 가깝게 파일을 생성하도록 수정
4.2.0.6
- 2012/1/26
- 공백이 포함된 ace 파일을 열지 못하던 버그 수정
- 분할 압축된 RAR 파일에 더미 데이타가 붙어있는 경우 풀지 못하던 버그 수정
- .tgz 파일의 확장자가 .tar 로 잘못되어 있는 경우 내부 파일명에 .tar 를 붙이도록 기능 추가
- Deflate64 압축해제시 안정성 강화
- SArkGlobalOpt::bConvertNFD2NFCWhenMacOS 옵션 추가
- ZIP 파일처리시 ARK_CP_UTF8_MAC 코드페이지를 처리하지 못하던 버그 수정
- 멀티코어에서 압축시 에러 상황이 발생한 경우 크래시가 발생하던 버그 수정
- ZIP 파일에서 아이템을 삭제할때 진행율이 100%가 넘어가는 경우가 있던 버그 수정
4.1.3.5
- 2012/1/20
- 헤더가 조작된 LZH 파일의 파일명 처리시 버퍼 오버플로우가 발생하던 버그 수정
4.1.2.4
- 2012/1/19
- 손상된 ARJ 파일 처리시 크래시가 발생하는 버그 수정
4.1.1.3
- 2012/1/18
- 압축풀 폴더 경로가 길 경우 폴더 생성중 오버플로우로 죽던 버그 수정
- ARKERR_NOT_SUPPORTED_OPERATION 에러코드 추가
- 4G가 넘는 TGZ 파일을 열때 간혹 손상된 파일이라고 에러를 리턴하던 버그 수정
4.1.0.2
- 2012/1/17
- SArkNtfsFileTimes 구조체 추가
- SArkFileItem::fileTimeNtfs 항목 삭제, SArkFileItem::ntfsFileTimes 항목 추가
- NTFS 파일 시간 처리 부분 개선
- LZH 파일의 파일명이 길 경우 헤더를 읽지 못하던 문제 수정
- LZH 파일의 데이터가 손상된 경우 크래시가 발생하던 문제 수정
- 솔리드 압축된 파일의 압축 해제시 파일 속성과 파일시간을 복원하지 않던 버그 수정
- 암호걸린 ACE 파일에 대해서 IsEncrypted() 가 FALSE 가 나오던 버그 수정
- ACE 포맷 처리 부분 개선
- tgz 포맷으로 압축시 gz 파일 내의 .tar 파일에 대해서도 시간 설정 기능 추가
- POSIX 환경에서도 압축푼 파일의 시간을 세팅하는 기능 추가
- POSIX 환경에서 에서 TAR 포맷의 실행파일 처리 기능 추가
4.0.0.1
- 2012/1/3
- ZIP 압축시 LZMA 압축 알고리즘, AES 암호화 지원 추가
- Deflate 압축시 멀티코어 지원 기능 추가
- tar, tgz 압축 기능 추가
- 맥OS 지원(Ark64.dylib) 및 SDK에 POSIX용 SO 포함
- SDK에 다양한 샘플 프로젝트 추가
- PMA, j2j 포맷 해제 지원 추가
- 여러개의 블럭으로 구성된 bzip2 압축 해제 지원 기능 추가
- 최신버전의 알집으로 암호를 걸어서 압축한 EGG 포맷의 압축을 해제하지 못하던 문제 수정
- posix 에서 RAR 포맷의 유니코드 패스워드를 처리하지 못하던 버그 수정
- RAR 압축해제시 암호가 틀린경우에도 CRC 에러라고만 나오던 버그 수정
- 에러코드가 잘못 리턴되던 버그 여기 저기 수정
- 기타 소소한 개선 및 버그 수정
3.2.2.5
- 2011/12/21
- LZMA-ZIPCRYPTO 를 사용하는 ZIP 파일의 압축을 풀지 못하던 버그 수정
3.2.1.4
- 2011/9/7
- 암호걸린 파일 압축 해제시 동일한 이름의 파일이 있을 경우 '이름 변경' 선택후 암호를 물어볼때 '취소'를 하면 원래 디렉토리에 있던 파일이 삭제되는 버그 수정
- 일부 tgz 파일이 손상되지 않았는데 손상되었다고 잘못 메시지를 출력하던 버그 수정
- deflate+aes 조합에서 분할압축의 뒷부분이 없을때 ARKERR_INFLATE_FAILED 에러가 발생하던것을 ARKERR_CANT_READ_DATA 가 발생하도록 수정
- 일부 deflate64 파일의 압축을 제대로 해제하지 못하던 버그 수정
- 구버전 rar(rar20) 파일의 암호를 풀지 못하던 버그 수정
- LZMA로 압축하고 AES 로 암호를 건 ZIP 파일을 열지 못하던 버그 수정
- 압축파일을 tar 로 묶은 경우 tar 파일이 아니라 안에 들어 있는 압축파일로 잘못 인식하던 버그 수정
- ARK_FF_XEF 추가
- 암호걸린 7zip 파일의 암호화 방식이 Unknown 으로 나오던 문제 수정
- ARK_ENCRYPTION_METHOD 에 ARK_ENCRYPTION_METHOD_PKAES128 등 추가
- 기타 사소한 개선
3.2.0.3
- 2011/7/11
- SDK에 ZIP 포맷 압축 해제 전용 DLL(ArkUnzip32.dll, ArkUnzip64.dll) 파일 포함
- 0 바이트 크기의 파일이 포함된 CAB 파일을 제대로 처리하지 못하던 버그 수정
- IMG 포맷 지원 기능 추가
- SFX 생성시 파일의 크기가 4GB를 넘을 경우 에러를 리턴하도록 기능 추가
- 7z 파일은 IArkEvent::OnOpening() 콜백 호출시 취소를 해도 취소가 되지 않던 버그 수정
- ZIP 파일 압축시 파일명을 UTF-8 로 저장한 경우 UNIX 에서 압축 해제시 퍼미션 처리가 제대로 안되던 버그 수정
- WIM 포맷 파일을 열때 IArkEvent::OnOpening() 콜백 호출시 pFileInfo->fileName 이 NULL 로 넘어오던 것을 pFileInfo 가 NULL로 넘어가도록 수정
- .LZMA 포맷 지원 추가
- tgz, tbz 파일을 열때 IArkEvent::OnOpening() 콜백이 호출되지 않던 문제 수정
- ZIP 포맷의 ppmd 알고리즘 압축 해제 지원 추가
- 암호걸린 7zip, rar 압축해제시 틀린 암호를 입력한 경우, 다시 압축 해제를 시도할 때 더이상 콜백으로 암호를 물어보지 않던 버그 수정
- 7zip 압축 해제시 이미 동일한 파일이 있어서 사용자가 '건너 띄기'를 선택한 경우 '파일을 열 수 없습니다' 에러코드가 리턴되던 버그 수정
- 압축을 하거나 풀때 작업중인 파일을 탐색기에서 삭제하거나 이동하지 못하도록 수정
- 작은 크기의 파일 압축을 다수 풀때 느려지던 문제 수정
- 큰 크기의 cab 파일 압축 해제시 발생하던 문제 수정
- ARKERR_ACCESS_DENIED_TO_DEST_PATH 에러코드 추가 및 대상 폴더에 쓰기 권한이 없는 경우 바로 ARKERR_ACCESS_DENIED_TO_DEST_PATH 에러 리턴하고 멈추는 기능 추가
- 콜백으로 패스워드 입력시 NULL 이 전달될 경우 죽던 문제 수정
- 암호걸린 rar 파일의 압축 해제중 암호가 틀린걸 알게될 경우 쓰던 파일을 삭제하도록 기능 추가
- 압축 파일 내 파일의 경로명 앞에 .\ 로 시작하는 파일 처리 기능 추가
- lzh 포맷의 level2 헤더의 파일 타임을 dostime 으로 잘못 처리하던 버그 수정
- 파일명 암호걸린 7zip 파일을 열기 실패했을때 Open() 에서 TRUE 를 리턴하던 버그 수정
- 분할 압축된 rar 파일중 뒤에 이상한 padding 이 붙어있는 파일의 압축을 풀지 못하던 버그 수정
- ARK_FF_BAMSFX_NOTFIRSTVOL 추가 및 분할 압축된 밤톨이 sfx 파일 압축해제 지원
- FileFormat2Str()메쏘드에 ARK_FF_EGG_NOTFIRSTVOL 빼먹었던 버그 수정
- ARK_MULTIVOL_STYLE_ZIPX 추가 및 분할 압축된 zipx 포맷 지원 추가
- rar 파일 압축 해제시 암호가 틀렸거나 파일이 손상된 경우 바로 에러를 리턴하고 더이상 압축을 풀지 않도록 수정
- 암호걸린 7z 파일의 암호가 틀렸을때 0 바이트 파일을 지우지 못하던 버그 수정
- 일부 분할 압축된 arj 파일의 압축을 풀지 못하던 버그 수정
- ARK_FF_PAE, ARK_FF_CAB_NOTFIRSTVOL 추가
- ZIP 포맷의 AES 192bit 암호화 압축해제 지원
- 기타 자잘한 버그 수정
3.1.0.2
- 2011/5/18
- IArkEvent::OnAskPassword() 추가
- ZIP 포맷의 explode 알고리즘 추가
- IArk::_OpenW() 등 C++ 빌더를 위한 메쏘드 추가
- IArk::SetPassword(LPCWSTR password) 추가 및 유니코드 패스워드 처리 기능 추가
- ZIP64 포맷으로 압축할때 일부 헤더를 잘못 저장하던 버그 수정
- ARK_FF_ZIP_LASTVOLONLY 추가
- ZIP64 포맷의 압축파일을 열 때 로컬헤더가 아닌 센트럴헤더를 분석해서 열도록 수정 (속도 향상)
- 암호걸린 ZIP64 포맷의 압축을 해제하지 못하던 버그 수정
- 헤더CRC 정보가 없거나 minor version 2 의 .7z 포맷의 파일을 열지 못하던 문제 수정
- 32,64비트 PE-CAB 파일을 압축파일로 처리할 수 있도록 기능 추가
- ARK_FF_GIF, ARK_FF_OGGS, ARK_FF_ACE 추가
- Deflate64 알고리즘 처리시 발생하던 버그 수정
- 파일명을 UTF8로 저장시 version made by 를 수정해서 유닉스 unzip 에서 압축을 풀 수 있도록 수정
- 압축시 0 바이트 파일의 압축 알고리즘을 deflate 가 아닌 store 로 저장하도록 수정
- 구버전의 recovery block 이 있는 rar 파일을 열때 손상된 파일로 인식하던 버그 수정
- TAR 포맷의 @LongLink, UStar 처리 기능 추가
- 일부 oggs 를 arc 포맷으로 잘못 인식하던 버그 수정
- 7zip 포맷의 파일명이 너무 길때 죽던 버그 수정
- 파일명이 너무 길 경우 압축을 풀지 못하던것을 풀 수 있도록 수정 (win32)
- 암호걸린 arj 파일이 IsEncrypted() 에서 아니라고 나오던 버그 수정
- 4GB 이상의 gz 파일의 크기가 오버플로우 되서 정상 표시되지 않던걸 추정을 통해서 계산하도록 수정
- ZIP 압축시 store 로 저장할때 암호를 사용하면 crc 정보가 오류나던 버그 수정
- tgz,tbz 파일을 솔리드 포맷으로 처리하는 기능 추가
- IArk::SetGlobalOpt() 의 파라메터 추가 및 변경
- IArk::ExtractOneAs() 에 파라메터 추가
- ZIP 압축시 폴더 구분자를 \ 대신 / 를 쓰도록 수정
- 코멘트가 있고 솔리드 압축된 RAR파일 압축 해제시 죽던 버그 수정
- 밤톨이 sfx 압축해제 기능 추가
- 압축시 압축 안되는 데이타는 압축포기하는 기능 추가
- IArkCompressor::AddFileItem() 메쏘드의 호출 속도 향상
- SArkCompressorOpt 옵션에서 utf8Comment 삭제, sfxPathName, forceUtf8FileName, utf8FileNameIfNeeded, bypassWhenUncompressible 추가
- ZIP 포맷 압축시 폴더의 생성 시간도 저장하도록 기능 추가
- 일부 포맷에서 IArkEvent::OnOpening() 이 호출되지 않던 버그 수정 (tar, wim, lzh, iso, cab, arc)
- rar 분할압축 파일의 압축 해제시 뒷부분의 파일이 없을때 crc 에러나던것을 ARKERR_FILE_TRUNCATED 에러를 발생시키도록 수정
- 특정 형태의 rar 분할 압축을 풀지 못하는 버그 수정
- sfx-zip 파일 처리시 0 바이트 파일은 무시하도록 수정
- IArkEvent::OnError() 에 bIsWarning 추가
- 내부 crc 처리 속도 향상
- 시스템의 기본 코드페이지가 949 가 아닐때 MBCS를 사용해서 한글로 된 7Z 파일을 열려고 할때 열지 못하던 버그 수정
- Lzma SDK 9.13 -> 9.20 으로 업데이트
- 기타
3.0.0.1
- 2011/1/17
- IArkCompressor 인터페이스를 통한 압축하기 및 압축파일 편집기능이 추가되었습니다.
- SArkProgressInfo 구조체의 멤버가 간략화 되었습니다.
- IArk::TestArchive(), IArk::IsOpened(), IArk::GetArchiveStartPos() 메쏘드가 추가되었습니다.
- CArkLib::CreateCompressor() 메쏘드가 추가되었습니다.
- IArk::ExtractMultiFileTo() 메쏘드의 파라메터가 일부 변경되었습니다.
- IArk::DisableFile() 메쏘드가 삭제되었습니다.
- CreateArkCompressor() 함수, IArkCompressor 인터페이스, SArkCompressorOpt 구조체가 추가되었습니다.
2010/06/08: ARK V3.0 개발 시작
2010/02/23: ARK V2.0 릴리즈
2009/11/18: ARK V2.0 작업 시작
2009/04/06: ARK V1.0 작업 시작
2008/03/12: 개발 시작