private void CheckDirs(PackDir dirRemoto1, PackDir dirlocal, string dirname = "") { if (dirname != string.Empty) { dirname += @"\"; } if (dirlocal == null) { this.CheckFiles(dirRemoto1.PackFiles, null, dirname + dirRemoto1.Name); foreach (var dirRemoto2 in dirRemoto1.PackDirs) { this.CheckDirs(dirRemoto2, null, dirname + dirRemoto1.Name); } } else { this.CheckFiles(dirRemoto1.PackFiles, dirlocal.PackFiles, dirname); foreach (var dirRemoto in dirRemoto1.PackDirs) { var dirLocales = dirlocal.PackDirs.Where(d => d.Name == dirRemoto.Name); if (dirLocales.Any()) { this.CheckDirs(dirRemoto, dirLocales.First(), dirname + dirRemoto.Name); } else { this.CheckDirs(dirRemoto, null, dirname + dirRemoto.Name); } } } }
public void Start() { if (local.MainVer == remote.MainVer) { // "First Install" this.newVersion.Text = Strings["FirstInstall"]; } else { this.newVersion.Text = local.MainVer.ToString() + " → " + remote.MainVer.ToString(); } Increment = 100D / remote.Size; BytesDownloaded = 0; this.CheckFiles(remote.PackFiles, local.PackFiles); foreach (var dirRemoto in remote.PackDirs) { var dirLocales = local.PackDirs.Where(d => d.Name == dirRemoto.Name); PackDir dirLocal = dirLocales.Any() ? dirLocales.First() : null; this.CheckDirs(dirRemoto, dirLocal, dirRemoto.Name); } }