summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-03-11 18:17:16 +0100
committerDavid Lönnhager <david.l@mullvad.net>2021-03-11 18:17:16 +0100
commit851bfcc3fd54a9497bba93926e136ab81d97a4be (patch)
tree38d9266edb5ad84218d0b8517dd0a5f36270f4df
parent4065c2fae382ac535ae7e44a0c93ad9b84f4bd4a (diff)
parent99c37aa16362fa9e9a7fbe865b9ae3a09a2f6a05 (diff)
downloadmullvadvpn-851bfcc3fd54a9497bba93926e136ab81d97a4be.tar.xz
mullvadvpn-851bfcc3fd54a9497bba93926e136ab81d97a4be.zip
Merge branch 'windows-uninstaller-kill-service'
-rw-r--r--dist-assets/windows/installer.nsh38
1 files changed, 38 insertions, 0 deletions
diff --git a/dist-assets/windows/installer.nsh b/dist-assets/windows/installer.nsh
index 3367c2425c..550bbf3626 100644
--- a/dist-assets/windows/installer.nsh
+++ b/dist-assets/windows/installer.nsh
@@ -37,6 +37,7 @@
!define LOG_VOID 1
# Windows error codes
+!define ERROR_SERVICE_DOES_NOT_EXIST 1060
!define ERROR_SERVICE_MARKED_FOR_DELETE 1072
!define ERROR_SERVICE_DEPENDENCY_DELETED 1075
@@ -852,8 +853,45 @@
Pop $0
Pop $1
+ ${If} $0 != 0
+ ${AndIf} $0 != ${ERROR_SERVICE_MARKED_FOR_DELETE}
+ log::Log "Failed to delete Mullvad service: $0"
+ ${EndIf}
+
Sleep 1000
+ #
+ # Forcibly kill the service (likely marked for deletion)
+ #
+
+ Var /GLOBAL DeleteService_Counter
+ Push 0
+ Pop $DeleteService_Counter
+
+ customRemoveFiles_CheckServiceDeleted:
+
+ nsExec::ExecToStack '"$SYSDIR\sc.exe" query mullvadvpn'
+
+ Pop $0
+ Pop $1
+
+ ${If} $0 != ${ERROR_SERVICE_DOES_NOT_EXIST}
+ log::Log "Attempting to forcibly kill Mullvad service"
+
+ nsExec::ExecToStack '"$SYSDIR\taskkill.exe" /f /fi "SERVICES eq mullvadvpn"'
+ Pop $0
+ Pop $1
+
+ # Check again whether it was deleted
+ IntOp $DeleteService_Counter $DeleteService_Counter + 1
+ ${If} $DeleteService_Counter < 3
+ Sleep 1000
+ Goto customRemoveFiles_CheckServiceDeleted
+ ${EndIf}
+
+ log::Log "Failed to kill Mullvad service"
+ ${EndIf}
+
${RemoveCLIFromEnvironPath}
${If} $FullUninstall == 1