From ddb2e4dfc87bd043862f0360e9491a20c6f9e10b Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 30 Nov 2021 21:38:24 +0000 Subject: [PATCH] --- Program.cs | 102 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 89 insertions(+), 13 deletions(-) diff --git a/Program.cs b/Program.cs index 491b94b..df0671b 100644 --- a/Program.cs +++ b/Program.cs @@ -9,8 +9,9 @@ Console.WriteLine($"AyaNova server launcher {AyaNovaVersion.VersionString}"); //Locate the ayanova executable folder as the basis point for all other paths later var AyaNovaProgramFolder = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), "..")); +#if(DEBUG) AyaNovaProgramFolder = @"c:\Program Files\ayanova\"; - +#endif //read in the config.json file to get it's current values var ConfigFile = Path.Combine(AyaNovaProgramFolder, "config.json"); if (!File.Exists(ConfigFile)) @@ -44,29 +45,33 @@ catch (Exception ex) return; } +Console.WriteLine($"DataPath resolved to: {DataPath}"); +Console.WriteLine($"AyaNovaProgramFolder resolved to: {AyaNovaProgramFolder}"); + //================== LAUNCH POSTGRES SERVER ================== //https://notepad.onghu.com/2021/portable-postgresql-on-windows-without-installation/ - - - ProcessStartInfo PGStartInfo = new ProcessStartInfo(); -//PGStartInfo.EnvironmentVariables["PGDATA"] = Path.Combine(DataPath, "database"); -////PGStartInfo.EnvironmentVariables["PGDATABASE"] = "AyaNova"; -//PGStartInfo.EnvironmentVariables["PGUSER"] = "postgres"; -//PGStartInfo.EnvironmentVariables["PGPORT"] = "5432"; -//PGStartInfo.EnvironmentVariables["PGLOCALEDIR"] = Path.Combine(AyaNovaProgramFolder, "local-postgres", "share", "locale"); -//PGStartInfo.EnvironmentVariables["PGLOGS "] = Path.Combine(DataPath, "logs"); +PGStartInfo.EnvironmentVariables["PGDATA"] = Path.Combine(DataPath, "database"); +//PGStartInfo.EnvironmentVariables["PGDATABASE"] = "AyaNova"; +PGStartInfo.EnvironmentVariables["PGUSER"] = "postgres"; +PGStartInfo.EnvironmentVariables["PGPORT"] = "5432"; +PGStartInfo.EnvironmentVariables["PGLOCALEDIR"] = Path.Combine(AyaNovaProgramFolder, "local-postgres", "share", "locale"); +PGStartInfo.EnvironmentVariables["PGLOGS "] = Path.Combine(DataPath, "logs"); //ARGUMENTS DOC: https://www.postgresql.org/docs/11/app-postgres.html -PGStartInfo.Arguments = $"-D {Path.Combine(DataPath, "database")} -o \"-p 5432\" -l {Path.Combine(DataPath, "logs","postgres.log")} start"; +//PGStartInfo.Arguments = $"-D {Path.Combine(DataPath, "database")} -o \"-p 5432\" -l {Path.Combine(DataPath, "logs","postgres.log")} start"; +PGStartInfo.Arguments = "start"; PGStartInfo.FileName = "pg_ctl.exe"; //PGStartInfo.WorkingDirectory = Path.Combine(DataPath, "database"); PGStartInfo.WorkingDirectory = Path.Combine(AyaNovaProgramFolder, "local-postgres", "bin"); -PGStartInfo.UseShellExecute = true; +PGStartInfo.UseShellExecute = false; + +//Console.WriteLine($"PGStartInfo environment: {string.Join(",",PGStartInfo.EnvironmentVariables.Values.GetEnumerator())}"); + var PGProcess = Process.Start(PGStartInfo); /*"-D C:\ProgramData\ayanova\database -p 5432 -l C:\ProgramData\ayanova\logs start" @@ -92,7 +97,7 @@ set AYANOVA_DATA_PATH=%~dp0data ProcessStartInfo ServerStartInfo = new ProcessStartInfo(); ServerStartInfo.FileName = "AyaNova.exe"; ServerStartInfo.WorkingDirectory = AyaNovaProgramFolder; -ServerStartInfo.UseShellExecute = true; +ServerStartInfo.UseShellExecute = false; var ServerProcess = Process.Start(ServerStartInfo); @@ -110,7 +115,78 @@ if (PGProcess != null) } +// ####################### OLD SHIT ################################ +//This works but launches three windows + +/* + +//================== LAUNCH POSTGRES SERVER ================== +//https://notepad.onghu.com/2021/portable-postgresql-on-windows-without-installation/ + +ProcessStartInfo PGStartInfo = new ProcessStartInfo(); +//PGStartInfo.EnvironmentVariables["PGDATA"] = Path.Combine(DataPath, "database"); +////PGStartInfo.EnvironmentVariables["PGDATABASE"] = "AyaNova"; +//PGStartInfo.EnvironmentVariables["PGUSER"] = "postgres"; +//PGStartInfo.EnvironmentVariables["PGPORT"] = "5432"; +//PGStartInfo.EnvironmentVariables["PGLOCALEDIR"] = Path.Combine(AyaNovaProgramFolder, "local-postgres", "share", "locale"); +//PGStartInfo.EnvironmentVariables["PGLOGS "] = Path.Combine(DataPath, "logs"); + +//ARGUMENTS DOC: https://www.postgresql.org/docs/11/app-postgres.html +PGStartInfo.Arguments = $"-D {Path.Combine(DataPath, "database")} -o \"-p 5432\" -l {Path.Combine(DataPath, "logs","postgres.log")} start"; +PGStartInfo.FileName = "pg_ctl.exe"; +//PGStartInfo.WorkingDirectory = Path.Combine(DataPath, "database"); +PGStartInfo.WorkingDirectory = Path.Combine(AyaNovaProgramFolder, "local-postgres", "bin"); + +PGStartInfo.UseShellExecute = true; +var PGProcess = Process.Start(PGStartInfo); + +// "-D C:\ProgramData\ayanova\database -p 5432 -l C:\ProgramData\ayanova\logs start" +// old batch file settings required for postgres +// SET PATH="%~dp0postgres\bin";%PATH% +// SET PGDATA=%~dp0data\database +// SET PGDATABASE=AyaNova +// SET PGUSER=postgres +// SET PGPORT=5432 +// SET PGLOCALEDIR=%~dp0postgres\share\locale +// set AYANOVA_USE_URLS=http://*:7575; +// set AYANOVA_DB_CONNECTION=Server=localhost;Username=postgres;Password=mypasswordforpostgres;Database=AyaNova; +// set AYANOVA_DEFAULT_TRANSLATION=en +// set AYANOVA_BACKUP_PG_DUMP_PATH=%~dp0postgres\bin\ +// set AYANOVA_DATA_PATH=%~dp0data +// "%~dp0\postgres\bin\pg_ctl" -D "%~dp0/data/database" -l %~dp0data\logs\postgreslog start + + + +//================== LAUNCH AYANOVA SERVER ================== +//Go UP one folder from the current launcher folder which should *always* be contained within the AyaNova.exe containing folder if it was installed + +ProcessStartInfo ServerStartInfo = new ProcessStartInfo(); +ServerStartInfo.FileName = "AyaNova.exe"; +ServerStartInfo.WorkingDirectory = AyaNovaProgramFolder; +ServerStartInfo.UseShellExecute = true; +var ServerProcess = Process.Start(ServerStartInfo); + + + +//================== WAIT FOR SHUTDOWN ================ +Console.WriteLine("Waiting for server to exit; do not close this window"); +if (ServerProcess != null) + ServerProcess.WaitForExit(); + +//shutdown postgres +if (PGProcess != null) +{ + PGProcess.CloseMainWindow(); + PGProcess.WaitForExit(); +} +*/ + + + + +//############################################################################ +//this was original ctr.-c shutdown from one window concept // Console.WriteLine("#############################################");