diff --git a/.env.example b/.env.example index ae9fbd4..1bf29ff 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,7 @@ # Runtime / app SCOREKO_APP_TITLE=Scoreko SCOREKO_APP_USER_MODEL_ID=com.scoreko.desktop +SCOREKO_APP_USER_DATA_DIRECTORY=scoreko # SCOREKO_APP_ICON_PATH=static/icons/icon.ico # NodeCG diff --git a/src/main/config/runtime-config.ts b/src/main/config/runtime-config.ts index 260895d..ca80ff3 100644 --- a/src/main/config/runtime-config.ts +++ b/src/main/config/runtime-config.ts @@ -1,6 +1,7 @@ export type AppRuntimeConfig = { title: string; userModelId: string; + userDataDirectoryName: string; iconPathOverride?: string; nodecgPort: string; bundleName: string; @@ -19,6 +20,7 @@ export function getRuntimeConfig(): AppRuntimeConfig { return { title: getEnv("SCOREKO_APP_TITLE", "Scoreko"), userModelId: getEnv("SCOREKO_APP_USER_MODEL_ID", "com.scoreko.desktop"), + userDataDirectoryName: getEnv("SCOREKO_APP_USER_DATA_DIRECTORY", "scoreko"), iconPathOverride: getOptionalEnv("SCOREKO_APP_ICON_PATH"), nodecgPort: parseEnvPort("NODECG_PORT", "9090"), bundleName: getEnv("NODECG_BUNDLE_NAME", "scoreko-dev"), diff --git a/src/main/main.ts b/src/main/main.ts index 09ae77e..1a45778 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -9,6 +9,10 @@ import { createLoadingWindow, createMainWindow } from "./windows/window-factory" const appConfig = getRuntimeConfig(); +// Force a stable userData folder name; overridable via SCOREKO_APP_USER_DATA_DIRECTORY. +app.setName(appConfig.title); +app.setPath("userData", path.join(app.getPath("appData"), appConfig.userDataDirectoryName)); + const isDev = !app.isPackaged; const rootPath = isDev ? path.resolve(__dirname, "../..") : process.resourcesPath; const nodecgRootPath = path.resolve(rootPath, "lib", "nodecg"); @@ -96,8 +100,6 @@ function stopNodecgGracefully(): Promise { } app.on("ready", () => { - app.setName(appConfig.title); - if (process.platform === "win32") { app.setAppUserModelId(appConfig.userModelId); } diff --git a/src/tests/icon-path.test.ts b/src/tests/icon-path.test.ts index a5c909d..dc7a18c 100644 --- a/src/tests/icon-path.test.ts +++ b/src/tests/icon-path.test.ts @@ -9,6 +9,7 @@ function getBaseConfig(): AppRuntimeConfig { return { title: "Scoreko", userModelId: "com.scoreko.desktop", + userDataDirectoryName: "scoreko", nodecgPort: "9090", bundleName: "scoreko-dev", mainDashboardRoute: "dashboard/scoreko-dev/main.html?standalone=true", diff --git a/src/tests/process-manager.test.ts b/src/tests/process-manager.test.ts index 356b32d..bb9de81 100644 --- a/src/tests/process-manager.test.ts +++ b/src/tests/process-manager.test.ts @@ -21,6 +21,7 @@ function getBaseConfig(): AppRuntimeConfig { return { title: "Scoreko", userModelId: "com.scoreko.desktop", + userDataDirectoryName: "scoreko", nodecgPort: "9090", bundleName: "scoreko-dev", mainDashboardRoute: "dashboard/scoreko-dev/main.html?standalone=true",