diff --git a/src/main/events/index.ts b/src/main/events/index.ts index 2a466f98..d1075e3e 100644 --- a/src/main/events/index.ts +++ b/src/main/events/index.ts @@ -49,4 +49,8 @@ import "./profile/update-profile"; ipcMain.handle("ping", () => "pong"); ipcMain.handle("getVersion", () => app.getVersion()); +ipcMain.handle( + "isPortableVersion", + () => process.env.PORTABLE_EXECUTABLE_FILE != null +); ipcMain.handle("getDefaultDownloadsPath", () => defaultDownloadsPath); diff --git a/src/preload/index.ts b/src/preload/index.ts index f75eba5d..ecabe9e8 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -110,6 +110,7 @@ contextBridge.exposeInMainWorld("electron", { ping: () => ipcRenderer.invoke("ping"), getVersion: () => ipcRenderer.invoke("getVersion"), getDefaultDownloadsPath: () => ipcRenderer.invoke("getDefaultDownloadsPath"), + isPortableVersion: () => ipcRenderer.invoke("isPortableVersion"), openExternal: (src: string) => ipcRenderer.invoke("openExternal", src), isUserLoggedIn: () => ipcRenderer.invoke("isUserLoggedIn"), showOpenDialog: (options: Electron.OpenDialogOptions) => diff --git a/src/renderer/src/declaration.d.ts b/src/renderer/src/declaration.d.ts index abf1743f..ae89bb8b 100644 --- a/src/renderer/src/declaration.d.ts +++ b/src/renderer/src/declaration.d.ts @@ -104,6 +104,7 @@ declare global { getVersion: () => Promise; ping: () => string; getDefaultDownloadsPath: () => Promise; + isPortableVersion: () => Promise; showOpenDialog: ( options: Electron.OpenDialogOptions ) => Promise; diff --git a/src/renderer/src/pages/settings/settings-behavior.tsx b/src/renderer/src/pages/settings/settings-behavior.tsx index 7f7aa5fd..f0b4b4c4 100644 --- a/src/renderer/src/pages/settings/settings-behavior.tsx +++ b/src/renderer/src/pages/settings/settings-behavior.tsx @@ -10,6 +10,8 @@ export function SettingsBehavior() { (state) => state.userPreferences.value ); + const [showRunAtStartup, setShowRunAtStartup] = useState(false); + const { updateUserPreferences } = useContext(settingsContext); const [form, setForm] = useState({ @@ -28,6 +30,12 @@ export function SettingsBehavior() { } }, [userPreferences]); + useEffect(() => { + window.electron.isPortableVersion().then((isPortableVersion) => { + setShowRunAtStartup(!isPortableVersion); + }); + }, []); + const handleChange = (values: Partial) => { setForm((prev) => ({ ...prev, ...values })); updateUserPreferences(values); @@ -45,14 +53,16 @@ export function SettingsBehavior() { } /> - { - handleChange({ runAtStartup: !form.runAtStartup }); - window.electron.autoLaunch(!form.runAtStartup); - }} - checked={form.runAtStartup} - /> + {showRunAtStartup && ( + { + handleChange({ runAtStartup: !form.runAtStartup }); + window.electron.autoLaunch(!form.runAtStartup); + }} + checked={form.runAtStartup} + /> + )} ); }