diff --git a/main/src/services/cliManagerFactory.ts b/main/src/services/cliManagerFactory.ts index b747fead..2f22a367 100644 --- a/main/src/services/cliManagerFactory.ts +++ b/main/src/services/cliManagerFactory.ts @@ -200,7 +200,7 @@ export class CliManagerFactory { additionalOptions?: JsonObject ) => { let permissionIpcPath: string | null = null; - if (additionalOptions?.permissionIpcPath !== undefined) { + if (additionalOptions?.permissionIpcPath !== undefined && additionalOptions?.permissionIpcPath !== null) { permissionIpcPath = decodeBoundary(additionalOptions.permissionIpcPath, boundary.string); } diff --git a/main/src/services/permissionIpcServer.ts b/main/src/services/permissionIpcServer.ts index b42e4ad2..fc76d94e 100644 --- a/main/src/services/permissionIpcServer.ts +++ b/main/src/services/permissionIpcServer.ts @@ -31,13 +31,15 @@ export class PermissionIpcServer { socketDir = os.tmpdir(); } - this.socketPath = path.join(socketDir, `pane-permissions-${process.pid}.sock`); + this.socketPath = process.platform === 'win32' + ? `\\\\.\\pipe\\pane-permissions-${process.pid}` + : path.join(socketDir, `pane-permissions-${process.pid}.sock`); } start(): Promise { return new Promise((resolve, reject) => { - // Clean up any existing socket file - if (fs.existsSync(this.socketPath)) { + // Clean up any existing socket file (skip on Windows: named pipes are not filesystem entries) + if (process.platform !== 'win32' && fs.existsSync(this.socketPath)) { fs.unlinkSync(this.socketPath); } @@ -116,8 +118,8 @@ export class PermissionIpcServer { if (this.server) { this.server.close(() => { - // Clean up socket file - if (fs.existsSync(this.socketPath)) { + // Clean up socket file (skip on Windows: named pipes are not filesystem entries) + if (process.platform !== 'win32' && fs.existsSync(this.socketPath)) { fs.unlinkSync(this.socketPath); } resolve();