示例#1
0
        public void CopyGameBinaries(string targetFolder)
        {
            Console.WriteLine("Copying game binaries");
            var binariesFolder = GetGameBinariesFolder(gamePath);

            FilesystemUtil.CopyDirectory(binariesFolder, targetFolder);
            Console.WriteLine("Copied game binaries");
        }
示例#2
0
        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");
        }
示例#3
0
        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");
        }