fix(desktop): clean single-instance lock exit and suppress devtools console crash
This commit is contained in:
parent
0dc6a1dc93
commit
eedbe97d02
3 changed files with 18 additions and 13 deletions
|
|
@ -131,15 +131,24 @@ async function handleDeepLink(url: string): Promise<void> {
|
||||||
const gotTheLock = process.env.NODE_ENV === 'test' ? true : app.requestSingleInstanceLock()
|
const gotTheLock = process.env.NODE_ENV === 'test' ? true : app.requestSingleInstanceLock()
|
||||||
|
|
||||||
if (!gotTheLock) {
|
if (!gotTheLock) {
|
||||||
app.quit()
|
console.log('[D3RO Voice] Another instance is already running. Existing window focused.')
|
||||||
|
app.exit(0)
|
||||||
} else {
|
} else {
|
||||||
app.on('second-instance', (_event, argv) => {
|
app.on('second-instance', (_event, argv) => {
|
||||||
// 기존 인스턴스의 메인 윈도우를 활성화
|
// 기존 인스턴스의 메인 윈도우를 최상위로 활성화
|
||||||
const mainWindow = getMainWindow()
|
const mainWindow = getMainWindow()
|
||||||
if (mainWindow) {
|
if (mainWindow) {
|
||||||
if (mainWindow.isMinimized()) mainWindow.restore()
|
if (mainWindow.isMinimized()) mainWindow.restore()
|
||||||
mainWindow.show()
|
mainWindow.show()
|
||||||
mainWindow.focus()
|
mainWindow.focus()
|
||||||
|
mainWindow.setAlwaysOnTop(true)
|
||||||
|
setTimeout(() => {
|
||||||
|
try {
|
||||||
|
mainWindow?.setAlwaysOnTop(false)
|
||||||
|
} catch {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
}, 500)
|
||||||
}
|
}
|
||||||
// Windows: deep link는 두 번째 인스턴스의 argv 마지막 인자로 들어옴
|
// Windows: deep link는 두 번째 인스턴스의 argv 마지막 인자로 들어옴
|
||||||
const deepLinkArg = argv.find((a) => a.startsWith(`${PROTOCOL}://`))
|
const deepLinkArg = argv.find((a) => a.startsWith(`${PROTOCOL}://`))
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ export function createMainWindow(): BrowserWindow {
|
||||||
mainWindow?.restore()
|
mainWindow?.restore()
|
||||||
mainWindow?.focus()
|
mainWindow?.focus()
|
||||||
mainWindow?.flashFrame(true)
|
mainWindow?.flashFrame(true)
|
||||||
if (is.dev && process.env['ELECTRON_RENDERER_URL']) {
|
if (is.dev && process.env['ELECTRON_OPEN_DEVTOOLS'] === '1') {
|
||||||
mainWindow?.webContents.openDevTools({ mode: 'right' })
|
mainWindow?.webContents.openDevTools({ mode: 'right' })
|
||||||
}
|
}
|
||||||
logger.info('Main window shown')
|
logger.info('Main window shown')
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,15 @@
|
||||||
@echo off
|
@echo off
|
||||||
title D3RO Voice Dev Runner
|
title D3RO Voice Launcher
|
||||||
echo ==========================================
|
echo ==========================================
|
||||||
echo [1/2] Cleaning up previous processes...
|
echo [1/2] Cleaning up previous processes...
|
||||||
echo ==========================================
|
echo ==========================================
|
||||||
taskkill /F /IM electron.exe >nul 2>&1
|
taskkill /F /IM "D3RO Voice.exe" /IM electron.exe >nul 2>&1
|
||||||
timeout /t 1 /nobreak >nul
|
timeout /t 1 /nobreak >nul
|
||||||
|
|
||||||
echo ==========================================
|
echo ==========================================
|
||||||
echo [2/2] Launching D3RO Voice...
|
echo [2/2] Launching D3RO Voice App...
|
||||||
echo ==========================================
|
echo ==========================================
|
||||||
cd /d "%~dp0"
|
cd /d "%~dp0"
|
||||||
call pnpm --filter @d3ro/desktop dev
|
start "" "%~dp0node_modules\electron\dist\electron.exe" "%~dp0apps\desktop"
|
||||||
if errorlevel 1 (
|
echo D3RO Voice window opened.
|
||||||
echo.
|
|
||||||
echo pnpm failed, trying npm...
|
|
||||||
call npm run dev --workspace=@d3ro/desktop
|
|
||||||
)
|
|
||||||
pause
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue