diff --git a/src/ARKServerManager/ARKServerManager.csproj b/src/ARKServerManager/ARKServerManager.csproj
index bd490e4e..e766e281 100644
--- a/src/ARKServerManager/ARKServerManager.csproj
+++ b/src/ARKServerManager/ARKServerManager.csproj
@@ -53,6 +53,42 @@
4
false
+
+ true
+ bin\Debug - Beta\
+ TRACE;DEBUG
+ full
+ AnyCPU
+ 7.3
+ prompt
+
+
+ true
+ bin\Debug
+ TRACE;DEBUG
+ full
+ AnyCPU
+ 7.3
+ prompt
+
+
+ true
+ bin\Debug
+ TRACE;DEBUG
+ full
+ AnyCPU
+ 7.3
+ prompt
+
+
+ true
+ bin\Debug
+ TRACE;DEBUG
+ full
+ AnyCPU
+ 7.3
+ prompt
+
AnyCPU
none
@@ -97,15 +133,6 @@
-
- true
- bin\Debug - Beta\
- TRACE;DEBUG
- full
- AnyCPU
- 7.3
- prompt
-
true
diff --git a/src/ARKServerManager/App.config b/src/ARKServerManager/App.config
index b42991d0..1a23590c 100644
--- a/src/ARKServerManager/App.config
+++ b/src/ARKServerManager/App.config
@@ -33,7 +33,7 @@
+login anonymous +quit
- +force_install_dir "{0}" +login anonymous "+app_update 376030 {1} {2}" +quit
+ +force_install_dir "{1}" +login {0} "+app_update {2} {3} {4}" +quit
Servers
@@ -101,9 +101,6 @@
http://arkservermanager.freeforums.net/thread/1194/faq-frequently-asked
-
- +force_install_dir "{0}" +login anonymous "+app_update 445400 {1} {2}" +quit
-
https://survivetheark.com/index.php?/forums/forum/5-changelog-patch-notes/
@@ -123,7 +120,7 @@
RunServer.cmd
- +login {0} +workshop_download_item 346110 {1} +quit
+ +login {0} +workshop_download_item {1} {2} +quit
steamapps\workshop\content\346110\
@@ -152,9 +149,6 @@
appworkshop_346110.acf
-
- +login {0} +workshop_download_item 407530 {1} +quit
-
appworkshop_407530.acf
diff --git a/src/ARKServerManager/Config.Designer.cs b/src/ARKServerManager/Config.Designer.cs
index 70017c1f..cd49e43b 100644
--- a/src/ARKServerManager/Config.Designer.cs
+++ b/src/ARKServerManager/Config.Designer.cs
@@ -82,7 +82,7 @@ namespace ServerManagerTool {
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("+force_install_dir \"{0}\" +login anonymous \"+app_update 376030 {1} {2}\" +quit")]
+ [global::System.Configuration.DefaultSettingValueAttribute("+force_install_dir \"{1}\" +login {0} \"+app_update {2} {3} {4}\" +quit")]
public string SteamCmdInstallServerArgsFormat {
get {
return ((string)(this["SteamCmdInstallServerArgsFormat"]));
@@ -576,15 +576,6 @@ namespace ServerManagerTool {
}
}
- [global::System.Configuration.ApplicationScopedSettingAttribute()]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("+force_install_dir \"{0}\" +login anonymous \"+app_update 445400 {1} {2}\" +quit")]
- public string SteamCmdInstallServerArgsFormat_SotF {
- get {
- return ((string)(this["SteamCmdInstallServerArgsFormat_SotF"]));
- }
- }
-
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("https://survivetheark.com/index.php?/forums/forum/5-changelog-patch-notes/")]
@@ -751,7 +742,7 @@ namespace ServerManagerTool {
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("+login {0} +workshop_download_item 346110 {1} +quit")]
+ [global::System.Configuration.DefaultSettingValueAttribute("+login {0} +workshop_download_item {1} {2} +quit")]
public string SteamCmdInstallModArgsFormat {
get {
return ((string)(this["SteamCmdInstallModArgsFormat"]));
@@ -1127,15 +1118,6 @@ namespace ServerManagerTool {
}
}
- [global::System.Configuration.ApplicationScopedSettingAttribute()]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("+login {0} +workshop_download_item 407530 {1} +quit")]
- public string SteamCmdInstallModArgsFormat_SotF {
- get {
- return ((string)(this["SteamCmdInstallModArgsFormat_SotF"]));
- }
- }
-
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("appworkshop_407530.acf")]
diff --git a/src/ARKServerManager/Config.settings b/src/ARKServerManager/Config.settings
index 6923dd2d..b1e91d4f 100644
--- a/src/ARKServerManager/Config.settings
+++ b/src/ARKServerManager/Config.settings
@@ -21,7 +21,7 @@
- +force_install_dir "{0}" +login anonymous "+app_update 376030 {1} {2}" +quit
+ +force_install_dir "{1}" +login {0} "+app_update {2} {3} {4}" +quit
Servers
@@ -161,9 +161,6 @@
1000
-
- +force_install_dir "{0}" +login anonymous "+app_update 445400 {1} {2}" +quit
-
https://survivetheark.com/index.php?/forums/forum/5-changelog-patch-notes/
@@ -210,7 +207,7 @@
RunServer.cmd
- +login {0} +workshop_download_item 346110 {1} +quit
+ +login {0} +workshop_download_item {1} {2} +quit
steamapps\workshop\content\346110\
@@ -311,9 +308,6 @@
False
-
- +login {0} +workshop_download_item 407530 {1} +quit
-
appworkshop_407530.acf
diff --git a/src/ARKServerManager/Lib/ServerApp.cs b/src/ARKServerManager/Lib/ServerApp.cs
index ea1d1f97..5875111f 100644
--- a/src/ARKServerManager/Lib/ServerApp.cs
+++ b/src/ARKServerManager/Lib/ServerApp.cs
@@ -221,7 +221,7 @@ namespace ServerManagerTool.Lib
ExitCode = EXITCODE_NORMALEXIT;
}
- private void ShutdownServer(bool restartServer, bool updateServer, CancellationToken cancellationToken)
+ private void ShutdownServer(bool restartServer, bool updateServer, bool steamCmdRemoveQuit, CancellationToken cancellationToken)
{
if (_profile == null)
{
@@ -274,7 +274,7 @@ namespace ServerManagerTool.Lib
try
{
ServerStatusChangeCallback?.Invoke(ServerStatus.Updating);
- UpgradeLocal(true, true, cancellationToken);
+ UpgradeLocal(true, true, steamCmdRemoveQuit, cancellationToken);
}
finally
{
@@ -729,7 +729,7 @@ namespace ServerManagerTool.Lib
ExitCode = EXITCODE_SHUTDOWN_TIMEOUT;
}
- private void UpgradeLocal(bool validate, bool updateMods, CancellationToken cancellationToken)
+ private void UpgradeLocal(bool validate, bool updateMods, bool steamCmdRemoveQuit, CancellationToken cancellationToken)
{
if (_profile == null)
{
@@ -777,10 +777,12 @@ namespace ServerManagerTool.Lib
}
}
- var steamCmdInstallServerArgsFormat = _profile.SotFEnabled ? Config.Default.SteamCmdInstallServerArgsFormat_SotF : Config.Default.SteamCmdInstallServerArgsFormat;
- var steamCmdArgs = String.Format(steamCmdInstallServerArgsFormat, _profile.InstallDirectory, string.Empty, validate ? "validate" : string.Empty);
+ var steamCmdArgs = SteamUtils.BuildSteamCmdArguments(steamCmdRemoveQuit, Config.Default.SteamCmdInstallServerArgsFormat, Config.Default.SteamCmd_AnonymousUsername, _profile.InstallDirectory, string.Empty, _profile.SotFEnabled ? Config.Default.AppIdServer_SotF : Config.Default.AppIdServer, string.Empty, validate ? "validate" : string.Empty);
var workingDirectory = Config.Default.DataDir;
+ if (steamCmdRemoveQuit)
+ SteamCMDProcessWindowStyle = ProcessWindowStyle.Normal;
+
success = ServerUpdater.UpgradeServerAsync(steamCmdFile, steamCmdArgs, workingDirectory, null, null, _profile.InstallDirectory, Config.Default.SteamCmdRedirectOutput ? (DataReceivedEventHandler)serverOutputHandler : null, cancellationToken, SteamCMDProcessWindowStyle).Result;
if (success && downloadSuccessful)
{
@@ -942,20 +944,10 @@ namespace ServerManagerTool.Lib
LogProfileMessage("Starting mod download.\r\n");
steamCmdArgs = string.Empty;
- if (_profile.SotFEnabled)
- {
- if (Config.Default.SteamCmd_UseAnonymousCredentials)
- steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat_SotF, Config.Default.SteamCmd_AnonymousUsername, modId);
- else
- steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat_SotF, Config.Default.SteamCmd_Username, modId);
- }
+ if (Config.Default.SteamCmd_UseAnonymousCredentials)
+ steamCmdArgs = SteamUtils.BuildSteamCmdArguments(steamCmdRemoveQuit, Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_AnonymousUsername, _profile.SotFEnabled ? Config.Default.AppId_SotF : Config.Default.AppId, modId);
else
- {
- if (Config.Default.SteamCmd_UseAnonymousCredentials)
- steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_AnonymousUsername, modId);
- else
- steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_Username, modId);
- }
+ steamCmdArgs = SteamUtils.BuildSteamCmdArguments(steamCmdRemoveQuit, Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_Username, _profile.SotFEnabled ? Config.Default.AppId_SotF : Config.Default.AppId, modId);
modSuccess = ServerUpdater.UpgradeModsAsync(steamCmdFile, steamCmdArgs, workingDirectory, null, null, Config.Default.SteamCmdRedirectOutput ? modOutputHandler : null, cancellationToken, SteamCMDProcessWindowStyle).Result;
if (modSuccess && downloadSuccessful)
@@ -1259,7 +1251,7 @@ namespace ServerManagerTool.Lib
{
// perform a steamcmd validate to confirm all the files
LogProfileMessage("Validating server files (*new*).");
- UpgradeLocal(true, false, CancellationToken.None);
+ UpgradeLocal(true, false, false, CancellationToken.None);
LogProfileMessage("Validated server files (*new*).");
}
@@ -1606,9 +1598,9 @@ namespace ServerManagerTool.Lib
// update the mod cache
var steamCmdArgs = string.Empty;
if (Config.Default.SteamCmd_UseAnonymousCredentials)
- steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_AnonymousUsername, modId);
+ steamCmdArgs = SteamUtils.BuildSteamCmdArguments(false, Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_AnonymousUsername, Config.Default.AppId, modId);
else
- steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_Username, modId);
+ steamCmdArgs = SteamUtils.BuildSteamCmdArguments(false, Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_Username, Config.Default.AppId, modId);
var workingDirectory = Config.Default.DataDir;
var success = ServerUpdater.UpgradeModsAsync(steamCmdFile, steamCmdArgs, workingDirectory, null, null, Config.Default.SteamCmdRedirectOutput ? modOutputHandler : null, CancellationToken.None, SteamCMDProcessWindowStyle).Result;
@@ -1727,8 +1719,7 @@ namespace ServerManagerTool.Lib
// update the server cache
var validate = Config.Default.AutoUpdate_ValidateServerFiles;
- var steamCmdInstallServerArgsFormat = Config.Default.SteamCmdInstallServerArgsFormat;
- var steamCmdArgs = String.Format(steamCmdInstallServerArgsFormat, cacheFolder, steamCmdInstallServerBetaArgs, validate ? "validate" : string.Empty);
+ var steamCmdArgs = SteamUtils.BuildSteamCmdArguments(false, Config.Default.SteamCmdInstallServerArgsFormat, Config.Default.SteamCmd_AnonymousUsername, cacheFolder, Config.Default.AppIdServer, steamCmdInstallServerBetaArgs.ToString(), validate ? "validate" : string.Empty);
var workingDirectory = Config.Default.DataDir;
var success = ServerUpdater.UpgradeServerAsync(steamCmdFile, steamCmdArgs, workingDirectory, null, null, cacheFolder, Config.Default.SteamCmdRedirectOutput ? serverOutputHandler : null, CancellationToken.None, SteamCMDProcessWindowStyle).Result;
@@ -1905,20 +1896,23 @@ namespace ServerManagerTool.Lib
LogProfileMessage("Delete old profile backup files started...");
var backupFolder = GetProfileBackupFolder(_profile);
- var backupFileFilter = $"*{Config.Default.BackupExtension}";
- var backupDateFilter = DateTime.Now.AddDays(-deleteInterval);
-
- var backupFiles = new DirectoryInfo(backupFolder).GetFiles(backupFileFilter).Where(f => f.LastWriteTime < backupDateFilter);
- foreach (var backupFile in backupFiles)
+ if (Directory.Exists(backupFolder))
{
- try
+ var backupFileFilter = $"*{Config.Default.BackupExtension}";
+ var backupDateFilter = DateTime.Now.AddDays(-deleteInterval);
+
+ var backupFiles = new DirectoryInfo(backupFolder).GetFiles(backupFileFilter).Where(f => f.LastWriteTime < backupDateFilter);
+ foreach (var backupFile in backupFiles)
{
- LogProfileMessage($"{backupFile.Name} was deleted, last updated {backupFile.CreationTime}.");
- backupFile.Delete();
- }
- catch
- {
- // if unable to delete, do not bother
+ try
+ {
+ LogProfileMessage($"{backupFile.Name} was deleted, last updated {backupFile.CreationTime}.");
+ backupFile.Delete();
+ }
+ catch
+ {
+ // if unable to delete, do not bother
+ }
}
}
}
@@ -1935,11 +1929,13 @@ namespace ServerManagerTool.Lib
try
{
var backupFolder = GetProfileBackupFolder(_profile);
-
- var oldBackupFolders = new DirectoryInfo(backupFolder).GetDirectories();
- foreach (var oldBackupFolder in oldBackupFolders)
+ if (Directory.Exists(backupFolder))
{
- oldBackupFolder.Delete(true);
+ var oldBackupFolders = new DirectoryInfo(backupFolder).GetDirectories();
+ foreach (var oldBackupFolder in oldBackupFolders)
+ {
+ oldBackupFolder.Delete(true);
+ }
}
}
catch
@@ -2100,21 +2096,24 @@ namespace ServerManagerTool.Lib
LogProfileMessage("Delete old server backup files started...");
var backupFolder = GetServerBackupFolder(_profile);
- var mapName = ServerProfile.GetProfileMapFileName(_profile.ServerMap, _profile.PGM_Enabled, _profile.PGM_Name);
- var backupFileFilter = $"{mapName}_*{Config.Default.BackupExtension}";
- var backupDateFilter = DateTime.Now.AddDays(-deleteInterval);
-
- var backupFiles = new DirectoryInfo(backupFolder).GetFiles(backupFileFilter).Where(f => f.LastWriteTime < backupDateFilter);
- foreach (var backupFile in backupFiles)
+ if (Directory.Exists(backupFolder))
{
- try
+ var mapName = ServerProfile.GetProfileMapFileName(_profile.ServerMap, _profile.PGM_Enabled, _profile.PGM_Name);
+ var backupFileFilter = $"{mapName}_*{Config.Default.BackupExtension}";
+ var backupDateFilter = DateTime.Now.AddDays(-deleteInterval);
+
+ var backupFiles = new DirectoryInfo(backupFolder).GetFiles(backupFileFilter).Where(f => f.LastWriteTime < backupDateFilter);
+ foreach (var backupFile in backupFiles)
{
- LogProfileMessage($"{backupFile.Name} was deleted, last updated {backupFile.CreationTime}.");
- backupFile.Delete();
- }
- catch
- {
- // if unable to delete, do not bother
+ try
+ {
+ LogProfileMessage($"{backupFile.Name} was deleted, last updated {backupFile.CreationTime}.");
+ backupFile.Delete();
+ }
+ catch
+ {
+ // if unable to delete, do not bother
+ }
}
}
}
@@ -2449,6 +2448,9 @@ namespace ServerManagerTool.Lib
var profiles = new Dictionary();
+ ServerRuntime.EnableUpdateModStatus = false;
+ ServerProfile.EnableServerFilesWatcher = false;
+
foreach (var profileFile in Directory.EnumerateFiles(Config.Default.ConfigDirectory, "*" + Config.Default.ProfileExtension))
{
try
@@ -2784,7 +2786,7 @@ namespace ServerManagerTool.Lib
return ExitCode;
}
- public int PerformProfileShutdown(ServerProfileSnapshot profile, bool performRestart, bool performUpdate, bool checkGracePeriod, CancellationToken cancellationToken)
+ public int PerformProfileShutdown(ServerProfileSnapshot profile, bool performRestart, bool performUpdate, bool checkGracePeriod, bool steamCmdRemoveQuit, CancellationToken cancellationToken)
{
_profile = profile;
@@ -2817,7 +2819,7 @@ namespace ServerManagerTool.Lib
// check if the mutex was established
if (createdNew)
{
- ShutdownServer(performRestart, performUpdate, cancellationToken);
+ ShutdownServer(performRestart, performUpdate, steamCmdRemoveQuit, cancellationToken);
if (ExitCode != EXITCODE_NORMALEXIT)
{
@@ -2893,7 +2895,10 @@ namespace ServerManagerTool.Lib
var createdNew = false;
if (OutputLogs)
+ {
+ _loggerBranch = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), $"{LOGPREFIX_AUTOUPDATE}", $"BranchUpdate_{GetBranchName(branch.BranchName)}");
_loggerProfile = GetLogger(GetProfileLogFolder(profile.ProfileId, LOGPREFIX_AUTOUPDATE), $"{LOGPREFIX_AUTOUPDATE}_{profile.ProfileId}", "Update");
+ }
try
{
@@ -2952,6 +2957,7 @@ namespace ServerManagerTool.Lib
}
}
+ LogProfileMessage("");
LogProfileMessage($"Exitcode = {ExitCode}");
return ExitCode;
}
@@ -2967,11 +2973,11 @@ namespace ServerManagerTool.Lib
var createdNew = false;
if (OutputLogs)
- _loggerBranch = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), $"{LOGPREFIX_AUTOUPDATE}_{GetBranchName(branch.BranchName)}", $"Update_{GetBranchName(branch.BranchName)}");
+ _loggerBranch = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), $"{LOGPREFIX_AUTOUPDATE}", $"BranchUpdate_{GetBranchName(branch.BranchName)}");
try
{
- LogBranchMessage(branch.BranchName, $"Started branch update process.");
+ LogMessage($"[{GetBranchName(branch.BranchName)}] Started branch update process.");
var cacheFolder = GetServerCacheFolder(branch.BranchName);
@@ -3017,7 +3023,7 @@ namespace ServerManagerTool.Lib
else
{
var delay = 0;
- foreach (var profile in _profiles.Keys.Where(p => p.EnableAutoUpdate))
+ foreach (var profile in profiles)
{
if (delay > 0)
Task.Delay(delay * 1000).Wait();
@@ -3039,12 +3045,12 @@ namespace ServerManagerTool.Lib
ExitCode = EXITCODE_EXITWITHERRORS;
}
- LogBranchMessage(branch.BranchName, $"Finished branch update process.");
+ LogMessage($"[{GetBranchName(branch.BranchName)}] Finished branch update process.");
}
else
{
ExitCode = EXITCODE_PROCESSALREADYRUNNING;
- LogBranchMessage(branch.BranchName, "Cancelled branch update process, could not lock branch folder.");
+ LogMessage($"[{GetBranchName(branch.BranchName)}] Cancelled branch update process, could not lock branch folder.");
}
}
catch (Exception ex)
@@ -3076,6 +3082,7 @@ namespace ServerManagerTool.Lib
}
}
+ LogBranchMessage(branch.BranchName, "");
LogBranchMessage(branch.BranchName, $"Exitcode = {ExitCode}");
return ExitCode;
}
@@ -3084,7 +3091,7 @@ namespace ServerManagerTool.Lib
{
int exitCode = EXITCODE_NORMALEXIT;
- _loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOBACKUP), LOGPREFIX_AUTOBACKUP, "Backup");
+ _loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOBACKUP), LOGPREFIX_AUTOBACKUP, "AutoBackup");
try
{
@@ -3133,7 +3140,7 @@ namespace ServerManagerTool.Lib
{
int exitCode = EXITCODE_NORMALEXIT;
- _loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOSHUTDOWN), LOGPREFIX_AUTOSHUTDOWN, "Shutdown");
+ _loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOSHUTDOWN), LOGPREFIX_AUTOSHUTDOWN, "AutoShutdown");
try
{
@@ -3194,7 +3201,7 @@ namespace ServerManagerTool.Lib
ServerProcess = type,
SteamCMDProcessWindowStyle = ProcessWindowStyle.Hidden
};
- exitCode = app.PerformProfileShutdown(profile, performRestart, performUpdate, true, CancellationToken.None);
+ exitCode = app.PerformProfileShutdown(profile, performRestart, performUpdate, true, false, CancellationToken.None);
if (profile.ServerUpdated)
{
@@ -3217,7 +3224,7 @@ namespace ServerManagerTool.Lib
Mutex mutex = null;
bool createdNew = false;
- _loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), LOGPREFIX_AUTOUPDATE, "Update");
+ _loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), LOGPREFIX_AUTOUPDATE, "AutoUpdate");
try
{
diff --git a/src/ARKServerManager/Lib/ServerRuntime.cs b/src/ARKServerManager/Lib/ServerRuntime.cs
index 93d5c962..9557031b 100644
--- a/src/ARKServerManager/Lib/ServerRuntime.cs
+++ b/src/ARKServerManager/Lib/ServerRuntime.cs
@@ -597,8 +597,7 @@ namespace ServerManagerTool.Lib
};
var steamCmdRemoveQuit = CommonConfig.Default.SteamCmdRemoveQuit && !Config.Default.SteamCmdRedirectOutput;
- var steamCmdInstallServerArgsFormat = this.ProfileSnapshot.SotFEnabled ? Config.Default.SteamCmdInstallServerArgsFormat_SotF : Config.Default.SteamCmdInstallServerArgsFormat;
- var steamCmdArgs = String.Format(steamCmdInstallServerArgsFormat, this.ProfileSnapshot.InstallDirectory, steamCmdInstallServerBetaArgs, validate ? "validate" : string.Empty);
+ var steamCmdArgs = SteamUtils.BuildSteamCmdArguments(steamCmdRemoveQuit, Config.Default.SteamCmdInstallServerArgsFormat, Config.Default.SteamCmd_AnonymousUsername, this.ProfileSnapshot.InstallDirectory, Config.Default.AppIdServer, steamCmdInstallServerBetaArgs.ToString(), validate ? "validate" : string.Empty);
var workingDirectory = Config.Default.DataDir;
success = await ServerUpdater.UpgradeServerAsync(steamCmdFile, steamCmdArgs, workingDirectory, null, null, this.ProfileSnapshot.InstallDirectory, Config.Default.SteamCmdRedirectOutput ? serverOutputHandler : null, cancellationToken, steamCmdRemoveQuit ? ProcessWindowStyle.Normal : ProcessWindowStyle.Minimized);
@@ -776,20 +775,10 @@ namespace ServerManagerTool.Lib
var steamCmdArgs = string.Empty;
var steamCmdRemoveQuit = CommonConfig.Default.SteamCmdRemoveQuit && !Config.Default.SteamCmdRedirectOutput;
- if (this.ProfileSnapshot.SotFEnabled)
- {
- if (Config.Default.SteamCmd_UseAnonymousCredentials)
- steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat_SotF, Config.Default.SteamCmd_AnonymousUsername, modId);
- else
- steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat_SotF, Config.Default.SteamCmd_Username, modId);
- }
+ if (Config.Default.SteamCmd_UseAnonymousCredentials)
+ steamCmdArgs = SteamUtils.BuildSteamCmdArguments(steamCmdRemoveQuit, Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_AnonymousUsername, this.ProfileSnapshot.SotFEnabled ? Config.Default.AppId_SotF : Config.Default.AppId, modId);
else
- {
- if (Config.Default.SteamCmd_UseAnonymousCredentials)
- steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_AnonymousUsername, modId);
- else
- steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_Username, modId);
- }
+ steamCmdArgs = SteamUtils.BuildSteamCmdArguments(steamCmdRemoveQuit, Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_Username, this.ProfileSnapshot.SotFEnabled ? Config.Default.AppId_SotF : Config.Default.AppId, modId);
var workingDirectory = Config.Default.DataDir;
modSuccess = await ServerUpdater.UpgradeModsAsync(steamCmdFile, steamCmdArgs, workingDirectory, null, null, Config.Default.SteamCmdRedirectOutput ? modOutputHandler : null, cancellationToken, steamCmdRemoveQuit ? ProcessWindowStyle.Normal : ProcessWindowStyle.Minimized);
diff --git a/src/ARKServerManager/Utils/DiscordBotHelper.cs b/src/ARKServerManager/Utils/DiscordBotHelper.cs
index 2be3927b..ca15eca6 100644
--- a/src/ARKServerManager/Utils/DiscordBotHelper.cs
+++ b/src/ARKServerManager/Utils/DiscordBotHelper.cs
@@ -415,7 +415,7 @@ namespace ServerManagerTool.Utils
task = Task.Run(() =>
{
- app.PerformProfileShutdown(profile, true, false, false, token);
+ app.PerformProfileShutdown(profile, true, false, false, false, token);
_currentProfileCommands.Remove(key);
});
@@ -516,7 +516,7 @@ namespace ServerManagerTool.Utils
task = Task.Run(() =>
{
- app.PerformProfileShutdown(profile, false, false, false, token);
+ app.PerformProfileShutdown(profile, false, false, false, false, token);
_currentProfileCommands.Remove(key);
});
@@ -618,7 +618,7 @@ namespace ServerManagerTool.Utils
task = Task.Run(() =>
{
- app.PerformProfileShutdown(profile, false, false, false, token);
+ app.PerformProfileShutdown(profile, false, false, false, false, token);
_currentProfileCommands.Remove(key);
});
@@ -720,7 +720,7 @@ namespace ServerManagerTool.Utils
task = Task.Run(() =>
{
- app.PerformProfileShutdown(profile, true, false, false, token);
+ app.PerformProfileShutdown(profile, true, false, false, false, token);
_currentProfileCommands.Remove(key);
});
@@ -824,7 +824,7 @@ namespace ServerManagerTool.Utils
task = Task.Run(() =>
{
- app.PerformProfileShutdown(profile, performRestart, true, false, token);
+ app.PerformProfileShutdown(profile, performRestart, true, false, false, token);
_currentProfileCommands.Remove(key);
});
diff --git a/src/ARKServerManager/Windows/ShutdownWindow.xaml.cs b/src/ARKServerManager/Windows/ShutdownWindow.xaml.cs
index 1bb98929..517b6486 100644
--- a/src/ARKServerManager/Windows/ShutdownWindow.xaml.cs
+++ b/src/ARKServerManager/Windows/ShutdownWindow.xaml.cs
@@ -1,4 +1,5 @@
-using ServerManagerTool.Common.Utils;
+using ServerManagerTool.Common;
+using ServerManagerTool.Common.Utils;
using ServerManagerTool.Enums;
using ServerManagerTool.Lib;
using ServerManagerTool.Plugin.Common;
@@ -243,7 +244,7 @@ namespace ServerManagerTool
_shutdownCancellationSource = new CancellationTokenSource();
- var exitCode = await Task.Run(() => app.PerformProfileShutdown(profile, restartServer, updateServer, false, _shutdownCancellationSource.Token));
+ var exitCode = await Task.Run(() => app.PerformProfileShutdown(profile, restartServer, updateServer, false, CommonConfig.Default.SteamCmdRemoveQuit, _shutdownCancellationSource.Token));
if (exitCode != ServerApp.EXITCODE_NORMALEXIT && exitCode != ServerApp.EXITCODE_CANCELLED)
throw new ApplicationException($"An error occured during the shutdown process - ExitCode: {exitCode}");
diff --git a/src/ConanServerManager/ConanServerManager.csproj b/src/ConanServerManager/ConanServerManager.csproj
index 2cb68cae..e7439e3d 100644
--- a/src/ConanServerManager/ConanServerManager.csproj
+++ b/src/ConanServerManager/ConanServerManager.csproj
@@ -53,6 +53,42 @@
4
false
+
+ true
+ bin\Debug - Beta\
+ DEBUG;TRACE
+ full
+ AnyCPU
+ 7.3
+ prompt
+
+
+ true
+ bin\Debug
+ TRACE;DEBUG
+ full
+ AnyCPU
+ 7.3
+ prompt
+
+
+ true
+ bin\Debug
+ TRACE;DEBUG
+ full
+ AnyCPU
+ 7.3
+ prompt
+
+
+ true
+ bin\Debug
+ TRACE;DEBUG
+ full
+ AnyCPU
+ 7.3
+ prompt
+
AnyCPU
none
@@ -87,15 +123,6 @@
false
-
- true
- bin\Debug - Beta\
- DEBUG;TRACE
- full
- AnyCPU
- 7.3
- prompt
-
..\packages\DotNetZip.1.13.8\lib\net40\DotNetZip.dll
diff --git a/src/ConanServerManager/Lib/ServerApp.cs b/src/ConanServerManager/Lib/ServerApp.cs
index f44a1369..1f2f2410 100644
--- a/src/ConanServerManager/Lib/ServerApp.cs
+++ b/src/ConanServerManager/Lib/ServerApp.cs
@@ -342,7 +342,7 @@ namespace ServerManagerTool.Lib
var startInfo = new ProcessStartInfo()
{
FileName = GetLauncherFile(),
- UseShellExecute = false,
+ UseShellExecute = true,
};
process = Process.Start(startInfo);
@@ -735,8 +735,7 @@ namespace ServerManagerTool.Lib
}
}
- var steamCmdInstallServerArgsFormat = Config.Default.SteamCmdInstallServerArgsFormat;
- var steamCmdArgs = SteamUtils.BuildSteamCmdArguments(steamCmdRemoveQuit, steamCmdInstallServerArgsFormat, Config.Default.SteamCmd_AnonymousUsername, _profile.InstallDirectory, string.Empty, Config.Default.AppIdServer, string.Empty, validate ? "validate" : string.Empty);
+ var steamCmdArgs = SteamUtils.BuildSteamCmdArguments(steamCmdRemoveQuit, Config.Default.SteamCmdInstallServerArgsFormat, Config.Default.SteamCmd_AnonymousUsername, _profile.InstallDirectory, string.Empty, Config.Default.AppIdServer, string.Empty, validate ? "validate" : string.Empty);
var workingDirectory = Config.Default.DataPath;
if (steamCmdRemoveQuit)
@@ -1675,8 +1674,7 @@ namespace ServerManagerTool.Lib
// update the server cache
var validate = Config.Default.AutoUpdate_ValidateServerFiles;
- var steamCmdInstallServerArgsFormat = Config.Default.SteamCmdInstallServerArgsFormat;
- var steamCmdArgs = SteamUtils.BuildSteamCmdArguments(false, steamCmdInstallServerArgsFormat, Config.Default.SteamCmd_AnonymousUsername, cacheFolder, Config.Default.AppIdServer, steamCmdInstallServerBetaArgs.ToString(), validate ? "validate" : string.Empty);
+ var steamCmdArgs = SteamUtils.BuildSteamCmdArguments(false, Config.Default.SteamCmdInstallServerArgsFormat, Config.Default.SteamCmd_AnonymousUsername, cacheFolder, Config.Default.AppIdServer, steamCmdInstallServerBetaArgs.ToString(), validate ? "validate" : string.Empty);
var workingDirectory = Config.Default.DataPath;
var success = ServerUpdater.UpgradeServerAsync(steamCmdFile, steamCmdArgs, workingDirectory, null, null, cacheFolder, Config.Default.SteamCmdRedirectOutput ? serverOutputHandler : null, CancellationToken.None, SteamCMDProcessWindowStyle).Result;
@@ -1813,20 +1811,23 @@ namespace ServerManagerTool.Lib
LogProfileMessage("Delete old profile backup files started...");
var backupFolder = GetProfileBackupFolder(_profile);
- var backupFileFilter = $"*{Config.Default.BackupExtension}";
- var backupDateFilter = DateTime.Now.AddDays(-deleteInterval);
-
- var backupFiles = new DirectoryInfo(backupFolder).GetFiles(backupFileFilter).Where(f => f.LastWriteTime < backupDateFilter);
- foreach (var backupFile in backupFiles)
+ if (Directory.Exists(backupFolder))
{
- try
+ var backupFileFilter = $"*{Config.Default.BackupExtension}";
+ var backupDateFilter = DateTime.Now.AddDays(-deleteInterval);
+
+ var backupFiles = new DirectoryInfo(backupFolder).GetFiles(backupFileFilter).Where(f => f.LastWriteTime < backupDateFilter);
+ foreach (var backupFile in backupFiles)
{
- LogProfileMessage($"{backupFile.Name} was deleted, last updated {backupFile.CreationTime}.");
- backupFile.Delete();
- }
- catch
- {
- // if unable to delete, do not bother
+ try
+ {
+ LogProfileMessage($"{backupFile.Name} was deleted, last updated {backupFile.CreationTime}.");
+ backupFile.Delete();
+ }
+ catch
+ {
+ // if unable to delete, do not bother
+ }
}
}
}
@@ -1843,11 +1844,13 @@ namespace ServerManagerTool.Lib
try
{
var backupFolder = GetProfileBackupFolder(_profile);
-
- var oldBackupFolders = new DirectoryInfo(backupFolder).GetDirectories();
- foreach (var oldBackupFolder in oldBackupFolders)
+ if (Directory.Exists(backupFolder))
{
- oldBackupFolder.Delete(true);
+ var oldBackupFolders = new DirectoryInfo(backupFolder).GetDirectories();
+ foreach (var oldBackupFolder in oldBackupFolders)
+ {
+ oldBackupFolder.Delete(true);
+ }
}
}
catch
@@ -1974,21 +1977,24 @@ namespace ServerManagerTool.Lib
LogProfileMessage("Delete old server backup files started...");
var backupFolder = GetServerBackupFolder(_profile);
- var saveFileName = Path.GetFileNameWithoutExtension(_profile.GameFile);
- var backupFileFilter = $"{saveFileName}_*{Config.Default.BackupExtension}";
- var backupDateFilter = DateTime.Now.AddDays(-deleteInterval);
-
- var backupFiles = new DirectoryInfo(backupFolder).GetFiles(backupFileFilter).Where(f => f.LastWriteTime < backupDateFilter);
- foreach (var backupFile in backupFiles)
+ if (Directory.Exists(backupFolder))
{
- try
+ var saveFileName = Path.GetFileNameWithoutExtension(_profile.GameFile);
+ var backupFileFilter = $"{saveFileName}_*{Config.Default.BackupExtension}";
+ var backupDateFilter = DateTime.Now.AddDays(-deleteInterval);
+
+ var backupFiles = new DirectoryInfo(backupFolder).GetFiles(backupFileFilter).Where(f => f.LastWriteTime < backupDateFilter);
+ foreach (var backupFile in backupFiles)
{
- LogProfileMessage($"{backupFile.Name} was deleted, last updated {backupFile.CreationTime}.");
- backupFile.Delete();
- }
- catch
- {
- // if unable to delete, do not bother
+ try
+ {
+ LogProfileMessage($"{backupFile.Name} was deleted, last updated {backupFile.CreationTime}.");
+ backupFile.Delete();
+ }
+ catch
+ {
+ // if unable to delete, do not bother
+ }
}
}
}
@@ -2295,6 +2301,9 @@ namespace ServerManagerTool.Lib
var profiles = new Dictionary();
+ ServerRuntime.EnableUpdateModStatus = false;
+ ServerProfile.EnableServerFilesWatcher = false;
+
foreach (var profileFile in Directory.EnumerateFiles(Config.Default.ConfigPath, "*" + Config.Default.ProfileExtension))
{
try
@@ -2739,7 +2748,10 @@ namespace ServerManagerTool.Lib
var createdNew = false;
if (OutputLogs)
+ {
+ _loggerBranch = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), $"{LOGPREFIX_AUTOUPDATE}", $"BranchUpdate_{GetBranchName(branch.BranchName)}");
_loggerProfile = GetLogger(GetProfileLogFolder(profile.ProfileId, LOGPREFIX_AUTOUPDATE), $"{LOGPREFIX_AUTOUPDATE}_{profile.ProfileId}", "Update");
+ }
try
{
@@ -2798,6 +2810,7 @@ namespace ServerManagerTool.Lib
}
}
+ LogProfileMessage("");
LogProfileMessage($"Exitcode = {ExitCode}");
return ExitCode;
}
@@ -2813,11 +2826,11 @@ namespace ServerManagerTool.Lib
var createdNew = false;
if (OutputLogs)
- _loggerBranch = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), $"{LOGPREFIX_AUTOUPDATE}_{GetBranchName(branch.BranchName)}", $"Update_{GetBranchName(branch.BranchName)}");
+ _loggerBranch = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), $"{LOGPREFIX_AUTOUPDATE}", $"BranchUpdate_{GetBranchName(branch.BranchName)}");
try
{
- LogBranchMessage(branch.BranchName, $"Started branch update process.");
+ LogMessage($"[{GetBranchName(branch.BranchName)}] Started branch update process.");
var cacheFolder = GetServerCacheFolder(branch.BranchName);
@@ -2863,7 +2876,7 @@ namespace ServerManagerTool.Lib
else
{
var delay = 0;
- foreach (var profile in _profiles.Keys.Where(p => p.EnableAutoUpdate))
+ foreach (var profile in profiles)
{
if (delay > 0)
Task.Delay(delay * 1000).Wait();
@@ -2885,12 +2898,12 @@ namespace ServerManagerTool.Lib
ExitCode = EXITCODE_EXITWITHERRORS;
}
- LogBranchMessage(branch.BranchName, $"Finished branch update process.");
+ LogMessage($"[{GetBranchName(branch.BranchName)}] Finished branch update process.");
}
else
{
ExitCode = EXITCODE_PROCESSALREADYRUNNING;
- LogBranchMessage(branch.BranchName, "Cancelled branch update process, could not lock branch folder.");
+ LogMessage($"[{GetBranchName(branch.BranchName)}] Cancelled branch update process, could not lock branch folder.");
}
}
catch (Exception ex)
@@ -2922,6 +2935,7 @@ namespace ServerManagerTool.Lib
}
}
+ LogBranchMessage(branch.BranchName, "");
LogBranchMessage(branch.BranchName, $"Exitcode = {ExitCode}");
return ExitCode;
}
@@ -2930,7 +2944,7 @@ namespace ServerManagerTool.Lib
{
int exitCode = EXITCODE_NORMALEXIT;
- _loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOBACKUP), LOGPREFIX_AUTOBACKUP, "Backup");
+ _loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOBACKUP), LOGPREFIX_AUTOBACKUP, "AutoBackup");
try
{
@@ -2979,7 +2993,7 @@ namespace ServerManagerTool.Lib
{
int exitCode = EXITCODE_NORMALEXIT;
- _loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOSHUTDOWN), LOGPREFIX_AUTOSHUTDOWN, "Shutdown");
+ _loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOSHUTDOWN), LOGPREFIX_AUTOSHUTDOWN, "AutoShutdown");
try
{
@@ -3063,7 +3077,7 @@ namespace ServerManagerTool.Lib
Mutex mutex = null;
bool createdNew = false;
- _loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), LOGPREFIX_AUTOUPDATE, "Update");
+ _loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), LOGPREFIX_AUTOUPDATE, "AutoUpdate");
try
{
diff --git a/src/Server-Managers.sln b/src/Server-Managers.sln
index 8420576b..3e19ae51 100644
--- a/src/Server-Managers.sln
+++ b/src/Server-Managers.sln
@@ -48,107 +48,212 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServerManager.Discord", "Se
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug - AutoBackup|Any CPU = Debug - AutoBackup|Any CPU
+ Debug - AutoShutdown|Any CPU = Debug - AutoShutdown|Any CPU
+ Debug - AutoUpdate|Any CPU = Debug - AutoUpdate|Any CPU
Debug - Beta|Any CPU = Debug - Beta|Any CPU
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {7C99D9F7-0C65-4116-927A-94EB018C88FD}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {7C99D9F7-0C65-4116-927A-94EB018C88FD}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {7C99D9F7-0C65-4116-927A-94EB018C88FD}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {7C99D9F7-0C65-4116-927A-94EB018C88FD}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {7C99D9F7-0C65-4116-927A-94EB018C88FD}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {7C99D9F7-0C65-4116-927A-94EB018C88FD}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{7C99D9F7-0C65-4116-927A-94EB018C88FD}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{7C99D9F7-0C65-4116-927A-94EB018C88FD}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{7C99D9F7-0C65-4116-927A-94EB018C88FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7C99D9F7-0C65-4116-927A-94EB018C88FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C99D9F7-0C65-4116-927A-94EB018C88FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C99D9F7-0C65-4116-927A-94EB018C88FD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {715461E8-4E54-4993-80A8-8E72892135E0}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {715461E8-4E54-4993-80A8-8E72892135E0}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {715461E8-4E54-4993-80A8-8E72892135E0}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {715461E8-4E54-4993-80A8-8E72892135E0}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {715461E8-4E54-4993-80A8-8E72892135E0}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {715461E8-4E54-4993-80A8-8E72892135E0}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{715461E8-4E54-4993-80A8-8E72892135E0}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{715461E8-4E54-4993-80A8-8E72892135E0}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{715461E8-4E54-4993-80A8-8E72892135E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{715461E8-4E54-4993-80A8-8E72892135E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{715461E8-4E54-4993-80A8-8E72892135E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{715461E8-4E54-4993-80A8-8E72892135E0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E4EDA8B8-006C-4D41-822F-F64B6DB0021F}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {E4EDA8B8-006C-4D41-822F-F64B6DB0021F}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {E4EDA8B8-006C-4D41-822F-F64B6DB0021F}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {E4EDA8B8-006C-4D41-822F-F64B6DB0021F}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {E4EDA8B8-006C-4D41-822F-F64B6DB0021F}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {E4EDA8B8-006C-4D41-822F-F64B6DB0021F}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{E4EDA8B8-006C-4D41-822F-F64B6DB0021F}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{E4EDA8B8-006C-4D41-822F-F64B6DB0021F}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{E4EDA8B8-006C-4D41-822F-F64B6DB0021F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E4EDA8B8-006C-4D41-822F-F64B6DB0021F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E4EDA8B8-006C-4D41-822F-F64B6DB0021F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E4EDA8B8-006C-4D41-822F-F64B6DB0021F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {679FE859-9A82-4FFB-A758-C1E8DF915F58}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {679FE859-9A82-4FFB-A758-C1E8DF915F58}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {679FE859-9A82-4FFB-A758-C1E8DF915F58}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {679FE859-9A82-4FFB-A758-C1E8DF915F58}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {679FE859-9A82-4FFB-A758-C1E8DF915F58}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {679FE859-9A82-4FFB-A758-C1E8DF915F58}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{679FE859-9A82-4FFB-A758-C1E8DF915F58}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{679FE859-9A82-4FFB-A758-C1E8DF915F58}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{679FE859-9A82-4FFB-A758-C1E8DF915F58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{679FE859-9A82-4FFB-A758-C1E8DF915F58}.Debug|Any CPU.Build.0 = Debug|Any CPU
{679FE859-9A82-4FFB-A758-C1E8DF915F58}.Release|Any CPU.ActiveCfg = Release|Any CPU
{679FE859-9A82-4FFB-A758-C1E8DF915F58}.Release|Any CPU.Build.0 = Release|Any CPU
+ {936EF260-FECF-4E9E-A21E-092D65931C7D}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {936EF260-FECF-4E9E-A21E-092D65931C7D}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {936EF260-FECF-4E9E-A21E-092D65931C7D}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {936EF260-FECF-4E9E-A21E-092D65931C7D}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {936EF260-FECF-4E9E-A21E-092D65931C7D}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {936EF260-FECF-4E9E-A21E-092D65931C7D}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{936EF260-FECF-4E9E-A21E-092D65931C7D}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{936EF260-FECF-4E9E-A21E-092D65931C7D}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{936EF260-FECF-4E9E-A21E-092D65931C7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{936EF260-FECF-4E9E-A21E-092D65931C7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{936EF260-FECF-4E9E-A21E-092D65931C7D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{936EF260-FECF-4E9E-A21E-092D65931C7D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3E0C9EE6-780F-4FEF-BA03-E38062A5FDB6}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {3E0C9EE6-780F-4FEF-BA03-E38062A5FDB6}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {3E0C9EE6-780F-4FEF-BA03-E38062A5FDB6}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {3E0C9EE6-780F-4FEF-BA03-E38062A5FDB6}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {3E0C9EE6-780F-4FEF-BA03-E38062A5FDB6}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {3E0C9EE6-780F-4FEF-BA03-E38062A5FDB6}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{3E0C9EE6-780F-4FEF-BA03-E38062A5FDB6}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{3E0C9EE6-780F-4FEF-BA03-E38062A5FDB6}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{3E0C9EE6-780F-4FEF-BA03-E38062A5FDB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E0C9EE6-780F-4FEF-BA03-E38062A5FDB6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E0C9EE6-780F-4FEF-BA03-E38062A5FDB6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E0C9EE6-780F-4FEF-BA03-E38062A5FDB6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D2EE1483-021F-4900-BBE8-88338D1386F4}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {D2EE1483-021F-4900-BBE8-88338D1386F4}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {D2EE1483-021F-4900-BBE8-88338D1386F4}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {D2EE1483-021F-4900-BBE8-88338D1386F4}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {D2EE1483-021F-4900-BBE8-88338D1386F4}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {D2EE1483-021F-4900-BBE8-88338D1386F4}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{D2EE1483-021F-4900-BBE8-88338D1386F4}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{D2EE1483-021F-4900-BBE8-88338D1386F4}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{D2EE1483-021F-4900-BBE8-88338D1386F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D2EE1483-021F-4900-BBE8-88338D1386F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D2EE1483-021F-4900-BBE8-88338D1386F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D2EE1483-021F-4900-BBE8-88338D1386F4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F7A82C6A-32CD-4847-AD16-D79ADC72746E}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug - AutoBackup|Any CPU
+ {F7A82C6A-32CD-4847-AD16-D79ADC72746E}.Debug - AutoBackup|Any CPU.Build.0 = Debug - AutoBackup|Any CPU
+ {F7A82C6A-32CD-4847-AD16-D79ADC72746E}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug - AutoShutdown|Any CPU
+ {F7A82C6A-32CD-4847-AD16-D79ADC72746E}.Debug - AutoShutdown|Any CPU.Build.0 = Debug - AutoShutdown|Any CPU
+ {F7A82C6A-32CD-4847-AD16-D79ADC72746E}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug - AutoUpdate|Any CPU
+ {F7A82C6A-32CD-4847-AD16-D79ADC72746E}.Debug - AutoUpdate|Any CPU.Build.0 = Debug - AutoUpdate|Any CPU
{F7A82C6A-32CD-4847-AD16-D79ADC72746E}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{F7A82C6A-32CD-4847-AD16-D79ADC72746E}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{F7A82C6A-32CD-4847-AD16-D79ADC72746E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F7A82C6A-32CD-4847-AD16-D79ADC72746E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F7A82C6A-32CD-4847-AD16-D79ADC72746E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F7A82C6A-32CD-4847-AD16-D79ADC72746E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {96832688-29BD-464F-9DCE-482E37BFC751}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {96832688-29BD-464F-9DCE-482E37BFC751}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {96832688-29BD-464F-9DCE-482E37BFC751}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {96832688-29BD-464F-9DCE-482E37BFC751}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {96832688-29BD-464F-9DCE-482E37BFC751}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {96832688-29BD-464F-9DCE-482E37BFC751}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{96832688-29BD-464F-9DCE-482E37BFC751}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{96832688-29BD-464F-9DCE-482E37BFC751}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{96832688-29BD-464F-9DCE-482E37BFC751}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{96832688-29BD-464F-9DCE-482E37BFC751}.Debug|Any CPU.Build.0 = Debug|Any CPU
{96832688-29BD-464F-9DCE-482E37BFC751}.Release|Any CPU.ActiveCfg = Release|Any CPU
{96832688-29BD-464F-9DCE-482E37BFC751}.Release|Any CPU.Build.0 = Release|Any CPU
+ {95D4E57F-06F9-4B41-BEBB-2A8E81759BD2}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug - AutoBackup|Any CPU
+ {95D4E57F-06F9-4B41-BEBB-2A8E81759BD2}.Debug - AutoBackup|Any CPU.Build.0 = Debug - AutoBackup|Any CPU
+ {95D4E57F-06F9-4B41-BEBB-2A8E81759BD2}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug - AutoShutdown|Any CPU
+ {95D4E57F-06F9-4B41-BEBB-2A8E81759BD2}.Debug - AutoShutdown|Any CPU.Build.0 = Debug - AutoShutdown|Any CPU
+ {95D4E57F-06F9-4B41-BEBB-2A8E81759BD2}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug - AutoUpdate|Any CPU
+ {95D4E57F-06F9-4B41-BEBB-2A8E81759BD2}.Debug - AutoUpdate|Any CPU.Build.0 = Debug - AutoUpdate|Any CPU
{95D4E57F-06F9-4B41-BEBB-2A8E81759BD2}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{95D4E57F-06F9-4B41-BEBB-2A8E81759BD2}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{95D4E57F-06F9-4B41-BEBB-2A8E81759BD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{95D4E57F-06F9-4B41-BEBB-2A8E81759BD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{95D4E57F-06F9-4B41-BEBB-2A8E81759BD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{95D4E57F-06F9-4B41-BEBB-2A8E81759BD2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4CA9C894-518F-42D7-BBE2-CFDFE7A03F8A}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {4CA9C894-518F-42D7-BBE2-CFDFE7A03F8A}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {4CA9C894-518F-42D7-BBE2-CFDFE7A03F8A}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {4CA9C894-518F-42D7-BBE2-CFDFE7A03F8A}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {4CA9C894-518F-42D7-BBE2-CFDFE7A03F8A}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {4CA9C894-518F-42D7-BBE2-CFDFE7A03F8A}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{4CA9C894-518F-42D7-BBE2-CFDFE7A03F8A}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{4CA9C894-518F-42D7-BBE2-CFDFE7A03F8A}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{4CA9C894-518F-42D7-BBE2-CFDFE7A03F8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4CA9C894-518F-42D7-BBE2-CFDFE7A03F8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4CA9C894-518F-42D7-BBE2-CFDFE7A03F8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4CA9C894-518F-42D7-BBE2-CFDFE7A03F8A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DD0A2401-99B8-4DE1-B8ED-9B075172F8AF}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {DD0A2401-99B8-4DE1-B8ED-9B075172F8AF}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {DD0A2401-99B8-4DE1-B8ED-9B075172F8AF}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {DD0A2401-99B8-4DE1-B8ED-9B075172F8AF}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {DD0A2401-99B8-4DE1-B8ED-9B075172F8AF}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {DD0A2401-99B8-4DE1-B8ED-9B075172F8AF}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{DD0A2401-99B8-4DE1-B8ED-9B075172F8AF}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{DD0A2401-99B8-4DE1-B8ED-9B075172F8AF}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{DD0A2401-99B8-4DE1-B8ED-9B075172F8AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DD0A2401-99B8-4DE1-B8ED-9B075172F8AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DD0A2401-99B8-4DE1-B8ED-9B075172F8AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DD0A2401-99B8-4DE1-B8ED-9B075172F8AF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {630422CA-4BCC-4D1D-9701-87D8EAF0B209}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {630422CA-4BCC-4D1D-9701-87D8EAF0B209}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {630422CA-4BCC-4D1D-9701-87D8EAF0B209}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {630422CA-4BCC-4D1D-9701-87D8EAF0B209}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {630422CA-4BCC-4D1D-9701-87D8EAF0B209}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {630422CA-4BCC-4D1D-9701-87D8EAF0B209}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{630422CA-4BCC-4D1D-9701-87D8EAF0B209}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{630422CA-4BCC-4D1D-9701-87D8EAF0B209}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{630422CA-4BCC-4D1D-9701-87D8EAF0B209}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{630422CA-4BCC-4D1D-9701-87D8EAF0B209}.Debug|Any CPU.Build.0 = Debug|Any CPU
{630422CA-4BCC-4D1D-9701-87D8EAF0B209}.Release|Any CPU.ActiveCfg = Release|Any CPU
{630422CA-4BCC-4D1D-9701-87D8EAF0B209}.Release|Any CPU.Build.0 = Release|Any CPU
+ {39C42E58-36BD-4C6B-9AD2-7F9EBCA7A68A}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {39C42E58-36BD-4C6B-9AD2-7F9EBCA7A68A}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {39C42E58-36BD-4C6B-9AD2-7F9EBCA7A68A}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {39C42E58-36BD-4C6B-9AD2-7F9EBCA7A68A}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {39C42E58-36BD-4C6B-9AD2-7F9EBCA7A68A}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {39C42E58-36BD-4C6B-9AD2-7F9EBCA7A68A}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{39C42E58-36BD-4C6B-9AD2-7F9EBCA7A68A}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{39C42E58-36BD-4C6B-9AD2-7F9EBCA7A68A}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{39C42E58-36BD-4C6B-9AD2-7F9EBCA7A68A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39C42E58-36BD-4C6B-9AD2-7F9EBCA7A68A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39C42E58-36BD-4C6B-9AD2-7F9EBCA7A68A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39C42E58-36BD-4C6B-9AD2-7F9EBCA7A68A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A8BFC452-5BE8-41E7-BD1D-C29B944185CE}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {A8BFC452-5BE8-41E7-BD1D-C29B944185CE}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {A8BFC452-5BE8-41E7-BD1D-C29B944185CE}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {A8BFC452-5BE8-41E7-BD1D-C29B944185CE}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {A8BFC452-5BE8-41E7-BD1D-C29B944185CE}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {A8BFC452-5BE8-41E7-BD1D-C29B944185CE}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{A8BFC452-5BE8-41E7-BD1D-C29B944185CE}.Debug - Beta|Any CPU.ActiveCfg = Debug|Any CPU
{A8BFC452-5BE8-41E7-BD1D-C29B944185CE}.Debug - Beta|Any CPU.Build.0 = Debug|Any CPU
{A8BFC452-5BE8-41E7-BD1D-C29B944185CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A8BFC452-5BE8-41E7-BD1D-C29B944185CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A8BFC452-5BE8-41E7-BD1D-C29B944185CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A8BFC452-5BE8-41E7-BD1D-C29B944185CE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1434D87A-E9FC-48B9-BEC9-E5A3003F1F2E}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {1434D87A-E9FC-48B9-BEC9-E5A3003F1F2E}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {1434D87A-E9FC-48B9-BEC9-E5A3003F1F2E}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {1434D87A-E9FC-48B9-BEC9-E5A3003F1F2E}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {1434D87A-E9FC-48B9-BEC9-E5A3003F1F2E}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {1434D87A-E9FC-48B9-BEC9-E5A3003F1F2E}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{1434D87A-E9FC-48B9-BEC9-E5A3003F1F2E}.Debug - Beta|Any CPU.ActiveCfg = Debug|Any CPU
{1434D87A-E9FC-48B9-BEC9-E5A3003F1F2E}.Debug - Beta|Any CPU.Build.0 = Debug|Any CPU
{1434D87A-E9FC-48B9-BEC9-E5A3003F1F2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1434D87A-E9FC-48B9-BEC9-E5A3003F1F2E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1434D87A-E9FC-48B9-BEC9-E5A3003F1F2E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1434D87A-E9FC-48B9-BEC9-E5A3003F1F2E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C4C8000D-5E45-497C-A218-B95A1567010E}.Debug - AutoBackup|Any CPU.ActiveCfg = Debug|Any CPU
+ {C4C8000D-5E45-497C-A218-B95A1567010E}.Debug - AutoBackup|Any CPU.Build.0 = Debug|Any CPU
+ {C4C8000D-5E45-497C-A218-B95A1567010E}.Debug - AutoShutdown|Any CPU.ActiveCfg = Debug|Any CPU
+ {C4C8000D-5E45-497C-A218-B95A1567010E}.Debug - AutoShutdown|Any CPU.Build.0 = Debug|Any CPU
+ {C4C8000D-5E45-497C-A218-B95A1567010E}.Debug - AutoUpdate|Any CPU.ActiveCfg = Debug|Any CPU
+ {C4C8000D-5E45-497C-A218-B95A1567010E}.Debug - AutoUpdate|Any CPU.Build.0 = Debug|Any CPU
{C4C8000D-5E45-497C-A218-B95A1567010E}.Debug - Beta|Any CPU.ActiveCfg = Debug - Beta|Any CPU
{C4C8000D-5E45-497C-A218-B95A1567010E}.Debug - Beta|Any CPU.Build.0 = Debug - Beta|Any CPU
{C4C8000D-5E45-497C-A218-B95A1567010E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU