diff options
| author | David Lönnhager <david.l@mullvad.net> | 2025-06-17 16:04:02 +0200 |
|---|---|---|
| committer | Oskar <oskar@mullvad.net> | 2025-06-30 11:44:02 +0200 |
| commit | f95152b71fc8770a7b71ac7a356f12cd74e20e8e (patch) | |
| tree | e7e35e96e9baf3bb82329cc64271e49d81f50f39 /desktop | |
| parent | 2003613225653fce23c943099950174edbef4e23 (diff) | |
| download | mullvadvpn-f95152b71fc8770a7b71ac7a356f12cd74e20e8e.tar.xz mullvadvpn-f95152b71fc8770a7b71ac7a356f12cd74e20e8e.zip | |
Start mullvad daemon from handleStartService handler
Diffstat (limited to 'desktop')
| -rw-r--r-- | desktop/packages/mullvad-vpn/src/main/user-interface.ts | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/desktop/packages/mullvad-vpn/src/main/user-interface.ts b/desktop/packages/mullvad-vpn/src/main/user-interface.ts index 50b152601f..adf5ce1ba4 100644 --- a/desktop/packages/mullvad-vpn/src/main/user-interface.ts +++ b/desktop/packages/mullvad-vpn/src/main/user-interface.ts @@ -18,6 +18,7 @@ import { } from './ipc-event-channel'; import { WebContentsConsoleInput } from './logging'; import { isMacOs11OrNewer } from './platform-version'; +import { resolveBin } from './proc'; import TrayIconController, { TrayIconType } from './tray-icon-controller'; import WindowController, { WindowControllerDelegate } from './window-controller'; @@ -63,16 +64,34 @@ export default class UserInterface implements WindowControllerDelegate { public registerIpcListeners() { IpcMainEventChannel.daemon.handleTryStart(() => { - const child = spawn('cmd.exe', { - detached: true, - stdio: 'ignore', - windowsVerbatimArguments: true, - }); + try { + const SETUP_PATH = `"${resolveBin('mullvad-setup')}"`; + + // TODO: Absolute path to powershell? This varies, however. + const child = spawn('powershell.exe', ['-Command', 'Start-Process', SETUP_PATH, 'start-service', '-Verb', 'RunAs', '-WindowStyle', 'Hidden', '-Wait'], + { + detached: false, + stdio: 'ignore', + windowsVerbatimArguments: true, + }); + child.once('error', (error) => { + log.error(`Start service failed: ${error.message}`); + IpcMainEventChannel.daemon.notifyTryStartEvent?.('stopped'); + }); - child.once('error', (error) => { - log.error(`Could not start daemon: ${error.message}`); + child.once('exit', (code) => { + if (code !== 0) { + log.error(`mullvad-setup exited unexpectedly with exit code: ${code}`); + IpcMainEventChannel.daemon.notifyTryStartEvent?.('stopped'); + } + }); + } catch (e) { + const error = e as Error; + log.error( + `Failed to start mullvad-setup. Error: ${error.message}`, + ); IpcMainEventChannel.daemon.notifyTryStartEvent?.('stopped'); - }); + } }); IpcMainEventChannel.app.handleShowOpenDialog(async (options) => { |
