2012-06-28 2 views
1

기본적으로 QuaZip을 사용하여 zip 파일에서 Mac 응용 프로그램을 추출하려고합니다. 내가 사용하는 코드는 다음과 같습니다 나는 추출 된 응용 프로그램을 시작하려고하면QuaZip을 사용하여 Mac에서 .app 추출하기

QuaZip zip("file.zip"); 
qDebug() << zip.open(QuaZip::mdUnzip); 

QuaZipFile file(&zip); 
QFile out("application.app"); 
out.open(QIODevice::WriteOnly); 

for(bool f=zip.goToFirstFile(); f; f=zip.goToNextFile()) { 
    file.open(QIODevice::ReadOnly); 
    //same functionality as QIODevice::readData() -- data is a char*, maxSize is qint64 
    char c; 
    while (file.getChar(&c)) out.putChar(c);  

    file.close(); 
} 

out.flush(); 
out.close(); 

zip.close(); 

, 나는 내가 말하는 오류 메시지가 얻을 "클래식-환경이 더 이상 지원되지 않으므로, 응용 프로그램을 열 수 없습니다를." .app 실행 파일을 만들려고했지만 여전히 작동하지 않습니다. Qt를 사용하여 응용 프로그램을 추출하는 다른 쉬운 방법을 모르겠습니다.

일반 아카이버로 압축을 풀고 응용 프로그램이 작동했습니다.

답변

4

저는 QuaZip에 익숙하지 않지만 "application.app"라는 단일 파일에 전체 아카이브를 추출하는 것처럼 보입니다. 이것은 매우 심각한 오류입니다. 응용 프로그램은 실제로는 파일이 아닌 폴더입니다. Finder는 하나의 파일 인 것처럼 폴더 (".app"로 끝나는 이름)를 표시합니다.

QuaZip을 사용하여 ZIP 파일을 추출하는 예제를 파헤쳐 보면 대부분 __MACOSX 메타 데이터가 아닌 그 코드를 크게 수정하지 않고 사용할 수 있습니다.

+0

감사합니다. 아직까지 리눅스에서 일했다. – MCPP

1

QProcess 또는 system()을 사용하여 응용 프로그램에서 unzip을 호출하는 것이 더 쉽습니다.

unzip -q <path-to-zip> -d <path-to-destionation>