同版本覆盖安装要怎么处理,大佬帮忙解答一二

现在问题是,同版本覆盖安装的时候,第一次安装的会更新,但是覆盖安装的这次,会提示已经是最新版本。但是会报我定义的插件脚本中的一个全局变量找不到。
有疑惑:
1、按照他这个流程,应该是第一次安装热更新下来的文件是不会被删除掉的,所以覆盖安装的时候,才会提示已经是最新版本。
2、如果第一点成立,那就不应该报我定义的插件脚本中的一个全局变量找不到。

1赞

顶一顶

1赞

覆盖安装并不会改动app下的可写目录,所以如果你没有做处理的话,app的SearchPath还是旧的,读取的资源就还是上个版本的旧资源。
可以在main.js里自己处理下,定义个版本号,版本号不一致时,删掉当前的可写目录,保证app会读取assets里面最新的资源。下面是我自己的处理,可参考下

window._game_res_version = '2.0' 

let version = localStorage.getItem('game_res_version') 
if(version && version != window._game_res_version){ 
    let path = jsb.fileUtils.getWritablePath() + version 
    if(jsb.fileUtils.isDirectoryExist(path)) 
        console.log('remove old version file:'+jsb.fileUtils.removeDirectory(path)) 
} 

localStorage.setItem('game_res_version',window._game_res_version)

你这样覆盖安装后:version 和 window._game_res_version的值不是是一样的呀。

覆盖安装localStorage存储的文件会被删除掉嘛。

谢谢,我现在是这样理解的,不知道对不对。覆盖安装后,应用的安装路径是不是不一样了?所以第一次安装的localStorage存放路径和覆盖安装localStorage存放路径已经不一样了?不然按你这种写法的话,覆盖安装后version 和 window.gameres_version的值不是还是一样…

新安装包main.js中,增加一个原生版本的判断,如果false,删除更新目录的文件,设置以后的原生版本的值,这个值就是原生版本的判断标准

我可能表达错了。我的意思是同一个包,再一把手机上安装一次后,不卸载再直接安装一次。

覆盖安装app的安装路径还是一样的,localStorage里的值也不会变化,我这里的_game_res_version其实是更新资源的目录。
每次发新版本,就改动一下,这样会检测到与本地localStorage记录不一致,然后就删除旧的目录

你写的game_res_version这个只能自己手动更改了?能不能动态读取到cocos里面自己文件定义的版本号?