Author: Shivam Mathur (shivammathur)
Date: 2026-10-26T13:44:58+05:30

Commit: 
https://github.com/php/web-php/commit/5d5e2505090fb20ee33ff5a1bf9a062677c7c461
Raw diff: 
https://github.com/php/web-php/commit/5d5e2505090fb20ee33ff5a1bf9a062677c7c461.diff

Support Windows build numbers in the installer

Changed paths:
  M  public/include/download-instructions/windows.ps1


Diff:

diff --git a/public/include/download-instructions/windows.ps1 
b/public/include/download-instructions/windows.ps1
index ad97675f87..c125c9c058 100644
--- a/public/include/download-instructions/windows.ps1
+++ b/public/include/download-instructions/windows.ps1
@@ -29,7 +29,7 @@ Directory for Scope=Custom. Versions are installed under this 
directory and a "c
 [CmdletBinding()]
 param(
     [Parameter(Mandatory = $true, Position=0)]
-    [ValidatePattern('^\d+(\.\d+)?(\.\d+)?((alpha|beta|RC)\d*)?$')]
+    [ValidatePattern('^\d+(\.\d+)?(\.\d+)?((alpha|beta|RC)\d*)?(-\d+)?$')]
     [string]$Version,
 
     [Parameter(Mandatory = $false, Position=1)]
@@ -191,9 +191,9 @@ Function Get-Semver {
     if ($null -ne $semver) { return [string]$semver }
 
     $html = (Get-File -Url 
"https://downloads.php.net/~windows/releases/archives/";).Content
-    $rx = [regex]"php-($([regex]::Escape($Version))\.[0-9]+)"
+    $rx = [regex]"php-($([regex]::Escape($Version))\.[0-9]+(-[0-9]+)?)"
     $found = $rx.Matches($html) | ForEach-Object { $_.Groups[1].Value } |
-        Sort-Object { [version]$_ } -Descending |
+        Sort-Object { [version]($_ -replace '-', '.') } -Descending |
         Select-Object -First 1
 
     if ($null -ne $found) { return [string]$found }
@@ -229,7 +229,7 @@ Function Get-ReleaseType {
     param(
         [Parameter(Mandatory = $true, Position=0)]
         [ValidateNotNull()]
-        [ValidatePattern('^\d+(\.\d+)?(\.\d+)?((alpha|beta|RC)\d*)?$')]
+        [ValidatePattern('^\d+(\.\d+)?(\.\d+)?((alpha|beta|RC)\d*)?(-\d+)?$')]
         [string]$Version
     )
     if ($Version -match "[a-zA-Z]") {
@@ -247,7 +247,7 @@ Function Get-PhpFromUrl {
         [string]$Version,
         [Parameter(Mandatory = $true, Position=1)]
         [ValidateNotNull()]
-        [ValidatePattern('^\d+(\.\d+)?(\.\d+)?((alpha|beta|RC)\d*)?$')]
+        [ValidatePattern('^\d+(\.\d+)?(\.\d+)?((alpha|beta|RC)\d*)?(-\d+)?$')]
         [string]$Semver,
         [Parameter(Mandatory = $false, Position=2)]
         [ValidateSet("x64", "x86")]

Reply via email to