public static bool Run()
{
// Load the program config
Settings Config = Settings.Default;
bool PromptDbSetup = false;
// If this is the first time running a new update, we need to update the config file
if (!Config.SettingsUpdated)
{
Config.Upgrade();
Config.SettingsUpdated = true;
Config.Save();
}
// If this is the first run, Get client and server install paths
if (String.IsNullOrWhiteSpace(Config.ServerPath) || !File.Exists(Path.Combine(Config.ServerPath, "bf2_w32ded.exe")))
{
PromptDbSetup = true;
if (!ShowInstallForm())
return false;
}
// Create the "My Documents/BF2Statistics" folder
try
{
// Make sure documents folder exists
if (!Directory.Exists(Paths.DocumentsFolder))
Directory.CreateDirectory(Paths.DocumentsFolder);
// Create the database backups folder
string bFolder = Path.Combine(Paths.DocumentsFolder, "Database Backups");
if (!Directory.Exists(bFolder))
{
// In 1.x.x versions, this folder was called Backups rather then Database Backups
string OldB = Path.Combine(Paths.DocumentsFolder, "Backups");
if(Directory.Exists(OldB))
Directory.Move(OldB, bFolder);
else
Directory.CreateDirectory(bFolder);
}
}
catch (Exception E)
{
// Alert the user that there was an error
MessageBox.Show("Bf2Statistics encountered an error trying to create the required \"My Documents/BF2Statistics\" folder!"
+ Environment.NewLine.Repeat(1) + E.Message,
"Setup Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error
);
return false;
}
// Load server go.. If we fail to load a valid server, we will come back to here
LoadServer:
{
// Load the BF2 Server
try
{
BF2Server.SetServerPath(Config.ServerPath);
}
catch (Exception E)
{
MessageBox.Show(E.Message, "Battlefield 2 Server Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
// Re-prompt
if (!ShowInstallForm())
return false;
goto LoadServer;
}
}
// Fresh install? Show database config prompt
if (PromptDbSetup)
{
string message = "In order to use the Private Stats feature of this program, we need to setup a database. "
+ "You may choose to do this later by clicking \"Cancel\". Would you like to setup the database now?";
DialogResult R = MessageBox.Show(message, "Stats Database Setup", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
// Just return if the user doesnt want to set up the databases
if (R == DialogResult.No)
return true;
// Show Stats DB
ShowDatabaseSetupForm(DatabaseMode.Stats, null);
message = "In order to use the Gamespy Login Emulation feature of this program, we need to setup a database. "
+ "You may choose to do this later by clicking \"Cancel\". Would you like to setup the database now?";
R = MessageBox.Show(message, "Gamespy Database Setup", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
// Just return if the user doesnt want to set up the databases
if (R == DialogResult.No)
return true;
ShowDatabaseSetupForm(DatabaseMode.Gamespy, null);
}
return true;
}