예제 #1
0
 public static bool OverwriteFile(string installPath, string relFileName, string src, IEnumerable <string> dontOverwriteFiles, OverwriteFilesInfo overwriteControl)
 {
예제 #2
0
    public static OverwriteFilesInfo CheckOverwriteFiles(string targetDirectory, string projectDir, bool targetDirEmpty)
    {
        OverwriteFilesInfo info = new OverwriteFilesInfo();

        if (!targetDirEmpty)
        {
            Dictionary <string, string> dictionary = new Dictionary <string, string>();
            string path = Path.Combine(targetDirectory, "UnityOverwrite.txt");
            if (!File.Exists(path))
            {
                info.KeepAll = true;
                return(info);
            }
            foreach (string str2 in File.ReadAllLines(path))
            {
                if ((str2.Trim() != "") && !str2.StartsWith("#"))
                {
                    if (str2.Equals("overwrite-all", StringComparison.InvariantCultureIgnoreCase))
                    {
                        info.OverwriteAll = true;
                        return(info);
                    }
                    if (str2.Equals("keep-all", StringComparison.InvariantCultureIgnoreCase))
                    {
                        info.KeepAll = true;
                        return(info);
                    }
                    int index = str2.IndexOf(':');
                    if ((index >= 0) && (str2.Length != (index + 1)))
                    {
                        string key  = str2.Substring(0, index);
                        string str4 = str2.Substring(index + 1).Trim();
                        if (str4 != "")
                        {
                            dictionary.Add(key, str4);
                        }
                    }
                }
            }
            string prefix = FileUtil.RemovePathPrefix(projectDir, targetDirectory);
            foreach (KeyValuePair <string, string> pair in dictionary)
            {
                if (pair.Value.Equals("overwrite", StringComparison.InvariantCultureIgnoreCase))
                {
                    info.DoOverwrite.Add(FileUtil.RemovePathPrefix(pair.Key, prefix), true);
                }
                else
                {
                    string str6 = Path.Combine(targetDirectory, pair.Key);
                    if (File.Exists(str6))
                    {
                        string str7 = CalculateMD5ForFile(str6);
                        if (str7.Equals(pair.Value, StringComparison.InvariantCultureIgnoreCase))
                        {
                            info.DoOverwrite.Add(pair.Key, false);
                        }
                        else
                        {
                            info.UserModified.Add(FileUtil.RemovePathPrefix(pair.Key, targetDirectory));
                        }
                        info.Hashes.Add(pair.Key, str7);
                    }
                }
            }
        }
        return(info);
    }