|
3 | 3 | [ValidateNotNull()] |
4 | 4 | [ValidateLength(1, [int]::MaxValue)] |
5 | 5 | [string] |
6 | | - $version = '7.4', |
| 6 | + $version = '8.0', |
7 | 7 | [Parameter(Position = 1, Mandatory = $true)] |
8 | 8 | [ValidateNotNull()] |
9 | 9 | [ValidateLength(1, [int]::MaxValue)] |
@@ -119,25 +119,46 @@ Function Install-PSPackage() { |
119 | 119 | } |
120 | 120 | } |
121 | 121 |
|
122 | | -Function Add-ExtensionPrerequisites{ |
| 122 | +# Function to link dependencies to PHP directory. |
| 123 | +Function Set-ExtensionPrerequisites |
| 124 | +{ |
| 125 | + Param ( |
| 126 | + [Parameter(Position = 0, Mandatory = $true)] |
| 127 | + [ValidateNotNull()] |
| 128 | + [ValidateLength(1, [int]::MaxValue)] |
| 129 | + [string] |
| 130 | + $deps_dir |
| 131 | + ) |
| 132 | + $deps = Get-ChildItem -Recurse -Path $deps_dir |
| 133 | + if ($deps.Count -ne 0) { |
| 134 | + # Symlink dependencies instead of adding the directory to PATH ... |
| 135 | + # as other actions change the PATH thus breaking extensions. |
| 136 | + $deps | ForEach-Object { |
| 137 | + New-Item -Itemtype SymbolicLink -Path $php_dir -Name $_.Name -Target $_.FullName -Force > $null 2>&1 |
| 138 | + } |
| 139 | + } else { |
| 140 | + Remove-Item $deps_dir -Recurse -Force |
| 141 | + } |
| 142 | +} |
| 143 | + |
| 144 | +# Function to get extension pre-requisites. |
| 145 | +# https://windows.php.net/downloads/pecl/deps |
| 146 | +# Currently only imagick is supported using this Cmdlet. |
| 147 | +Function Get-ExtensionPrerequisites{ |
123 | 148 | Param ( |
124 | 149 | [Parameter(Position = 0, Mandatory = $true)] |
125 | 150 | [ValidateNotNull()] |
126 | 151 | [ValidateLength(1, [int]::MaxValue)] |
127 | 152 | [string] |
128 | 153 | $extension |
129 | 154 | ) |
130 | | - $deps_dir = "$ext_dir\$extension-vc$installed.VCVersion-$arch" |
| 155 | + $deps_dir = "$ext_dir\$extension-vc$($installed.VCVersion)-$arch" |
131 | 156 | $extensions_with_dependencies = ('imagick') |
| 157 | + New-Item $deps_dir -Type Directory 2>&1 | Out-Null |
132 | 158 | if($extensions_with_dependencies.Contains($extension)) { |
133 | | - if(-not(Test-Path $deps_dir)) { |
134 | | - New-Item $deps_dir -Type Directory 2>&1 | Out-Null |
135 | | - Install-PhpExtensionPrerequisite -Extension $extension -InstallPath $deps_dir -PhpPath $php_dir |
136 | | - } |
137 | | - Get-ChildItem -Recurse -Path $deps_dir | ForEach-Object { |
138 | | - New-Item -Itemtype SymbolicLink -Path $php_dir -Name $_.Name -Target $_.FullName -Force >$null 2>&1 |
139 | | - } |
| 159 | + Install-PhpExtensionPrerequisite -Extension $extension -InstallPath $deps_dir -PhpPath $php_dir |
140 | 160 | } |
| 161 | + return $deps_dir |
141 | 162 | } |
142 | 163 |
|
143 | 164 | # Function to add PHP extensions. |
@@ -170,20 +191,21 @@ Function Add-Extension { |
170 | 191 | Add-Log $tick $extension "Enabled" |
171 | 192 | } |
172 | 193 | default { |
173 | | - Add-ExtensionPrerequisites $extension |
| 194 | + $deps_dir = Get-ExtensionPrerequisites $extension |
174 | 195 | Enable-PhpExtension -Extension $extension_info.Handle -Path $php_dir |
| 196 | + Set-ExtensionPrerequisites $deps_dir |
175 | 197 | Add-Log $tick $extension "Enabled" |
176 | 198 | } |
177 | 199 | } |
178 | 200 | } |
179 | 201 | else { |
180 | | - Add-ExtensionPrerequisites $extension |
| 202 | + $deps_dir = Get-ExtensionPrerequisites $extension |
| 203 | + $params = @{ Extension = $extension; MinimumStability = $stability; MaximumStability = $stability; Path = $php_dir; AdditionalFilesPath = $deps_dir; NoDependencies = $true } |
181 | 204 | if($extension_version -ne '') { |
182 | | - Install-PhpExtension -Extension $extension -Version $extension_version -MinimumStability $stability -MaximumStability $stability -Path $php_dir -NoDependencies |
183 | | - } else { |
184 | | - Install-PhpExtension -Extension $extension -MinimumStability $stability -MaximumStability $stability -Path $php_dir -NoDependencies |
| 205 | + $params["Version"] = $extension_version |
185 | 206 | } |
186 | | - |
| 207 | + Install-PhpExtension @params |
| 208 | + Set-ExtensionPrerequisites $deps_dir |
187 | 209 | Add-Log $tick $extension "Installed and enabled" |
188 | 210 | } |
189 | 211 | } |
@@ -216,6 +238,7 @@ Function Remove-Extension() { |
216 | 238 | } |
217 | 239 | } |
218 | 240 |
|
| 241 | +# Function to configure composer. |
219 | 242 | Function Edit-ComposerConfig() { |
220 | 243 | Param( |
221 | 244 | [Parameter(Position = 0, Mandatory = $true)] |
|
0 commit comments