From 94823dbc53a839ef282609746efaa51938af9afd Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Wed, 08 Jul 2026 16:04:58 +0000
Subject: [PATCH] Add CI install-test for the Windows MSI + document MSI install/upgrade/uninstall (#664)
---
.github/workflows/build.yml | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index ec8d21f..8d77743 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -562,3 +562,55 @@
*.jmeter.out
if-no-files-found: warn
retention-days: 90
+
+ test-msi:
+ needs: build-maven
+ runs-on: 'windows-latest'
+ steps:
+ - name: Download artifacts
+ uses: actions/download-artifact@v8
+ with:
+ name: windows-latest-11
+ - name: Set up Java
+ uses: actions/setup-java@v5
+ with:
+ java-version: '25'
+ distribution: 'zulu'
+ - name: Install MSI (silent)
+ shell: pwsh
+ run: |
+ $msi = (Get-ChildItem -Recurse -Filter *.msi -Path opendj-packages/opendj-msi | Select-Object -First 1).FullName
+ if (-not $msi) { throw "MSI not found in the windows-latest-11 artifact" }
+ Write-Host "MSI: $msi"
+ # No OPENDJ property: use the default install directory (a path with spaces),
+ # which the server scripts must handle.
+ $p = Start-Process msiexec -Wait -PassThru -ArgumentList "/i `"$msi`" /quiet /qn /norestart /l*v install.log"
+ if ($p.ExitCode -ne 0) { Get-Content install.log -Tail 80; throw "msiexec /i failed: $($p.ExitCode)" }
+ $root = @("C:\Program Files (x86)\OpenDJ","C:\Program Files\OpenDJ") | Where-Object { Test-Path "$_\setup.bat" } | Select-Object -First 1
+ if (-not $root) { Get-Content install.log -Tail 80; throw "OpenDJ install root with setup.bat not found" }
+ Write-Host "Installed to $root"
+ "OPENDJ_ROOT=$root" | Out-File -FilePath $env:GITHUB_ENV -Append
+ - name: Setup and start/stop the Windows service
+ shell: pwsh
+ run: |
+ $root = $env:OPENDJ_ROOT
+ $env:OPENDJ_JAVA_ARGS = "-server -Xmx512m"
+ & "$root\setup.bat" -h localhost -p 1389 --ldapsPort 1636 --adminConnectorPort 4444 --enableStartTLS --generateSelfSignedCertificate --rootUserDN "cn=Directory Manager" --rootUserPassword password --baseDN dc=example,dc=com --addBaseEntry --cli --acceptLicense --no-prompt --doNotStart
+ if ($LASTEXITCODE -ne 0) { throw "setup.bat failed: $LASTEXITCODE" }
+ & "$root\bat\windows-service.bat" --enableService
+ if ($LASTEXITCODE -ne 0) { throw "windows-service --enableService failed: $LASTEXITCODE" }
+ net start "OpenDJ Server"
+ if ($LASTEXITCODE -ne 0) { throw "net start failed: $LASTEXITCODE" }
+ for ($i=0; $i -lt 12; $i++) { try { $c = New-Object System.Net.Sockets.TcpClient('localhost', 1636); $c.Close(); break } catch { Start-Sleep -Seconds 5 } }
+ & "$root\bat\ldapsearch.bat" --hostname localhost --port 1636 --bindDN "cn=Directory Manager" --bindPassword password --useSsl --trustAll --baseDN "dc=example,dc=com" --searchScope base "(objectClass=*)" 1.1
+ if ($LASTEXITCODE -ne 0) { throw "ldapsearch failed: $LASTEXITCODE" }
+ net stop "OpenDJ Server"
+ if ($LASTEXITCODE -ne 0) { throw "net stop failed: $LASTEXITCODE" }
+ & "$root\bat\windows-service.bat" --disableService
+ - name: Uninstall MSI
+ shell: pwsh
+ run: |
+ $msi = (Get-ChildItem -Recurse -Filter *.msi -Path opendj-packages/opendj-msi | Select-Object -First 1).FullName
+ $p = Start-Process msiexec -Wait -PassThru -ArgumentList "/x `"$msi`" /quiet /qn /norestart /l*v uninstall.log"
+ if ($p.ExitCode -ne 0) { Get-Content uninstall.log -Tail 80; throw "msiexec /x failed: $($p.ExitCode)" }
+ Write-Host "Uninstalled OK"
--
Gitblit v1.10.0