public void Enable() {
if (AcRootDirectory.Instance == null) return;
Logging.Warning("Patch()");
if (IsPatched()) return;
if (AcRootDirectory.Instance.Value == null) {
Logging.Warning("AC Root directory is missing.");
return;
}
var addon = PluginsManager.Instance.GetById(AddonId);
if (addon?.IsReady != true) {
Logging.Warning("Addon is not installed or enabled.");
return;
}
var launcherFilename = LauncherFilename;
var backupFilename = BackupFilename;
if (File.Exists(launcherFilename)) {
try {
if (File.Exists(backupFilename)) {
File.Delete(backupFilename);
}
File.Move(launcherFilename, backupFilename);
} catch (Exception e) {
Logging.Warning("Can’t move original file out of the way: " + e);
return;
}
}
var sourceFilename = addon.GetFilename("data.pak");
try {
using (var archive = ZipFile.OpenRead(sourceFilename)) {
archive.GetEntry("AssettoCorsa.exe").ExtractToFile(launcherFilename);
}
} catch (Exception e) {
Logging.Warning("Can’t extract file: " + e);
Logging.Warning("Rollback!");
Disable();
return;
}
Logging.Write("Enabled.");
}