Beispiel #1
0
 public void addItem(VersionNumItem Item)
 {
     if (Item != null)
     {
         toBeSaved.Add(Item);
     }
 }
Beispiel #2
0
        // 对比对应版本目录下的VersionMD5和VersionMD5-old,得到最新的版本号文件VersionNum.xml
        public static void Execute(string platform)
        {
            // 读取新旧MD5列表
            string newVersionMD5 = Path.Combine(DeviceInfo.PersistRootPath, "AssetBundles/" + platform + "/VersionNum/VersionMD5.bytes");
            string oldVersionMD5 = Path.Combine(DeviceInfo.PersistRootPath, "AssetBundles/" + platform + "/VersionNum/VersionMD5-old.bytes");

            Dictionary <string, string> dicNewMD5Info = ReadMD5File(newVersionMD5);
            Dictionary <string, string> dicOldMD5Info = ReadMD5File(oldVersionMD5);

            // 读取版本号记录文件VersinNum.xml
            string oldVersionNum = Path.Combine(DeviceInfo.PersistRootPath, "AssetBundles/" + platform + "/VersionNum.bytes");
            Dictionary <string, VersionNumItem> dicVersionNumInfo = ReadVersionNumFile(oldVersionNum);

            // 对比新旧MD5信息,并更新版本号,即对比dicNewMD5Info&&dicOldMD5Info来更新dicVersionNumInfo
            foreach (KeyValuePair <string, string> newPair in dicNewMD5Info)
            {
                // 旧版本中有
                if (dicOldMD5Info.ContainsKey(newPair.Key))
                {
                    // MD5一样,则不变
                    // MD5不一样,则+1
                    // 容错:如果新旧MD5都有,但是还没有版本号记录的,则直接添加新纪录,并且将版本号设为1
                    if (dicVersionNumInfo.ContainsKey(newPair.Key) == false)
                    {
                        VersionNumItem item = new VersionNumItem();
                        item.FileName = dicVersionNumInfo[newPair.Key].FileName;
                        item.Num      = 1;
                        item.Size     = dicVersionNumInfo[newPair.Key].Size;
                        dicVersionNumInfo.Add(newPair.Key, item);
                    }
                    else if (newPair.Value != dicOldMD5Info[newPair.Key])
                    {
                        VersionNumItem item = new VersionNumItem();
                        item.FileName = dicVersionNumInfo[newPair.Key].FileName;
                        item.Num      = dicVersionNumInfo[newPair.Key].Num + 1;
                        item.Size     = dicVersionNumInfo[newPair.Key].Size;
                        dicVersionNumInfo[newPair.Key] = item;
                    }
                }
                else // 旧版本中没有,则添加新纪录,并=1
                {
                    if (!dicVersionNumInfo.ContainsKey(newPair.Key))
                    {
                        VersionNumItem item = new VersionNumItem();
                        item.FileName = newPair.Key;
                        item.Num      = 1;
                        string     newPath = Path.Combine(DeviceInfo.PersistRootPath, "AssetBundles/" + platform + "/" + newPair.Key);
                        FileStream file    = new FileStream(newPath, FileMode.Open, FileAccess.Read, FileShare.Read);
                        string     size    = file.Length.ToString();
                        item.Size = size;
                        dicVersionNumInfo.Add(newPair.Key, item);
                    }
                }
            }
            // 不可能出现旧版本中有,而新版本中没有的情况,原因见生成MD5List的处理逻辑

            // 存储最新的VersionNum.xml
            SaveVersionNumFile(dicVersionNumInfo, oldVersionNum);
        }