From 472b10a8a4d1d5211ce8d8b4941457485eb0164a Mon Sep 17 00:00:00 2001 From: jose-cardoso-a22506616 Date: Mon, 4 May 2026 07:50:10 +0100 Subject: [PATCH] Merge pull request #4228 from jose-cardoso-a22506616/issue-3993 Closes #3993 --- dist/win/contrib/patchWebDAV.bat | 5 +++- dist/win/contrib/patchWebDAV.ps1 | 47 ++++++++++++++++++++++++-------- dist/win/resources/main.wxs | 11 +++++--- 3 files changed, 47 insertions(+), 16 deletions(-) diff --git a/dist/win/contrib/patchWebDAV.bat b/dist/win/contrib/patchWebDAV.bat index 3a90d3de3..c99f8d10a 100644 --- a/dist/win/contrib/patchWebDAV.bat +++ b/dist/win/contrib/patchWebDAV.bat @@ -4,15 +4,18 @@ :: This file must be located in the INSTALLDIR set "LOOPBACK_ALIAS=%1" +set "ACTION=%2" +if "%ACTION%"=="" set "ACTION=install" :: Log for debugging echo LOOPBACK_ALIAS=%LOOPBACK_ALIAS% +echo ACTION=%ACTION% :: Change to INSTALLDIR cd %~dp0 :: Execute the PowerShell script powershell -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -File .\patchWebDAV.ps1^ - -LoopbackAlias %LOOPBACK_ALIAS% + -LoopbackAlias %LOOPBACK_ALIAS% -Action %ACTION% :: Return the exit code from PowerShell exit /b %ERRORLEVEL% \ No newline at end of file diff --git a/dist/win/contrib/patchWebDAV.ps1 b/dist/win/contrib/patchWebDAV.ps1 index 9d79ab900..2a9a8de98 100644 --- a/dist/win/contrib/patchWebDAV.ps1 +++ b/dist/win/contrib/patchWebDAV.ps1 @@ -1,15 +1,17 @@ #Requires -RunAsAdministrator Param( - [Parameter(Mandatory, HelpMessage="Please provide an alias for 127.0.0.1")][string] $LoopbackAlias + [Parameter(Mandatory, HelpMessage="Please provide an alias for 127.0.0.1")][string] $LoopbackAlias, + [string] $Action = "install" ) +New-Variable -Name "sysdir" -Value ([Environment]::SystemDirectory) -Option Constant -Scope Global +New-Variable -Name "hostsFile" -Value "$sysdir\drivers\etc\hosts" -Option Constant -Scope Global + # Adds an alias for 127.0.0.1 to the hosts file function Add-AliasToHost { param ( [string]$LoopbackAlias ) - $sysdir = [Environment]::SystemDirectory - $hostsFile = "$sysdir\drivers\etc\hosts" $aliasLine = "127.0.0.1 $LoopbackAlias" foreach ($line in Get-Content $hostsFile) { @@ -18,9 +20,26 @@ function Add-AliasToHost { } } - Add-Content -Path $hostsFile -Encoding ascii -Value "`r`n$aliasLine" + $content = Get-Content $hostsFile + $content += "`r`n$aliasLine" + + $content | Set-Content "$hostsFile.tmp" -Encoding ascii + Move-Item "$hostsFile.tmp" $hostsFile -Force } +# Removes an alias for 127.0.0.1 from the hosts file +function Remove-AliasFromHost { + param ( + [string]$LoopbackAlias + ) + $aliasLine = "127.0.0.1 $LoopbackAlias" + + $content = Get-Content $hostsFile + $newContent = $content | Where-Object { $_ -ne $aliasLine } + + $newContent | Set-Content "$hostsFile.tmp" -Encoding ascii + Move-Item "$hostsFile.tmp" $hostsFile -Force +} # Sets in the registry the webclient file size limit to the maximum value function Set-WebDAVFileSizeLimit { @@ -54,14 +73,20 @@ function Edit-ProviderOrder { New-ItemProperty -Path $RegistryPath -Name $Name -Value $UpdatedOrder -PropertyType String -Force | Out-Null } +if ($Action -eq "install") { + Add-AliasToHost $LoopbackAlias + Write-Output 'Ensured alias exists in hosts file' -Add-AliasToHost $LoopbackAlias -Write-Output 'Ensured alias exists in hosts file' + Set-WebDAVFileSizeLimit + Write-Output 'Set WebDAV file size limit' -Set-WebDAVFileSizeLimit -Write-Output 'Set WebDAV file size limit' - -Edit-ProviderOrder -Write-Output 'Ensured correct provider order' + Edit-ProviderOrder + Write-Output 'Ensured correct provider order' +} elseif ($Action -eq "uninstall") { + Remove-AliasFromHost $LoopbackAlias + Write-Output 'Ensured alias removed from hosts file' +} else { + Write-Error "Invalid action: $Action. Only 'install' or 'uninstall' are valid." +} exit 0 diff --git a/dist/win/resources/main.wxs b/dist/win/resources/main.wxs index 5ec5bcbee..94cdd8cff 100644 --- a/dist/win/resources/main.wxs +++ b/dist/win/resources/main.wxs @@ -158,9 +158,13 @@ - + + + + + @@ -214,9 +218,8 @@ - - + @@ -228,4 +231,4 @@ - + \ No newline at end of file