public static bool CheckDirectory(string directory, out string reason) {
if (directory == null) {
reason = ToolsStrings.AcRootDirectory_NotDefined;
return false;
}
if (!OptionDisableChecking) {
if (!Directory.Exists(directory)) {
reason = ToolsStrings.AcRootDirectory_Missing;
return false;
}
if (!Directory.Exists(Path.Combine(directory, @"apps"))) {
reason = string.Format(ToolsStrings.AcRootDirectory_MissingDirectory, @"apps");
return false;
}
if (!Directory.Exists(Path.Combine(directory, @"content"))) {
reason = string.Format(ToolsStrings.AcRootDirectory_MissingDirectory, @"content");
return false;
}
if (!Directory.Exists(Path.Combine(directory, @"content", @"cars"))) {
reason = string.Format(ToolsStrings.AcRootDirectory_MissingDirectory, @"content\cars");
return false;
}
if (!Directory.Exists(Path.Combine(directory, @"content", @"tracks"))) {
reason = string.Format(ToolsStrings.AcRootDirectory_MissingDirectory, @"content\tracks");
return false;
}
if (!File.Exists(Path.Combine(directory, @"acs.exe"))) {
reason = string.Format(ToolsStrings.AcRootDirectory_MissingFile, @"acs.exe");
return false;
}
}
var launcher = Path.Combine(directory, "AssettoCorsa.exe");
if (!File.Exists(launcher)) {
var backup = launcher.ApartFromLast(@".exe", StringComparison.OrdinalIgnoreCase) + @"_backup_ts.exe";
if (File.Exists(backup)) {
TryToFix(backup, launcher);
}
}
if (!File.Exists(launcher)) {
var backup = launcher.ApartFromLast(@".exe", StringComparison.OrdinalIgnoreCase) + @"_backup_sp.exe";
if (File.Exists(backup)) {
TryToFix(backup, launcher);
}
}
if (!File.Exists(launcher)) {
reason = string.Format(ToolsStrings.AcRootDirectory_MissingFile, @"AssettoCorsa.exe");
return false;
}
reason = null;
return true;
}