Browse Source

Added self-protection to updater

pull/46/head
Anairkoen Schno 6 years ago
parent
commit
0077803164
1 changed files with 38 additions and 26 deletions
  1. +38
    -26
      IPA.Injector/Updates.cs

+ 38
- 26
IPA.Injector/Updates.cs View File

@ -11,43 +11,55 @@ namespace IPA.Injector
public static void InstallPendingUpdates() public static void InstallPendingUpdates()
{ {
var pendingDir = Path.Combine(BeatSaber.InstallPath, "IPA", "Pending"); var pendingDir = Path.Combine(BeatSaber.InstallPath, "IPA", "Pending");
if (Directory.Exists(pendingDir))
{ // there are pending updates, install
updater.Info("Installing pending updates");
if (!Directory.Exists(pendingDir)) return;
// there are pending updates, install
updater.Info("Installing pending updates");
var toDelete = new string[0];
var delFn = Path.Combine(pendingDir, DeleteFileName);
if (File.Exists(delFn))
{
toDelete = File.ReadAllLines(delFn);
File.Delete(delFn);
}
foreach (var file in toDelete)
{
try
{
File.Delete(Path.Combine(BeatSaber.InstallPath, file));
}
catch (Exception e)
{
updater.Error("While trying to install pending updates: Error deleting file marked for deletion");
updater.Error(e);
}
}
var toDelete = new string[0];
var delFn = Path.Combine(pendingDir, DeleteFileName);
if (File.Exists(delFn))
{
toDelete = File.ReadAllLines(delFn);
File.Delete(delFn);
}
foreach (var file in toDelete)
{
try try
{ {
LoneFunctions.CopyAll(new DirectoryInfo(pendingDir), new DirectoryInfo(BeatSaber.InstallPath));
File.Delete(Path.Combine(BeatSaber.InstallPath, file));
} }
catch (Exception e) catch (Exception e)
{ {
updater.Error("While trying to install pending updates: Error copying files in");
updater.Error("While trying to install pending updates: Error deleting file marked for deletion");
updater.Error(e); updater.Error(e);
} }
}
#region Self Protection
if (Directory.Exists(Path.Combine(pendingDir, "IPA")))
Directory.Delete(Path.Combine(pendingDir, "IPA"), true);
if (File.Exists(Path.Combine(pendingDir, "IPA.exe")))
{
File.Delete(Path.Combine(pendingDir, "IPA.exe"));
if (File.Exists(Path.Combine(pendingDir, "Mono.Cecil.dll")))
File.Delete(Path.Combine(pendingDir, "Mono.Cecil.dll"));
}
Directory.Delete(pendingDir, true);
#endregion
try
{
LoneFunctions.CopyAll(new DirectoryInfo(pendingDir), new DirectoryInfo(BeatSaber.InstallPath));
}
catch (Exception e)
{
updater.Error("While trying to install pending updates: Error copying files in");
updater.Error(e);
} }
Directory.Delete(pendingDir, true);
} }
} }
} }

Loading…
Cancel
Save