如何以编程方式从zip中提取点app(.app)mac文件?

时间:2013-12-17 06:16:15

标签: macos zip unity3d sharpziplib

我正在开发一个Unity项目&面临一个问题。 我有一个包含 mybuild.app (mac)文件的zip文件。

我正在使用SharpZipLib解压缩zip文件。问题是,当lib解压缩时,它实际上将 mybuild.app 作为文件夹&创建一个同名的目录&它的子文件&文件夹。解压缩后 mybuild.app 无法启动。

我认为问题在于.app签名或其他什么。我不应该单独提取.app文件内容。

请告诉我如何从zip获取实际有效的 mybuild.app 文件。

我在mac上使用Unity 3.5.6。

这是我的代码:

using (ZipInputStream s = new ZipInputStream(File.OpenRead(a_filePath)))
{
    ZipEntry theEntry;
    while ((theEntry = s.GetNextEntry()) != null)
    {
        Console.WriteLine(theEntry.Name);

        string directoryName = Path.GetDirectoryName(theEntry.Name);
        string fileName = Path.GetFileName(theEntry.Name);

        // create directory
        if (directoryName.Length > 0)
        {
            Debug.Log("Creating Director: " + directoryName);
            Directory.CreateDirectory(directoryName);
        }

        if (fileName != String.Empty)
        {
            string filename = a_extractPath;
            filename += theEntry.Name;
            Debug.Log("Unzipping: " + filename);
            using (FileStream streamWriter = File.Create(filename))
            {
                int size = 2048;
                byte[] fdata = new byte[2048];
                while (true)
                {
                    size = s.Read(fdata, 0, fdata.Length);
                    if (size > 0)
                    {
                        streamWriter.Write(fdata, 0, size);
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
    }
}

0 个答案:

没有答案