diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9d7b217..c3168b9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,7 +30,6 @@ jobs: dotnet restore Dashboard/Dashboard.csproj dotnet restore Lite/PerformanceMonitorLite.csproj dotnet restore Installer/PerformanceMonitorInstaller.csproj - dotnet restore InstallerGui/InstallerGui.csproj - name: Get version id: version @@ -56,9 +55,6 @@ jobs: - name: Publish CLI Installer run: dotnet publish Installer/PerformanceMonitorInstaller.csproj -c Release - - name: Publish GUI Installer - run: dotnet publish InstallerGui/InstallerGui.csproj -c Release - - name: Package release artifacts if: github.event_name == 'release' shell: pwsh @@ -72,14 +68,13 @@ jobs: # Lite ZIP Compress-Archive -Path 'publish/Lite/*' -DestinationPath "releases/PerformanceMonitorLite-$version.zip" -Force - # Installer ZIP (CLI + GUI + SQL scripts) + # Installer ZIP (CLI + SQL scripts) $instDir = 'publish/Installer' New-Item -ItemType Directory -Force -Path $instDir New-Item -ItemType Directory -Force -Path "$instDir/install" New-Item -ItemType Directory -Force -Path "$instDir/upgrades" Copy-Item 'Installer/bin/Release/net8.0/win-x64/publish/PerformanceMonitorInstaller.exe' $instDir - Copy-Item 'InstallerGui/bin/Release/net8.0-windows/win-x64/publish/PerformanceMonitorInstallerGui.exe' $instDir -ErrorAction SilentlyContinue Copy-Item 'install/*.sql' "$instDir/install/" if (Test-Path 'upgrades') { Copy-Item 'upgrades/*' "$instDir/upgrades/" -Recurse -ErrorAction SilentlyContinue } if (Test-Path 'README.md') { Copy-Item 'README.md' $instDir } diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a92afdd..cc84458 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,6 @@ jobs: dotnet restore Dashboard/Dashboard.csproj dotnet restore Lite/PerformanceMonitorLite.csproj dotnet restore Installer/PerformanceMonitorInstaller.csproj - dotnet restore InstallerGui/InstallerGui.csproj dotnet restore Lite.Tests/Lite.Tests.csproj - name: Build all projects @@ -31,7 +30,6 @@ jobs: dotnet build Dashboard/Dashboard.csproj -c Release --no-restore dotnet build Lite/PerformanceMonitorLite.csproj -c Release --no-restore dotnet build Installer/PerformanceMonitorInstaller.csproj -c Release --no-restore - dotnet build InstallerGui/InstallerGui.csproj -c Release --no-restore dotnet build Lite.Tests/Lite.Tests.csproj -c Release --no-restore - name: Run tests diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index dc1c917..9ee75bc 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -62,7 +62,6 @@ jobs: dotnet restore Dashboard/Dashboard.csproj dotnet restore Lite/PerformanceMonitorLite.csproj dotnet restore Installer/PerformanceMonitorInstaller.csproj - dotnet restore InstallerGui/InstallerGui.csproj dotnet restore Lite.Tests/Lite.Tests.csproj - name: Run tests @@ -77,9 +76,6 @@ jobs: - name: Publish CLI Installer run: dotnet publish Installer/PerformanceMonitorInstaller.csproj -c Release - - name: Publish GUI Installer - run: dotnet publish InstallerGui/InstallerGui.csproj -c Release - - name: Package artifacts shell: pwsh run: | @@ -95,7 +91,6 @@ jobs: New-Item -ItemType Directory -Force -Path "$instDir/upgrades" Copy-Item 'Installer/bin/Release/net8.0/win-x64/publish/PerformanceMonitorInstaller.exe' $instDir - Copy-Item 'InstallerGui/bin/Release/net8.0-windows/win-x64/publish/PerformanceMonitorInstallerGui.exe' $instDir -ErrorAction SilentlyContinue Copy-Item 'install/*.sql' "$instDir/install/" if (Test-Path 'install/templates') { Copy-Item 'install/templates' "$instDir/install/templates" -Recurse -ErrorAction SilentlyContinue } if (Test-Path 'upgrades') { Copy-Item 'upgrades/*' "$instDir/upgrades/" -Recurse -ErrorAction SilentlyContinue } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b2c7a94..75a18e1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,8 +24,8 @@ This repository contains two editions of the SQL Server Performance Monitor: |--------|-------------| | `install/` | 50+ T-SQL scripts that create the PerformanceMonitor database | | `Installer/` | CLI installer for the Full Edition database and collectors | -| `InstallerGui/` | GUI installer (same functionality as the CLI installer) | -| `Dashboard/` | WPF dashboard that connects to the installed PerformanceMonitor database | +| `Installer.Core/` | Shared installation library (used by CLI installer and Dashboard) | +| `Dashboard/` | WPF dashboard — connects to PerformanceMonitor database, can also install/upgrade via Add Server | **Lite Edition** — standalone desktop app, nothing installed on the target server: @@ -61,8 +61,6 @@ dotnet build Lite/PerformanceMonitorLite.csproj # Build CLI Installer (self-contained) dotnet publish Installer/PerformanceMonitorInstaller.csproj -c Release -# Build GUI Installer -dotnet publish InstallerGui/InstallerGui.csproj -c Release -r win-x64 --self-contained ``` ### Running the Applications diff --git a/PerformanceMonitor.sln b/PerformanceMonitor.sln index f253ff9..8140d76 100644 --- a/PerformanceMonitor.sln +++ b/PerformanceMonitor.sln @@ -7,8 +7,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dashboard", "Dashboard\Dash EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PerformanceMonitorLite", "Lite\PerformanceMonitorLite.csproj", "{48718A1C-3679-AB80-1D5F-A9C20CC7EF9A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InstallerGui", "InstallerGui\InstallerGui.csproj", "{B9F4D012-5FA6-6773-E3A5-63482B482B9A}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lite.Tests", "Lite.Tests\Lite.Tests.csproj", "{C4E76DA8-A115-7291-3AD0-12C648E24FF2}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PerformanceMonitorInstaller", "Installer\PerformanceMonitorInstaller.csproj", "{0F1EFD0D-61B6-D475-3A2E-ED7FD83BCE6E}" @@ -31,10 +29,6 @@ Global {48718A1C-3679-AB80-1D5F-A9C20CC7EF9A}.Debug|Any CPU.Build.0 = Debug|Any CPU {48718A1C-3679-AB80-1D5F-A9C20CC7EF9A}.Release|Any CPU.ActiveCfg = Release|Any CPU {48718A1C-3679-AB80-1D5F-A9C20CC7EF9A}.Release|Any CPU.Build.0 = Release|Any CPU - {B9F4D012-5FA6-6773-E3A5-63482B482B9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B9F4D012-5FA6-6773-E3A5-63482B482B9A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B9F4D012-5FA6-6773-E3A5-63482B482B9A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B9F4D012-5FA6-6773-E3A5-63482B482B9A}.Release|Any CPU.Build.0 = Release|Any CPU {C4E76DA8-A115-7291-3AD0-12C648E24FF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C4E76DA8-A115-7291-3AD0-12C648E24FF2}.Debug|Any CPU.Build.0 = Debug|Any CPU {C4E76DA8-A115-7291-3AD0-12C648E24FF2}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/README.md b/README.md index 32674aa..b9d40d8 100644 --- a/README.md +++ b/README.md @@ -173,7 +173,7 @@ PerformanceMonitorInstaller.exe YourServerName --uninstall PerformanceMonitorInstaller.exe YourServerName sa YourPassword --uninstall ``` -The installer automatically tests the connection, checks the SQL Server version (2016+ required), executes SQL scripts, downloads community dependencies, creates SQL Agent jobs, and runs initial data collection. A GUI installer (`InstallerGui/`) is also available with the same functionality. +The installer automatically tests the connection, checks the SQL Server version (2016+ required), executes SQL scripts, downloads community dependencies, creates SQL Agent jobs, and runs initial data collection. You can also install directly from the Dashboard's Add Server dialog. ### CLI Installer Options @@ -599,8 +599,8 @@ Monitor/ ├── install/ # 58 SQL installation scripts ├── upgrades/ # Version-specific upgrade scripts ├── Installer/ # CLI installer for Full Edition database (C#) -├── InstallerGui/ # GUI installer for Full Edition database (WPF) -├── Dashboard/ # Full Edition dashboard application (WPF) +├── Installer.Core/ # Shared installation library (CLI + Dashboard) +├── Dashboard/ # Full Edition dashboard application (WPF, includes installer) │ │ Lite Edition (standalone desktop app, nothing installed on server) ├── Lite/ # Lite Edition desktop application (WPF) @@ -624,9 +624,6 @@ dotnet build Lite/PerformanceMonitorLite.csproj # CLI Installer (self-contained) dotnet publish Installer/PerformanceMonitorInstaller.csproj -c Release - -# GUI Installer -dotnet publish InstallerGui/InstallerGui.csproj -c Release -r win-x64 --self-contained ``` --- diff --git a/build-dashboard.cmd b/build-dashboard.cmd index 942f132..c22b38a 100644 --- a/build-dashboard.cmd +++ b/build-dashboard.cmd @@ -36,7 +36,7 @@ echo. :: ---------------------------------------- :: CLI Installer :: ---------------------------------------- -echo [2/3] Publishing CLI Installer... +echo [2/2] Publishing CLI Installer... dotnet publish Installer\PerformanceMonitorInstaller.csproj -c Release if %ERRORLEVEL% neq 0 ( @@ -46,19 +46,6 @@ if %ERRORLEVEL% neq 0 ( ) echo. -:: ---------------------------------------- -:: GUI Installer -:: ---------------------------------------- -echo [3/3] Publishing GUI Installer... -dotnet publish InstallerGui\InstallerGui.csproj -c Release -r win-x64 --self-contained - -if %ERRORLEVEL% neq 0 ( - echo. - echo ERROR: GUI Installer build failed! - exit /b 1 -) -echo. - :: ---------------------------------------- :: Package Installer + SQL into ZIP :: ---------------------------------------- @@ -70,7 +57,6 @@ mkdir "%INST_DIR%\install" mkdir "%INST_DIR%\upgrades" copy "Installer\bin\Release\net8.0\win-x64\publish\PerformanceMonitorInstaller.exe" "%INST_DIR%\" >nul -copy "InstallerGui\bin\Release\net8.0\win-x64\publish\InstallerGui.exe" "%INST_DIR%\" >nul 2>&1 copy "install\*.sql" "%INST_DIR%\install\" >nul xcopy "upgrades" "%INST_DIR%\upgrades\" /E /I /Q >nul 2>&1 if exist README.md copy README.md "%INST_DIR%\" >nul diff --git a/install/README.md b/install/README.md index 993ee72..780c8d0 100644 --- a/install/README.md +++ b/install/README.md @@ -1,6 +1,6 @@ # Install Scripts -SQL scripts that create and configure the PerformanceMonitor database for the Full Edition. The CLI installer (`Installer/`) and GUI installer (`InstallerGui/`) execute these scripts in order against the target SQL Server instance. +SQL scripts that create and configure the PerformanceMonitor database for the Full Edition. The CLI installer (`Installer/`) and Dashboard's Add Server dialog execute these scripts in order against the target SQL Server instance. Scripts create the database, collection tables, configuration tables, stored procedures for each collector, SQL Agent jobs, reporting views, and data retention logic. Each script is idempotent — tables use `IF NOT EXISTS` guards and procedures use `CREATE OR ALTER`, so re-running the installer on an existing installation is safe and preserves collected data.