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

i-feel
Tue, 21 Jan 2014 05:03:01 +0000

游戏的热更新，我使用的是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，依旧删除失败，求大神

阅读整个主题