public void CopyGameBinaries(string targetFolder) { Console.WriteLine("Copying game binaries"); var binariesFolder = GetGameBinariesFolder(gamePath); FilesystemUtil.CopyDirectory(binariesFolder, targetFolder); Console.WriteLine("Copied game binaries"); }
public void CopyLocalMonomod(string targetFolder) { Console.WriteLine("Copying local MonoMod installation"); var monomodFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "MonoMod"); FilesystemUtil.CopyDirectory(monomodFolder, targetFolder); Console.WriteLine("Copied local MonoMod installation"); }
public void Install(object sender, DoWorkEventArgs e) { Console.WriteLine("Running install task"); var stepFactor = 100 / 8; // There is 7 steps, and this factor represents the percentage of each step var targetFolder = Path.Combine(Path.GetTempPath(), "Scaphandre_" + new Random().Next(0, 9999)); Directory.CreateDirectory(targetFolder); if (!Directory.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "MonoMod"))) { Directory.CreateDirectory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "MonoMod")); worker.ReportProgress(0 * stepFactor, "Downloading MonoMod..."); Thread.Sleep(10); DownloadLatestMonomod(targetFolder); worker.ReportProgress(1 * stepFactor, "Extracting MonoMod..."); Thread.Sleep(10); ExtractMonomod(targetFolder); } worker.ReportProgress(2 * stepFactor, "Extracting MonoMod..."); CopyLocalMonomod(targetFolder); worker.ReportProgress(3 * stepFactor, "Copying Scaphandre libraries..."); Thread.Sleep(10); CopyScaphandre(targetFolder); worker.ReportProgress(4 * stepFactor, "Copying Subnautica binaries..."); Thread.Sleep(10); CopyGameBinaries(targetFolder); worker.ReportProgress(5 * stepFactor, "Patching Subnautica binaries..."); Thread.Sleep(10); ExecutingMonomod(targetFolder); worker.ReportProgress(6 * stepFactor, "Applying patched binaries..."); Thread.Sleep(10); PlacePatchedGameBinaries(targetFolder); if (createModdingArchive) { worker.ReportProgress(7 * stepFactor, "Creating modding archive..."); Thread.Sleep(10); CreateModdingArchive(targetFolder); } worker.ReportProgress(8 * stepFactor, "Done. Doing a bit of cleaning..."); Thread.Sleep(2000); // This make sure MonoMod is not using the folder FilesystemUtil.DeleteDirectory(targetFolder); Console.WriteLine("Finished install task"); }