diff --git a/electron/main/backend/install-manager.ts b/electron/main/backend/install-manager.ts index 8b2b40a5..2c0687a4 100644 --- a/electron/main/backend/install-manager.ts +++ b/electron/main/backend/install-manager.ts @@ -634,13 +634,22 @@ ipcMain.handle("uninstall-installed", async (_event, pkgname: string) => { }; }); -ipcMain.handle("launch-app", async (_event, pkgname: string) => { +// eslint-disable-next-line @typescript-eslint/no-explicit-any +ipcMain.handle("launch-app", async (_event, payload: any) => { + const pkgname = typeof payload === "string" ? payload : payload.pkgname; + const origin = typeof payload === "string" ? "spark" : payload.origin; + if (!pkgname) { logger.warn("No pkgname provided for launch-app"); } - const execCommand = "/opt/spark-store/extras/app-launcher"; - const execParams = ["start", pkgname]; + let execCommand = "/opt/spark-store/extras/app-launcher"; + let execParams = ["start", pkgname]; + + if (origin === "apm") { + execCommand = "/opt/spark-store/extras/apm-launcher"; + execParams = ["launch", pkgname]; + } logger.info( `Launching app: ${pkgname} with command: ${execCommand} ${execParams.join(" ")}`, diff --git a/src/App.vue b/src/App.vue index abff3840..a57e1b25 100644 --- a/src/App.vue +++ b/src/App.vue @@ -913,12 +913,12 @@ const closeDownloadDetail = () => { currentDownload.value = null; }; -const openDownloadedApp = (pkgname: string) => { +const openDownloadedApp = (pkgname: string, origin?: "spark" | "apm") => { // const encodedPkg = encodeURIComponent(download.pkgname); // openApmStoreUrl(`apmstore://launch?pkg=${encodedPkg}`, { // fallbackText: `打开应用: ${download.pkgname}` // }); - window.ipcRenderer.invoke("launch-app", pkgname); + window.ipcRenderer.invoke("launch-app", { pkgname, origin }); }; const loadCategories = async () => { diff --git a/src/components/AppDetailModal.vue b/src/components/AppDetailModal.vue index c0f75ae7..167dd093 100644 --- a/src/components/AppDetailModal.vue +++ b/src/components/AppDetailModal.vue @@ -109,7 +109,7 @@