From e16fcda94bf92c74231e3848ca628f8c5ed91fef Mon Sep 17 00:00:00 2001 From: lahm86 <33758420+lahm86@users.noreply.github.com> Date: Mon, 24 Mar 2025 20:49:33 +0000 Subject: [PATCH] tools/installer: create common installer library This creates a generic common installer WPF library for both games. --- tools/installer/.gitignore | 16 ++ tools/installer/TRX_InstallerLib.sln | 25 ++ .../Controls/FinishStepControl.xaml | 32 +++ .../Controls/FinishStepControl.xaml.cs | 11 + .../Controls/InstallSettingsStepControl.xaml | 146 +++++++++++ .../InstallSettingsStepControl.xaml.cs | 11 + .../Controls/InstallSourceControl.xaml | 68 +++++ .../Controls/InstallSourceControl.xaml.cs | 11 + .../Controls/InstallStepControl.xaml | 44 ++++ .../Controls/InstallStepControl.xaml.cs | 41 +++ .../Controls/SourceStepControl.xaml | 68 +++++ .../Controls/SourceStepControl.xaml.cs | 11 + .../Controls/TRXInstallWindow.xaml | 107 ++++++++ .../Controls/TRXInstallWindow.xaml.cs | 14 ++ .../Installers/BaseInstallSource.cs | 38 +++ .../Installers/IInstallSource.cs | 29 +++ .../Installers/InstallExecutor.cs | 103 ++++++++ .../Installers/InstallUtils.cs | 207 +++++++++++++++ .../Models/BaseLanguageViewModel.cs | 11 + .../Models/ExpansionPackType.cs | 7 + .../TRX_InstallerLib/Models/FinishSettings.cs | 35 +++ .../TRX_InstallerLib/Models/FinishStep.cs | 16 ++ .../TRX_InstallerLib/Models/IStep.cs | 10 + .../Models/InstallSettings.cs | 155 ++++++++++++ .../Models/InstallSettingsStep.cs | 37 +++ .../Models/InstallSourceViewModel.cs | 66 +++++ .../TRX_InstallerLib/Models/InstallStep.cs | 119 +++++++++ .../TRX_InstallerLib/Models/Language.cs | 46 ++++ .../TRX_InstallerLib/Models/Logger.cs | 23 ++ .../Models/MainWindowViewModel.cs | 152 +++++++++++ .../TRX_InstallerLib/Models/SourceStep.cs | 60 +++++ .../TRX_InstallerLib/Models/TRXConstants.cs | 19 ++ .../TRX_InstallerLib/Resources/Lang/en.json | 5 + .../TRX_InstallerLib/Resources/const.json | 4 + .../TRX_InstallerLib/Resources/styles.xaml | 32 +++ .../TRX_InstallerLib/TRX_InstallerLib.csproj | 24 ++ .../TRX_InstallerLib/Utils/AssemblyUtils.cs | 35 +++ .../Utils/BaseNotifyPropertyChanged.cs | 14 ++ .../Utils/BinaryReaderExtensions.cs | 30 +++ .../Utils/BoolToVisibilityConverter.cs | 28 +++ .../Utils/ComparisonConverter.cs | 17 ++ .../Utils/ConditionalMarkupConverter.cs | 26 ++ .../TRX_InstallerLib/Utils/CueFile.cs | 89 +++++++ .../TRX_InstallerLib/Utils/CueTrack.cs | 230 +++++++++++++++++ .../TRX_InstallerLib/Utils/FileBrowser.cs | 19 ++ .../Utils/HttpProgressClient.cs | 50 ++++ .../TRX_InstallerLib/Utils/InstallProgress.cs | 9 + .../TRX_InstallerLib/Utils/JsonUtils.cs | 31 +++ .../TRX_InstallerLib/Utils/ProcessUtils.cs | 20 ++ .../TRX_InstallerLib/Utils/RelayCommand.cs | 101 ++++++++ .../TRX_InstallerLib/Utils/ShortcutUtils.cs | 235 ++++++++++++++++++ 51 files changed, 2737 insertions(+) create mode 100644 tools/installer/.gitignore create mode 100644 tools/installer/TRX_InstallerLib.sln create mode 100644 tools/installer/TRX_InstallerLib/Controls/FinishStepControl.xaml create mode 100644 tools/installer/TRX_InstallerLib/Controls/FinishStepControl.xaml.cs create mode 100644 tools/installer/TRX_InstallerLib/Controls/InstallSettingsStepControl.xaml create mode 100644 tools/installer/TRX_InstallerLib/Controls/InstallSettingsStepControl.xaml.cs create mode 100644 tools/installer/TRX_InstallerLib/Controls/InstallSourceControl.xaml create mode 100644 tools/installer/TRX_InstallerLib/Controls/InstallSourceControl.xaml.cs create mode 100644 tools/installer/TRX_InstallerLib/Controls/InstallStepControl.xaml create mode 100644 tools/installer/TRX_InstallerLib/Controls/InstallStepControl.xaml.cs create mode 100644 tools/installer/TRX_InstallerLib/Controls/SourceStepControl.xaml create mode 100644 tools/installer/TRX_InstallerLib/Controls/SourceStepControl.xaml.cs create mode 100644 tools/installer/TRX_InstallerLib/Controls/TRXInstallWindow.xaml create mode 100644 tools/installer/TRX_InstallerLib/Controls/TRXInstallWindow.xaml.cs create mode 100644 tools/installer/TRX_InstallerLib/Installers/BaseInstallSource.cs create mode 100644 tools/installer/TRX_InstallerLib/Installers/IInstallSource.cs create mode 100644 tools/installer/TRX_InstallerLib/Installers/InstallExecutor.cs create mode 100644 tools/installer/TRX_InstallerLib/Installers/InstallUtils.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/BaseLanguageViewModel.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/ExpansionPackType.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/FinishSettings.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/FinishStep.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/IStep.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/InstallSettings.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/InstallSettingsStep.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/InstallSourceViewModel.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/InstallStep.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/Language.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/Logger.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/MainWindowViewModel.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/SourceStep.cs create mode 100644 tools/installer/TRX_InstallerLib/Models/TRXConstants.cs create mode 100644 tools/installer/TRX_InstallerLib/Resources/Lang/en.json create mode 100644 tools/installer/TRX_InstallerLib/Resources/const.json create mode 100644 tools/installer/TRX_InstallerLib/Resources/styles.xaml create mode 100644 tools/installer/TRX_InstallerLib/TRX_InstallerLib.csproj create mode 100644 tools/installer/TRX_InstallerLib/Utils/AssemblyUtils.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/BaseNotifyPropertyChanged.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/BinaryReaderExtensions.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/BoolToVisibilityConverter.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/ComparisonConverter.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/ConditionalMarkupConverter.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/CueFile.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/CueTrack.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/FileBrowser.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/HttpProgressClient.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/InstallProgress.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/JsonUtils.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/ProcessUtils.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/RelayCommand.cs create mode 100644 tools/installer/TRX_InstallerLib/Utils/ShortcutUtils.cs diff --git a/tools/installer/.gitignore b/tools/installer/.gitignore new file mode 100644 index 000000000..641a9bade --- /dev/null +++ b/tools/installer/.gitignore @@ -0,0 +1,16 @@ +*.suo +*.o +*.obj +*.pdb +*.lib +*.exp +[Dd]ebug/ +[Rr]elease/ +[Oo]bj/ +*.user +*.ipch +.vs/ +*.vcxproj +*.filters +*.pubxml +[Oo]ut/ diff --git a/tools/installer/TRX_InstallerLib.sln b/tools/installer/TRX_InstallerLib.sln new file mode 100644 index 000000000..087f2e568 --- /dev/null +++ b/tools/installer/TRX_InstallerLib.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.11.35219.272 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TRX_InstallerLib", "TRX_InstallerLib\TRX_InstallerLib.csproj", "{27F08E8C-2910-4682-B8BC-96ED4C1ECE54}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {27F08E8C-2910-4682-B8BC-96ED4C1ECE54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {27F08E8C-2910-4682-B8BC-96ED4C1ECE54}.Debug|Any CPU.Build.0 = Debug|Any CPU + {27F08E8C-2910-4682-B8BC-96ED4C1ECE54}.Release|Any CPU.ActiveCfg = Release|Any CPU + {27F08E8C-2910-4682-B8BC-96ED4C1ECE54}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {BA21B1D5-1CC7-4ED8-8C79-A1A5B0ACC840} + EndGlobalSection +EndGlobal diff --git a/tools/installer/TRX_InstallerLib/Controls/FinishStepControl.xaml b/tools/installer/TRX_InstallerLib/Controls/FinishStepControl.xaml new file mode 100644 index 000000000..8c04ea48b --- /dev/null +++ b/tools/installer/TRX_InstallerLib/Controls/FinishStepControl.xaml @@ -0,0 +1,32 @@ + + + + + + + + + Step 4: Done + + + + Installation complete. To configure more advanced features, you can edit the JSON files in the cfg/ directory with a text editor. + + + + Happy raiding :) + + + + + + diff --git a/tools/installer/TRX_InstallerLib/Controls/FinishStepControl.xaml.cs b/tools/installer/TRX_InstallerLib/Controls/FinishStepControl.xaml.cs new file mode 100644 index 000000000..02be4e3c8 --- /dev/null +++ b/tools/installer/TRX_InstallerLib/Controls/FinishStepControl.xaml.cs @@ -0,0 +1,11 @@ +using WC = System.Windows.Controls; + +namespace TRX_InstallerLib.Controls; + +public partial class FinishStepControl : WC.UserControl +{ + public FinishStepControl() + { + InitializeComponent(); + } +} diff --git a/tools/installer/TRX_InstallerLib/Controls/InstallSettingsStepControl.xaml b/tools/installer/TRX_InstallerLib/Controls/InstallSettingsStepControl.xaml new file mode 100644 index 000000000..3336554fe --- /dev/null +++ b/tools/installer/TRX_InstallerLib/Controls/InstallSettingsStepControl.xaml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + Step 2: Installation options + + + + + + + + + + + + + + + + + + + + + + + + + + Download music tracks + + + + This option lets you download compatible music files for the game + automatically (60 MB). The legality of these files is disputable; + the most legal way to import the music to PC is to obtain them from + your own source - TR2 supports FLAC, OOG, MP3 and WAV files. + + + + + + + + + + + Download Unfinished Business expansion pack + + + + The Unfinished Business expansion pack was made freeware. However, the Steam and GOG versions do not ship it. This option lets you download the expansion files automatically (6 MB). + + + + + + + + + + Import saves + + + Imports existing savegame files. Only TombATI and TR1X savegame format is supported at this time. + + + + + + Create desktop shortcut + + + + + + + + + + +