Esempio n. 1
0
 protected override void Perform(ModificationInfo info)
 {
     foreach (string hash in info.AcceptedHashes)
     {
         string cleanAssemblyPath = AssemblyCSharpUtil.FindCleanAssembly(info.TerraTechManaged, hash);
         if (cleanAssemblyPath != null)
         {
             info.CleanAssemblyPath = cleanAssemblyPath;
             return;
         }
     }
     Error.NoCleanBackup();
 }
Esempio n. 2
0
        public static string FindCleanAssembly(string terraTechManagedDir, string expectedHash)
        {
            string assemblyCSharpPath = Path.Combine(terraTechManagedDir, "Assembly-CSharp.dll");
            string assemblyBackupDir  = Path.Combine(terraTechManagedDir, "NuterraBackups");
            string assemblyHash       = AssemblyCSharpUtil.GetFileHash(assemblyCSharpPath);

            Console.WriteLine($"Raw assembly hash: `{assemblyHash}`");
            if (assemblyHash == expectedHash)
            {
                //Current assembly is clean install, make backup
                return(AssemblyCSharpUtil.CreateAssemblyBackup(assemblyCSharpPath, assemblyBackupDir, assemblyHash));
            }
            else
            {
                //Current assembly is dirty, check for backup and otherwise warn
                string backupPath = AssemblyCSharpUtil.FormatBackupPath(assemblyBackupDir, expectedHash);
                if (File.Exists(backupPath))
                {
                    return(backupPath);
                }
            }
            return(null);
        }