private bool CreateResources(DoWorkArgs args, ProgressChangedArgs pass, string platform, string[] files) { pass.maxProgress = 2 * files.Length + 1; pass.header = "Creating " + platform + " installation resources"; pass.message = "Finding files..."; ReportProgress(args.background, 0, pass); string prefix = "Setup" + Path.DirectorySeparatorChar; for (int k = 0; k < files.Length; k++) { files[k] = prefix + files[k]; if (!File.Exists(files[k])) { MessageBox.Show("The file " + files[k] + " does not exist.", "Setup Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } } Directory.CreateDirectory("Resources"); try { ZipFile zip = new ZipFile("Resources" + Path.DirectorySeparatorChar + "Install_" + platform); foreach (string file in files) { string fileName = file.Substring(prefix.Length); fileName = fileName.Replace(Path.DirectorySeparatorChar, '/'); pass.message = "Packing " + fileName + "..."; ReportProgress(args.background, -1, pass); zip[fileName] = File.ReadAllBytes(file); } zip.Write(this, args, pass); } catch (Exception e) { MessageBox.Show(e.Message + Environment.NewLine + e.StackTrace, "Setup Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } return(true); }
protected override bool DoTask(DoWorkArgs args) { string file = Installer.GetPath(); if (!File.Exists(file)) { MessageBox.Show("The file " + file + " does not exist.", "Installation Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } ProgressChangedArgs pass = new ProgressChangedArgs(); pass.main = args.main; pass.header = ""; pass.maxProgress = 6; if (Installer.platform == Platform.WINDOWS) { pass.maxProgress += 5; } else { pass.maxProgress += 10; } pass.message = "Backing up Terraria"; ReportProgress(args.background, 0, pass); string directory = Path.GetDirectoryName(file) + Path.DirectorySeparatorChar; string backupFile = directory + "Terraria_" + Installer.version + ".exe"; if (!File.Exists(backupFile)) { File.Copy(file, backupFile); } pass.message = "Backing up Terraria even more"; ReportProgress(args.background, -1, pass); Directory.CreateDirectory("Resources"); ZipFile zip = new ZipFile("Resources" + Path.DirectorySeparatorChar + "Backups"); zip["Vanilla"] = File.ReadAllBytes(file); pass.header = "Reading Install resources"; string resourceFile = "Resources" + Path.DirectorySeparatorChar + "Install"; if (!File.Exists(resourceFile)) { MessageBox.Show("Could not find installation resource file", "Installation Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } ZipFile resources = ZipFile.Read(resourceFile, this, args, pass); pass.header = " "; pass.message = "Installing..."; ReportProgress(args.background, -1, pass); if (!HasAllFiles(Installer.platform, resources)) { return false; } string contentFolder = directory + "Content" + Path.DirectorySeparatorChar + "ModLoader"; Directory.CreateDirectory(contentFolder); contentFolder += Path.DirectorySeparatorChar; if (Installer.platform == Platform.WINDOWS) { File.WriteAllBytes(file, resources["Windows.exe"]); ReportProgress(args.background, -1, pass); File.WriteAllBytes(contentFolder + "MysteryItem.png", resources["Content/MysteryItem.png"]); } else if (Installer.platform == Platform.MAC) { File.WriteAllBytes(file, resources["Mac.exe"]); ReportProgress(args.background, -1, pass); File.WriteAllBytes(directory, resources["MP3Sharp.dll"]); ReportProgress(args.background, -1, pass); File.WriteAllBytes(contentFolder + "MysteryItem.png", resources["Content/MysteryItem.png"]); } else if (Installer.platform == Platform.LINUX) { File.WriteAllBytes(file, resources["Linux.exe"]); ReportProgress(args.background, -1, pass); File.WriteAllBytes(directory, resources["MP3Sharp.dll"]); ReportProgress(args.background, -1, pass); File.WriteAllBytes(contentFolder + "MysteryItem.png", resources["Content/MysteryItem.png"]); } pass.message = "Backing up tModLoader"; ReportProgress(args.background, -1, pass); pass.header = "Saving backups"; zip["tModLoader"] = File.ReadAllBytes(file); zip.Write(this, args, pass); MessageBox.Show("Success!", "Install", MessageBoxButtons.OK, MessageBoxIcon.Information); return true; }
private bool CreateResources(DoWorkArgs args, ProgressChangedArgs pass, string platform, string[] files) { pass.maxProgress = 2 * files.Length + 1; pass.header = "Creating " + platform + " installation resources"; pass.message = "Finding files..."; ReportProgress(args.background, 0, pass); string prefix = "Setup" + Path.DirectorySeparatorChar; for (int k = 0; k < files.Length; k++) { files[k] = prefix + files[k]; if (!File.Exists(files[k])) { MessageBox.Show("The file " + files[k] + " does not exist.", "Setup Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } } Directory.CreateDirectory("Resources"); try { ZipFile zip = new ZipFile("Resources" + Path.DirectorySeparatorChar + "Install_" + platform); foreach (string file in files) { string fileName = file.Substring(prefix.Length); fileName = fileName.Replace(Path.DirectorySeparatorChar, '/'); pass.message = "Packing " + fileName + "..."; ReportProgress(args.background, -1, pass); zip[fileName] = File.ReadAllBytes(file); } zip.Write(this, args, pass); } catch (Exception e) { MessageBox.Show(e.Message + Environment.NewLine + e.StackTrace, "Setup Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } return true; }
protected override bool DoTask(DoWorkArgs args) { string file = Installer.GetPath(); if (!File.Exists(file)) { MessageBox.Show("The file " + file + " does not exist.", "Installation Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } ProgressChangedArgs pass = new ProgressChangedArgs(); pass.main = args.main; pass.header = ""; pass.maxProgress = 6; if (Installer.platform == Platform.WINDOWS) { pass.maxProgress += 5; } else { pass.maxProgress += 10; } pass.message = "Backing up Terraria"; ReportProgress(args.background, 0, pass); string directory = Path.GetDirectoryName(file) + Path.DirectorySeparatorChar; string backupFile = directory + "Terraria_" + Installer.version + ".exe"; if (!File.Exists(backupFile)) { File.Copy(file, backupFile); } pass.message = "Backing up Terraria even more"; ReportProgress(args.background, -1, pass); Directory.CreateDirectory("Resources"); ZipFile zip = new ZipFile("Resources" + Path.DirectorySeparatorChar + "Backups"); zip["Vanilla"] = File.ReadAllBytes(file); pass.header = "Reading Install resources"; string resourceFile = "Resources" + Path.DirectorySeparatorChar + "Install"; if (!File.Exists(resourceFile)) { MessageBox.Show("Could not find installation resource file", "Installation Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } ZipFile resources = ZipFile.Read(resourceFile, this, args, pass); pass.header = " "; pass.message = "Installing..."; ReportProgress(args.background, -1, pass); if (!HasAllFiles(Installer.platform, resources)) { return(false); } string contentFolder = directory + "Content" + Path.DirectorySeparatorChar + "ModLoader"; Directory.CreateDirectory(contentFolder); contentFolder += Path.DirectorySeparatorChar; if (Installer.platform == Platform.WINDOWS) { File.WriteAllBytes(file, resources["Windows.exe"]); ReportProgress(args.background, -1, pass); File.WriteAllBytes(contentFolder + "MysteryItem.png", resources["Content/MysteryItem.png"]); } else if (Installer.platform == Platform.MAC) { File.WriteAllBytes(file, resources["Mac.exe"]); ReportProgress(args.background, -1, pass); File.WriteAllBytes(directory, resources["MP3Sharp.dll"]); ReportProgress(args.background, -1, pass); File.WriteAllBytes(contentFolder + "MysteryItem.png", resources["Content/MysteryItem.png"]); } else if (Installer.platform == Platform.LINUX) { File.WriteAllBytes(file, resources["Linux.exe"]); ReportProgress(args.background, -1, pass); File.WriteAllBytes(directory, resources["MP3Sharp.dll"]); ReportProgress(args.background, -1, pass); File.WriteAllBytes(contentFolder + "MysteryItem.png", resources["Content/MysteryItem.png"]); } pass.message = "Backing up tModLoader"; ReportProgress(args.background, -1, pass); pass.header = "Saving backups"; zip["tModLoader"] = File.ReadAllBytes(file); zip.Write(this, args, pass); MessageBox.Show("Success!", "Install", MessageBoxButtons.OK, MessageBoxIcon.Information); return(true); }