Electronで作ったアプリが多重に起動していることを検知する仕組みがある。 これを使ってアプリの2重起動を防ぐ方法を紹介する。
なお確認はWindows 10 Homeで行った。
アプリが多重起動していることを検知する
appの次の関数で多重起動を判定できる。
app.requestSingleInstanceLock()
戻り値 booleanこのメソッドの戻り値は、アプリケーションのこのインスタンスのロックが成功したかどうかを表します。 ロック状態にできなかった場合、アプリケーションの他のインスタンスが既にロックされており、ただちに終了すると想定できます。
つまり、アプリを立ち上げてapp.requestSingleInstanceLock()
の結果がfalse
のとき既に起動しているアプリがあるため、自身のプロセスを終了させることで多重起動を防ぐことができる。
コードサンプル
以下、TypeScriptで書いているがJavaScriptでももちろん問題ありません。
main.ts
"use strict";
import { app } from "electron";
import log from "electron-log";
/**
* アプリの二重起動を防ぐ
*/
const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) {
log.info("APP_ALREADY_RUNNING");
log.info("APP_QUIT");
app.quit();
}
/**
* アプリの起動処理など
*/
app.on('ready', () => {
log.info("APP_READY");
});
おわり
Reactに入門するよ
ReactTypeScriptschedule2021-12-12
【TypeScript】ジェネリックスな配列Array<T>を扱う関数を定義する
TypeScriptschedule2021-10-10
【TypeScript】Jestでdescribeなどの関数がnot findになってるのを解消する
TypeScriptテストエラー解消schedule2021-10-10
【TypeScript】JestでインポートしたモジュールがCannot find moduleとなるエラー
TypeScriptテストエラー解消schedule2021-10-10
【Electron】PCのスリープと起動イベントを検知する
ElectronNodejsJavaScriptTypeScriptschedule2021-09-06
Electronでアプリの2重起動を防ぐためのコード
ElectronTypeScriptschedule2021-08-25