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