diff --git a/src/backend/electron/main.ts b/src/backend/electron/main.ts index 63330037f6..3e9894339a 100644 --- a/src/backend/electron/main.ts +++ b/src/backend/electron/main.ts @@ -113,7 +113,7 @@ process.on("unhandledRejection", (reason) => { log.error(reason); }); -function initializeAppPaths() { +function getAppPaths() { let appDirPath: string; let __static: string; @@ -129,7 +129,7 @@ function initializeAppPaths() { return { appDirPath, __static }; } -const { appDirPath, __static } = initializeAppPaths(); +const { appDirPath, __static } = getAppPaths(); protocol.registerSchemesAsPrivileged([ { scheme: "app", privileges: { secure: true, standard: true, stream: true } }, @@ -196,7 +196,7 @@ initializeRuntimeInfoManager({ appVersion: app.getVersion(), }); initializeEngineInfoManager({ - defaultEngineDir: appDirPath, + appDirPath, vvppEngineDir, }); initializeEngineProcessManager({ onEngineProcessError }); diff --git a/src/backend/electron/manager/engineInfoManager.ts b/src/backend/electron/manager/engineInfoManager.ts index 84a5bff3fa..5aa9781f49 100644 --- a/src/backend/electron/manager/engineInfoManager.ts +++ b/src/backend/electron/manager/engineInfoManager.ts @@ -21,7 +21,7 @@ const log = createLogger("EngineInfoManager"); /** 利用可能なエンジンの情報を管理するクラス */ export class EngineInfoManager { - defaultEngineDir: string; + appDirPath: string; vvppEngineDir: string; /** 代替ポート情報 */ @@ -29,8 +29,8 @@ export class EngineInfoManager { private envEngineInfos = loadEnvEngineInfos(); - constructor(payload: { defaultEngineDir: string; vvppEngineDir: string }) { - this.defaultEngineDir = payload.defaultEngineDir; + constructor(payload: { appDirPath: string; vvppEngineDir: string }) { + this.appDirPath = payload.appDirPath; this.vvppEngineDir = payload.vvppEngineDir; } @@ -93,11 +93,14 @@ export class EngineInfoManager { pathname: pathname === "/" ? "" : pathname, isDefault: true, type: engineInfo.type, - executionFilePath: path.resolve(engineInfo.executionFilePath), + executionFilePath: path.resolve( + this.appDirPath, + engineInfo.executionFilePath, + ), path: engineInfo.path == undefined ? undefined - : path.resolve(this.defaultEngineDir, engineInfo.path), + : path.resolve(this.appDirPath, engineInfo.path), } satisfies EngineInfo; }); } @@ -253,7 +256,7 @@ export class EngineInfoManager { let manager: EngineInfoManager | undefined; export function initializeEngineInfoManager(payload: { - defaultEngineDir: string; + appDirPath: string; vvppEngineDir: string; }) { manager = new EngineInfoManager(payload); diff --git a/src/domain/defaultEngine/envEngineInfo.ts b/src/domain/defaultEngine/envEngineInfo.ts index c531cab3f9..9c23ff8f31 100644 --- a/src/domain/defaultEngine/envEngineInfo.ts +++ b/src/domain/defaultEngine/envEngineInfo.ts @@ -19,6 +19,7 @@ const envEngineInfoSchema = z .and( z.union([ // エンジンをパス指定する場合 + // NOTE: 相対パスの場合はアプリのパスで解決する z.object({ type: z.literal("path").default("path"), executionFilePath: z.string(),