diff options
| author | David Lönnhager <david.l@mullvad.net> | 2021-03-17 18:27:09 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2021-03-18 15:40:09 +0100 |
| commit | bf6430666e8d292ccf64d9f550b462c1c27608d7 (patch) | |
| tree | 9c10583206e77a8942df09e2cbceb469dfeade4b | |
| parent | dc76f29507b2491385f1dc58ecff1fe96ed019aa (diff) | |
| download | mullvadvpn-bf6430666e8d292ccf64d9f550b462c1c27608d7.tar.xz mullvadvpn-bf6430666e8d292ccf64d9f550b462c1c27608d7.zip | |
Abort uninstaller if prepare-restart fails
| -rw-r--r-- | dist-assets/windows/installer.nsh | 8 | ||||
| -rw-r--r-- | mullvad-setup/src/main.rs | 12 |
2 files changed, 18 insertions, 2 deletions
diff --git a/dist-assets/windows/installer.nsh b/dist-assets/windows/installer.nsh index 1e0d8766da..4cf4985362 100644 --- a/dist-assets/windows/installer.nsh +++ b/dist-assets/windows/installer.nsh @@ -46,6 +46,7 @@ !define MVSETUP_OK 0 !define MVSETUP_ERROR 1 !define MVSETUP_VERSION_NOT_OLDER 2 +!define MVSETUP_DAEMON_NOT_RUNNING 3 # Override electron-builder generated application settings key. # electron-builder uses a GUID here rather than the application name. @@ -916,7 +917,12 @@ Pop $0 Pop $1 - # Ignore any errors -- the command will fail if the daemon is not running + ${If} $0 != ${MVSETUP_OK} + ${AndIf} $0 != ${MVSETUP_DAEMON_NOT_RUNNING} + StrCpy $R0 "Failed to send prepare-restart to service" + log::LogWithDetails $R0 $1 + Goto customRemoveFiles_abort + ${EndIf} ${EndIf} ${StopAndDeleteService} diff --git a/mullvad-setup/src/main.rs b/mullvad-setup/src/main.rs index 0e9c104db1..45186dd1a7 100644 --- a/mullvad-setup/src/main.rs +++ b/mullvad-setup/src/main.rs @@ -19,6 +19,16 @@ enum ExitStatus { Ok = 0, Error = 1, VersionNotOlder = 2, + DaemonNotRunning = 3, +} + +impl From<Error> for ExitStatus { + fn from(error: Error) -> ExitStatus { + match error { + Error::RpcConnectionError(_) => ExitStatus::DaemonNotRunning, + _ => ExitStatus::Error, + } + } } #[cfg(windows)] @@ -112,7 +122,7 @@ async fn main() { if let Err(e) = result { eprintln!("{}", e.display_chain()); - process::exit(ExitStatus::Error as i32); + process::exit(ExitStatus::from(e) as i32); } } |
