关于AssetManager解压完毕更新包之后的删除更新包操作

游戏的热更新,我使用的是AssetManager,下载,解压都没有问题,但是在删除更新包的时候却始终删除不了。我看了下源码,是这么写的


if (remove(zipfileName.c_str()) != 0)
{
CCLOG("can not remove downloaded zip file %s", zipfileName.c_str());
}

remove是删除指定的文件,我换了其他txt文件,png文件删除,都没有问题,唯独到了zip文件就是删除不了,请问有什么解决方案吗?

另外还有一个问题,版本更新的时候的版本号检测


if (recordedVersion == _version)
    {
        sendErrorMessage(kNoNewVersion);
        CCLOG("there is not new version");
        // Set resource search path.
        setSearchPath();
        return false;
    }

为什么是等于,不应该是检测本地文件的版本号是否小于等于吗,如果仅仅是等于,那么无论服务器的版本号比当前玩家手机的版本号大还是小,都会触发补丁更新。版本就应该是越更越新,版本号也会越来越大,这是cocos的缺陷吗?

再加一个问题,zip包路径的修改,使用AssetManager删除压缩包的时候


void AssetsManager::checkStoragePath()
{
    if (_storagePath.size() > 0 && _storagePath != '/')
    {
        _storagePath.append("/");
    }
}

为什么要在这里加个/?我删除的时候路径就变成这样E:\svn\shouyou1\ /cocos2dx-update-temp-package.zip,原本我以为是路径出错导致删除不了,我把路径重新修改了下,变成E:\svn\shouyou1\cocos2dx-update-temp-package.zip,依旧删除失败,求大神

求回复,求解答

我觉得 AssetManager 就是个示例,还得自己再修改一下才能适用于自己的项目。我们的项目就是在这个基础上修改并加了一些自己的功能。

我这里是Mac系统是可以删掉的, windows不知道了。。

哦,居然是昨天的群邮……

删不掉压缩包的问题
要在 AssetsManager::uncompress()结尾加个unzClose(zipfile);
应该就可以了

为什么是==那个,我是觉得如果更新有误,回滚也是允许的吧,这样方便配置,不用为了原来的包再取个版本号

对的,我也是这样修改的

说的有道理啊,回滚,很有可能