diff options
| author | David Lönnhager <david.l@mullvad.net> | 2021-03-11 18:17:16 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2021-03-11 18:17:16 +0100 |
| commit | 851bfcc3fd54a9497bba93926e136ab81d97a4be (patch) | |
| tree | 38d9266edb5ad84218d0b8517dd0a5f36270f4df | |
| parent | 4065c2fae382ac535ae7e44a0c93ad9b84f4bd4a (diff) | |
| parent | 99c37aa16362fa9e9a7fbe865b9ae3a09a2f6a05 (diff) | |
| download | mullvadvpn-851bfcc3fd54a9497bba93926e136ab81d97a4be.tar.xz mullvadvpn-851bfcc3fd54a9497bba93926e136ab81d97a4be.zip | |
Merge branch 'windows-uninstaller-kill-service'
| -rw-r--r-- | dist-assets/windows/installer.nsh | 38 |
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 |
