diff --git a/build/Version.props b/build/Version.props index fd0d736472..4f3b87ee93 100644 --- a/build/Version.props +++ b/build/Version.props @@ -14,10 +14,10 @@ 1.3.0 1.2.1 1.0.2 - 6 netstandard2.0 + 6 - - https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/6.0.20/dotnet-hosting-6.0.20-win.exe + https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/6.0.20/dotnet-hosting-6.0.20-win.exe + https://ftp.osuosl.org/pub/mariadb/mariadb-11.0.2/winx64-packages/mariadb-11.0.2-winx64.msi diff --git a/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Bundle.wxs b/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Bundle.wxs index 2213c5ab0a..c316226284 100644 --- a/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Bundle.wxs +++ b/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Bundle.wxs @@ -1,7 +1,7 @@ - + @@ -13,11 +13,11 @@ - - - + + + diff --git a/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Tgstation.Server.Host.Service.Wix.Bundle.wixproj b/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Tgstation.Server.Host.Service.Wix.Bundle.wixproj index f36ff5c638..1858d41c47 100644 --- a/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Tgstation.Server.Host.Service.Wix.Bundle.wixproj +++ b/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Tgstation.Server.Host.Service.Wix.Bundle.wixproj @@ -1,7 +1,7 @@ - ProductVersion=$(TgsCoreVersion);NetMajorVersion=$(TgsNetMajorVersion);DotnetRedistUrl=$(TgsDotnetRedistUrl) + ProductVersion=$(TgsCoreVersion);NetMajorVersion=$(TgsNetMajorVersion);DotnetRedistUrl=$(TgsDotnetRedistUrl);MariaDBRedistUrl=$(TgsMariaDBRedistUrl) Bundle x86 tgstation-server-installer @@ -19,6 +19,10 @@ + + + + diff --git a/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Theme.wxl b/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Theme.wxl new file mode 100644 index 0000000000..69dcacccdd --- /dev/null +++ b/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Theme.wxl @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Theme.xml b/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Theme.xml new file mode 100644 index 0000000000..d6bd65e5c5 --- /dev/null +++ b/build/package/winget/Tgstation.Server.Host.Service.Wix.Bundle/Theme.xml @@ -0,0 +1,95 @@ + + + + Segoe UI + Segoe UI + Segoe UI + Segoe UI + + + + + + + + + + + + + + #(loc.InstallLicenseLinkText) + #(loc.MariaDBCheckbox) + #(loc.InstallAcceptCheckbox) + + + + + + + + + + + + + + + + + + + + + + + + + + + + #(loc.FailureHyperlinkLogText) + + + + + + + diff --git a/build/package/winget/Tgstation.Server.Host.Service.Wix/Package.wxs b/build/package/winget/Tgstation.Server.Host.Service.Wix/Package.wxs index e136a27cd9..b546febbe3 100644 --- a/build/package/winget/Tgstation.Server.Host.Service.Wix/Package.wxs +++ b/build/package/winget/Tgstation.Server.Host.Service.Wix/Package.wxs @@ -8,6 +8,7 @@ + @@ -15,7 +16,8 @@ - + + diff --git a/build/package/winget/prepare_installer_input_artifacts.ps1 b/build/package/winget/prepare_installer_input_artifacts.ps1 index 7a264a180e..ab075c6e3c 100644 --- a/build/package/winget/prepare_installer_input_artifacts.ps1 +++ b/build/package/winget/prepare_installer_input_artifacts.ps1 @@ -13,6 +13,7 @@ try [XML]$versionXML = Get-Content build/Version.props -ErrorAction Stop $redistUrl = $versionXML.Project.PropertyGroup.TgsDotnetRedistUrl + $dbRedistUrl = $versionXML.Project.PropertyGroup.TgsMariaDBRedistUrl mkdir artifacts $previousProgressPreference = $ProgressPreference @@ -20,6 +21,7 @@ try try { Invoke-WebRequest -Uri $redistUrl -OutFile artifacts/hosting-bundle.exe + Invoke-WebRequest -Uri $dbRedistUrl -OutFile artifacts/mariadb.msi } finally { $ProgressPreference = $previousProgressPreference } diff --git a/src/Tgstation.Server.Host/Configuration/InternalConfiguration.cs b/src/Tgstation.Server.Host/Configuration/InternalConfiguration.cs index 0d54f24d73..0ed1730c9c 100644 --- a/src/Tgstation.Server.Host/Configuration/InternalConfiguration.cs +++ b/src/Tgstation.Server.Host/Configuration/InternalConfiguration.cs @@ -24,5 +24,10 @@ /// The base path for the app settings configuration files. /// public string AppSettingsBasePath { get; set; } + + /// + /// Coerce the to select . + /// + public bool MariaDBSetup { get; set; } } } diff --git a/src/Tgstation.Server.Host/Setup/SetupWizard.cs b/src/Tgstation.Server.Host/Setup/SetupWizard.cs index d83aeeb11c..9309b7a891 100644 --- a/src/Tgstation.Server.Host/Setup/SetupWizard.cs +++ b/src/Tgstation.Server.Host/Setup/SetupWizard.cs @@ -362,6 +362,12 @@ namespace Tgstation.Server.Host.Setup { if (firstTime) { + if (internalConfiguration.MariaDBSetup) + { + await console.WriteAsync("It looks like you just installed MariaDB. Selecting it as the database type.", true, cancellationToken); + return DatabaseType.MariaDB; + } + await console.WriteAsync(String.Empty, true, cancellationToken); await console.WriteAsync( "NOTE: If you are serious about hosting public servers, it is HIGHLY reccommended that TGS runs on a database *OTHER THAN* Sqlite.", @@ -413,19 +419,30 @@ namespace Tgstation.Server.Host.Setup { DatabaseType = await PromptDatabaseType(firstTime, cancellationToken), }; - firstTime = false; string serverAddress = null; ushort? serverPort = null; - bool isSqliteDB = databaseConfiguration.DatabaseType == DatabaseType.Sqlite; + var definitelyLocalMariaDB = firstTime && internalConfiguration.MariaDBSetup; + var isSqliteDB = databaseConfiguration.DatabaseType == DatabaseType.Sqlite; IPHostEntry serverAddressEntry = null; if (!isSqliteDB) do { await console.WriteAsync(null, true, cancellationToken); - await console.WriteAsync("Enter the server's address and port [: or ] (blank for local): ", false, cancellationToken); - serverAddress = await console.ReadLineAsync(false, cancellationToken); + if (definitelyLocalMariaDB) + { + await console.WriteAsync("Enter the server's port (blank for 3306): ", false, cancellationToken); + var enteredPort = await console.ReadLineAsync(false, cancellationToken); + if (!String.IsNullOrWhiteSpace(enteredPort) && enteredPort.Trim() != "3306") + serverAddress = $"localhost:{enteredPort}"; + } + else + { + await console.WriteAsync("Enter the server's address and port [: or ] (blank for local): ", false, cancellationToken); + serverAddress = await console.ReadLineAsync(false, cancellationToken); + } + if (String.IsNullOrWhiteSpace(serverAddress)) serverAddress = null; else if (databaseConfiguration.DatabaseType == DatabaseType.SqlServer) @@ -463,7 +480,7 @@ namespace Tgstation.Server.Host.Setup while (true); await console.WriteAsync(null, true, cancellationToken); - await console.WriteAsync($"Enter the database {(isSqliteDB ? "file path" : "name")} (Can be from previous installation. Otherwise, should not exist): ", false, cancellationToken); + await console.WriteAsync($"Enter the database {(isSqliteDB ? "file path" : "name")} ({(definitelyLocalMariaDB ? "leave blank for \"tgs\")" : "Can be from previous installation. Otherwise, should not exist")}): ", false, cancellationToken); string databaseName; bool dbExists = false; @@ -484,6 +501,8 @@ namespace Tgstation.Server.Host.Setup null, cancellationToken); } + else if (definitelyLocalMariaDB) + databaseName = "tgs"; if (String.IsNullOrWhiteSpace(databaseName)) await console.WriteAsync("Invalid database name!", true, cancellationToken); @@ -510,8 +529,17 @@ namespace Tgstation.Server.Host.Setup if (!isSqliteDB) if (!useWinAuth) { - await console.WriteAsync("Enter username: ", false, cancellationToken); - username = await console.ReadLineAsync(false, cancellationToken); + if (definitelyLocalMariaDB) + { + await console.WriteAsync("Using username: root", true, cancellationToken); + username = "root"; + } + else + { + await console.WriteAsync("Enter username: ", false, cancellationToken); + username = await console.ReadLineAsync(false, cancellationToken); + } + await console.WriteAsync("Enter password: ", false, cancellationToken); password = await console.ReadLineAsync(true, cancellationToken); } @@ -625,6 +653,11 @@ namespace Tgstation.Server.Host.Setup await console.WriteAsync(e.Message, true, cancellationToken); await console.WriteAsync(null, true, cancellationToken); await console.WriteAsync("Retrying database configuration...", true, cancellationToken); + + if (definitelyLocalMariaDB) + await console.WriteAsync("No longer assuming MariaDB is the target.", true, cancellationToken); + + firstTime = false; } } while (true);