【问题标题】:Extracting .app on Mac with QuaZip使用 QuaZip 在 Mac 上提取 .app
【发布时间】:2012-06-29 22:34:56
【问题描述】:

我基本上是在尝试使用 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();

如果我尝试启动提取的应用程序,我会收到一条错误消息,提示“无法打开应用程序,因为不再支持经典环境。”我试图使 .app 可执行,但它仍然无法正常工作。我不知道任何其他使用 Qt 提取应用程序的简单方法。

我用普通的存档器解压了它,应用程序工作正常。

【问题讨论】:

    标签: c++ macos qt zip quazip


    【解决方案1】:

    我对 QuaZip 不是很熟悉,但您似乎正试图将整个存档解压缩到一个名为“application.app”的文件中,这是非常严重的错误。应用程序实际上是文件夹,而不是文件 - Finder 只是将文件夹(名称以“.app”结尾)显示为单个文件。

    如果您能找到一个使用 QuaZip 提取 ZIP 文件的示例,那么您应该能够在很大程度上未经修改地使用该代码(可能除了 __MACOSX 元数据)。

    【讨论】:

    • 谢谢,不知道。一直在 Linux 上工作。
    【解决方案2】:

    使用 QProcess 或 system() 从您的应用中调用 unzip 可能更容易。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 2013-11-19
      • 1970-01-01
      • 2016-01-07
      • 2011-06-28
      • 1970-01-01
      相关资源
      最近更新 更多