summaryrefslogtreecommitdiffhomepage
path: root/desktop
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2025-06-17 16:04:02 +0200
committerOskar <oskar@mullvad.net>2025-06-30 11:44:02 +0200
commitf95152b71fc8770a7b71ac7a356f12cd74e20e8e (patch)
treee7e35e96e9baf3bb82329cc64271e49d81f50f39 /desktop
parent2003613225653fce23c943099950174edbef4e23 (diff)
downloadmullvadvpn-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.ts35
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) => {