1

私は基本的に、QuaZipを使用してzipファイルからMacアプリケーションを抽出しようとしています。私が使用しているコードは次のとおりです。

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();

抽出したアプリを起動しようとすると、「Classic-Environmentがサポートされなくなったため、アプリケーションを開くことができません」というエラーメッセージが表示されます。.appを実行可能にしようとしましたが、それでも機能しませんでした。Qtを使用してアプリケーションを抽出する他の簡単な方法はわかりません。

通常のアーカイバで抽出したところ、アプリケーションは動作しました。

4

2 に答える 2

4

私はQuaZipにあまり詳しくありませんが、アーカイブ全体を「application.app」という単一のファイルに抽出しようとしているように見えますが、これはかなり深刻な誤りです。アプリケーションは実際にはファイルではなくフォルダです。Finderはフォルダ(名前が「.app」で終わる)を単一のファイルであるかのように表示します。

QuaZipを使用してZIPファイルを抽出する例を掘り下げることができれば、そのコードをほとんど変更せずに使用できるはずです(おそらく、__ MACOSXメタデータを除く)。

于 2012-06-28T16:49:23.723 に答える
1

QProcessまたはsystem()を使用して、アプリからunzipを呼び出す方が簡単な場合があります。

unzip -q <path-to-zip> -d <path-to-destionation>
于 2012-06-28T19:29:58.283 に答える