app
アプリケーションのイベントライフサイクルを制御します。
Process: Main
以下の例では最後のウインドウが閉じられたときにアプリケーションを終了する方法を示します。
const { app } = require('electron')
app.on('window-all-closed', () => {
app.quit()
})
イベント
app オブジェクトでは以下のイベントが発生します。
イベント: 'will-finish-launching'
アプリケーションが基本的な起動処理を完了したときに発生します。 Windows と Linux上では、will-finish-launching イベントは ready イベントと同じです。macOS上では、このイベントはNSApplication の applicationWillFinishLaunching 通知を表しています。
ほとんどの場合、ready イベントハンドラーですべてのことを行うようにするべきです。
イベント: 'ready'
戻り値:
eventEventlaunchInfoRecord<string, any> | NotificationResponse macOS
Electron が一度、初期化処理を完了したときに発生します。 macOS でアプリケーションが通知センターから起動された場合、launchInfo はアプリケーションを開くために使用された NSUserNotification の userInfo や UNNotificationResponse の情報を保持しています。 また、app.isReady() を呼び出してこのイベントが発生したことがあるかどうかを確認したり、app.whenReady() を呼び出して Electron 初期化時に解決される Promise を取得したりできます。
[!NOTE] The
readyevent is only fired after the main process has finished running the first tick of the event loop. If an Electron API needs to be called before thereadyevent, ensure that it is called synchronously in the top-level context of the main process.
イベント: 'window-all-closed'
すべてのウィンドウが閉じられたときに発生します。
このイベントを購読せずに全てのウインドウを閉じた場合、既定の動作としてアプリは終了します。しかし、このイベントを購読している場合は、アプリを終了するかどうかを制御することができます。 ユーザが Cmd + Q を押下したり、開発者が app.quit() を呼び出したりした場合では、Electron はまず全てのウインドウを閉じようとして、その後に will-quit イベントを発生させます。しかし、この場合は window-all-closed イベントは発生しません。
イベント: 'before-quit'
戻り値:
eventEvent
アプリケーションがウィンドウを閉じ始める前に発生します。 event.preventDefault() を呼び出すことで、アプリケーションが終了する既定の動作を阻害できます。
[!NOTE] If application quit was initiated by
autoUpdater.quitAndInstall(), thenbefore-quitis emitted after emittingcloseevent on all windows and closing them.
[!NOTE] On Windows, this event will not be emitted if the app is closed due to a shutdown/restart of the system or a user logout.
イベント: 'will-quit'
戻り値:
eventEvent
すべてのウィンドウが閉じられ、アプリが終了しようとしているときに発生します。 event.preventDefault() を呼び出すことで、アプリケーションが終了する既定の動作を阻害できます。
will-quit と window-all-closed イベントの差異を確認するためには、window-all-closed イベントの説明もお読みください。
[!NOTE] On Windows, this event will not be emitted if the app is closed due to a shutdown/restart of the system or a user logout.
イベント: 'quit'
戻り値:
eventEventexitCodeInteger
アプリケーションが終了するときに発生します。
[!NOTE] On Windows, this event will not be emitted if the app is closed due to a shutdown/restart of the system or a user logout.
イベント: 'open-file' macOS
戻り値:
eventEventpathstring
ユーザがアプリケーションでファイルを開こうとしたときに発生します。 open-file イベントは、大抵の場合ファイルをアプリケーションが既に開いていて、OS が開くために再利用しようとしたときに発生します。 open-file は、Dock にファイルがドロップされて、アプリケーションがまだ起動していないときにも発生します。 このようなケースに対処するために、アプリケーション起動時の非常に早い段階 ( ready イベントが発生するよりも前) で open-file イベントを監視するようにしてください。
このイベントを処理する場合、event.preventDefault() を呼び出す必要があります。
Windows では、ファイルパスを取得するために (メインプロセスの) process.argv をパースしなければなりません。
イベント: 'open-url' macOS
戻り値:
eventEventurlstring
ユーザがこのアプリケーションで URL を開こうとしたときに発生します。 アプリケーションの Info.plist ファイルで CFBundleURLTypes キーの中に URL スキームを定義し、NSPrincipalClass に AtomApplication を設定しなければなりません。
open-file イベントと同様に、アプリケーションの起動時に open-url イベントのリスナーを必ず登録し、アプリケーションが URL のハンドリングとして開かれているかどうかを検出するようにしてください。 ready イベントの応答でリスナーを登録すると、アプリケーション起動のトリガーとなった URL を逃すことになります。
イベント: 'activate' macOS
戻り値:
eventEventhasVisibleWindowsboolean
アプリケーションがアクティブになったときに発生します。 アプリケーションが最初に起動される、既に実行中のときにアプリケーションを再起動しようとする、アプリケーションのドックやタスクバーのアイコンをクリックするなど、いろいろなアクションがこのイベントの引き金となり得ます。
イベント: 'did-become-active' macOS
戻り値:
eventEvent
アプリケーションがアクティブになったときに発生します。 did-become-active は activate イベントと異なり、アプリがアクティブになるときだけでなく、Dock アイコンがクリックされた時やアプリケーションが再起動した時にも発生します。 また、ユーザーが macOS のアプリ切り替えでこのアプリへと切り替えたときにも発生します。
イベント: 'did-resign-active' macOS
戻り値:
eventEvent
アプリがアクティブでなくなり、フォーカスがなくなったときに発生します。 これは例えば、他のアプリケーションをクリックしたり、macOS のアプリ切り替えで他のアプリケーションへ切り替えたりすると発生します。
イベント: 'continue-activity' macOS
戻り値:
eventEventtypestring - アクティビティを識別する文字列。NSUserActivity.activityTypeと対応しています。userInfounknown - 別のデバイスのアクティビティによって保存されたアプリ固有の情報が含まれています。detailsObjectwebpageURLstring (任意) - 利用可能な場合、別デバイス上の操作でアクセスしたウェブページの URL を特定する文字列になります。
Handoff 中、別のデバイスでアクティビティが再開されようとする際に発生します。 このイベントを処理する場合、event.preventDefault() を呼び出す必要があります。
ユーザのアクティビティはアクティビティ元のアプリと同一の開発者チームIDを持ち、アクティビティタイプをサポートするアプリでしか継続させることができません。 サポートされるアクティビティタイプは、アプリの Info.plist の NSUserActivityTypes キーで指定されています。
イベント: 'will-continue-activity' macOS
戻り値:
eventEventtypestring - アクティビティを識別する文字列。NSUserActivity.activityTypeと対応しています。
Handoff 中に、異なるデバイスでアクティビティが再開される前に発生します。 このイベントを処理する場合、event.preventDefault() を呼び出す必要があります。
イベント: 'continue-activity-error' macOS
戻り値:
eventEventtypestring - アクティビティを識別する文字列。NSUserActivity.activityTypeと対応しています。errorstring - エラーのローカライズされた説明としての文字列。
Handoff 中に、異なるデバイスでアクティビティの再開に失敗したときに発生します。
イベント: 'activity-was-continued' macOS
戻り値:
eventEventtypestring - アクティビティを識別する文字列。NSUserActivity.activityTypeと対応しています。userInfounknown - アクティビティによって保存されたアプリ固有の情報が含まれています。
Handoff 中、別のデバイスでアクティビティが正常に再開された後に発生します。
イベント: 'update-activity-state' macOS
戻り値:
eventEventtypestring - アクティビティを識別する文字列。NSUserActivity.activityTypeと対応しています。userInfounknown - アクティビティによって保存されたアプリ固有の情報が含まれています。
Handoff が別のデバイスで再開される直前に発生します。 送信される情報を更新する必要があれば、event.preventDefault() をすぐに呼び出してください。そして、新しい userInfo 辞書を構築して app.updateCurrentActivity() を適切に呼び出してください。 さもなくば操作は失敗し、continue-activity-error が呼び出されます。
イベント: 'new-window-for-tab' macOS
戻り値:
eventEvent
ユーザーが macOS ネイティブの新規タブボタンをクリックすると発生します。 新規タブボタンは現在の BrowserWindow に tabbingIdentifier が設定されている場合にだけ表示されます。
イベント: 'browser-window-blur'
戻り値:
eventEventwindowBrowserWindow
browserWindow のフォーカスが外れたときに発生します。
イベント: 'browser-window-focus'
戻り値:
eventEventwindowBrowserWindow
browserWindow がフォーカスされたときに発生します。
イベント: 'browser-window-created'
戻り値:
eventEventwindowBrowserWindow
新しく browserWinodow が生成されたときに発生します。
イベント: 'web-contents-created'
戻り値:
eventEventwebContentsWebContents
新しく webContents が作成されたときに発生します。
イベント: 'certificate-error'
戻り値:
eventEventwebContentsWebContentsurlstringerrorstring - エラーコードcertificateCertificatecallbackFunctionisTrustedboolean - 証明書を信頼できるものと見なすかどうか
isMainFrameboolean
url に対する certificate の検証に失敗したときに発生します。証明書を信頼するためには、event.preventDefault() で既定の動作をキャンセルして、callback(true) を呼び出すようにしてください。
const { app } = require('electron')
app.on('certificate-error', (event, webContents, url, error, certificate, callback) => {
if (url === 'https://github.com') {
// 検証ロジック。
event.preventDefault()
callback(true)
} else {
callback(false)
}
})
イベント: 'select-client-certificate'
戻り値:
eventEventwebContentsWebContentsurlURLcertificateListCertificate[]callbackFunctioncertificateCertificate (optional)
クライアント証明書が要求されたときに発生します。
url がクライアント証明書を要求しているナビゲーションエントリーに対応していれば、リストからフィルターされたエントリーで callback を呼び出すことができます。 event.preventDefault() を使うことで、アプリケーションがストアから最初の証明書を使うのをキャンセルできます。
const { app } = require('electron')
app.on('select-client-certificate', (event, webContents, url, list, callback) => {
event.preventDefault()
callback(list[0])
})
イベント: 'login'
戻り値:
eventEventwebContentsWebContents (任意)authenticationResponseDetailsObjecturlURLpidnumber
authInfoObjectisProxybooleanschemestringhoststringportIntegerrealmstring
callbackFunctionusernamestring (任意)passwordstring (optional)
webContents または ユーテリティプロセス が Basic 認証を要求すると発生します。
既定の動作では、全てに認証をキャンセルします。 これを変更するには、event.preventDefault() で既定の動作をキャンセルして、資格情報と共に callback(username, password) を呼び出すようにしてください。
const { app } = require('electron')
app.on('login', (event, webContents, details, authInfo, callback) => {
event.preventDefault()
callback('username', 'secret')
})
ユーザー名またはパスワードを渡さずに callback を呼び出すと、認証リクエストはキャンセルされ、認証エラーがページに返されます。
イベント: 'gpu-info-update'
GPU 情報の更新がある場合に発生します。
イベント: 'render-process-gone'
戻り値:
eventEventwebContentsWebContentsdetailsRenderProcessGoneDetails
renderer processが予期せず消えたときに発生します。 プロセスがクラッシュした場合やキルされた場合は正常です。
イベント: 'child-process-gone'
戻り値:
eventEventdetailsObjecttypestring - プロセスの種別。 以下の値のいずれかです。UtilityZygoteSandbox helperGPUPepper PluginPepper Plugin BrokerUnknown
reasonstring - 子プロセスがなくなった理由。 取りうる値:clean-exit- ゼロの終了コードでプロセスが終了したabnormal-exit- 非ゼロの終了コードでプロセスが終了したkilled- プロセスが SIGTERM シグナルの送信などの方法でキルされたcrashed- プロセスがクラッシュしたoom- プロセスがメモリ不足になったlaunch-failed- プロセスが正常に起動されなかったintegrity-failure- Windows コードの整合性チェックに失敗した
exitCodenumber - プロセスの終了コード。(例: posix では waitpid から、Windows では GetExitCodeProcess からのステータス)serviceNamestring (任意) - そのプロセスのローカライズされていない名前。namestring (任意) - そのプロセスの名前。 ユーティリティの例:Audio Service,Content Decryption Module Service,Network Service,Video Captureなど
子 processが予期せず消えたときに発生します。 プロセスがクラッシュした場合やキルされた場合は正常です。 レンダラープロセスを含みません。
イベント: 'accessibility-support-changed' macOS Windows
戻り値:
eventEventaccessibilitySupportEnabledboolean - Chrome のユーザ補助機能が有効な場合はtrue、そうでない場合はfalse。
Chromeのユーザ補助機能が変更されると発生します。 このイベントはスクリーンリーダーのような支援技術が有効にされたり、無効にされたりしたときに発火します。 詳細については、https://www.chromium.org/developers/design-documents/accessibility を参照してください。
イベント: 'session-created'
戻り値:
sessionSession
Electron が新しい session を作成したときに発生します。
const { app } = require('electron')
app.on('session-created', (session) => {
console.log(session)
})
イベント: 'second-instance'
戻り値:
eventEventargvstring[] - 2 つ目のインスタンスのコマンドライン引数の配列workingDirectorystring - 2 つ目のインスタンスの作業ディレクトリadditionalDataunknown - 2 つ目のインスタンスから渡される追加データの JSON オブジェクト
このイベントは、2 つ目のインスタンスが実行され app.requestSingleInstanceLock() が実行されたとき、アプリケーションの1つ目のインスタンス内で発火されます。
argv は2番目のインスタンスのコマンドライン引数の配列で、workingDirectory はその現在の作業ディレクトリです。 通常、アプリケーションはこれに対して1番目のウインドウにフォーカスを当て、最小化しないように対応します。
argv will not be exactly the same list of arguments as those passed to the second instance. 順番が変わったり、追加の引数が付け加えられたりする可能性があります。 全く同じ引数を保持する必要がある場合は、代わりに additionalData の使用を推奨します。
[!NOTE] If the second instance is started by a different user than the first, the
argvarray will not include the arguments.
このイベントは app の ready イベントが発生した後で実行されることが保証されます。
[!NOTE] Extra command line arguments might be added by Chromium, such as
--original-process-start-time.
メソッド
app オブジェクトには以下のメソッドがあります。
[!NOTE] Some methods are only available on specific operating systems and are labeled as such.
app.quit()
すべてのウインドウを閉じようとします。 before-quit イベントが最初に発生します。 すべてのウインドウを閉じることに成功した場合、will-quit イベントが発生し、既定ではアプリケーションは終了します。
このメソッドは、すべての beforeunload および unload イベントハンドラーが正しく実行されることを保証します。 beforeunload イベントハンドラーで false を返すことによって、ウインドウが終了処理をキャンセルすることができます。
app.exit([exitCode])
exitCodeInteger (optional)
exitCode ですぐに終了します。 exitCode の省略値は 0 です。
ユーザに確認することなくすべてのウインドウがすぐに閉じられ、before-quit および will-quit イベントは発生しません。
app.relaunch([options])
現在のインスタンスが終了したときに、アプリを再起動します。
デフォルトでは、新しいインスタンスも現在と同じカレントディレクトリとコマンドライン引数を使用します。 args が指定されている場合、args がコマンドライン引数の代わりに渡されます。 execPath が指定されている場合、再起動として現在のアプリの代わりに execPath が実行されます。
このメソッドは実行時にはアプリを再起動しないことに注意してください。 アプリを再起動するには app.relaunch を呼んだ後、app.quit か app.exit を実行する必要があります。
app.relaunch が複数回呼び出された場合、現在のインスタンスが終了した後、複数のインスタンスが開始されます。
現在のインスタンスをすぐに終了し、新しいコマンドライン引数を追加して再起動する例は以下の通りです。
const { app } = require('electron')
app.relaunch({ args: process.argv.slice(1).concat(['--relaunch']) })
app.exit(0)
app.isReady()
戻り値 boolean - Electron の初期化が完了している場合 true、そうでない場合 false。 app.whenReady() も参照してください。
app.whenReady()
Returns Promise<void> - Electron が初期化されるときに実行される Promise。 app.isReady() を確認してアプリの準備がまだできていないときに ready イベントに登録するための、便利な代替手段として使用できます。
app.focus([options])
Linux では、最初の表示ウィンドウにフォーカスします。 macOS では、アプリケーションがアクティブになります。 Windows では、アプリケーションの最初のウィンドウにフォーカスします。
steal オプションはできるだけ慎重に使用してください。
app.hide() macOS
最小化することなくアプリケーションのすべてのウインドウを非表示にします。
app.isHidden() macOS
戻り値 boolean - アプリケーションがそのすべてのウィンドウを含めて (例えば Command-H で) 隠されている場合は true、それ以外は false です。
app.show() macOS
非表示にされたアプリケーションのウインドウを表示します。 自動的にフォーカスしません。
app.setAppLogsPath([path])
pathstring (任意) - ログのカスタムパス。 絶対パスでなければなりません。
アプリがロギングするディレクトリを設定または作成します。これは app.getPath() や app.setPath(pathName, newPath) で操作できます。
path 引数なしで app.setAppLogsPath() を呼び出すと、このディレクトリは、macOS では ~/Library/Logs/アプリ名 に、Linux と Windows では userData ディレクトリ内に設定されます。
app.getAppPath()
戻り値 string - 現在のアプリケーションのディレクトリ。
app.getPath(name)
namestring - 以下のパスを名前で要求することができます。homeユーザのホームディレクトリ。appData- 既定のユーザ毎のアプリケーションデータディレクトリ。- Windowsの場合、
%APPDATA% - Linuxの場合、
$XDG_CONFIG_HOMEもしくは~/.config - macOSの場合、
~/Library/Application Support
- Windowsの場合、
assetsアプリケーションのアセット (resources.pakなど) が格納されているディレクトリ。 デフォルトでは、これはexeパスを含むフォルダと同じです。 Windows と Linux で利用できます。userDataアプリの設定ファイルが保存されるディレクトリで、既定ではアプリ名が加えられたappDataのディレクトリ。 慣習上ユーザーデータを保存するファイルはこのディレクトリに書き込まれるはずですが、環境によってはこのディレクトリをクラウドストレージにバックアップすることもあるため、大きなファイルをここに書き込むことは非推奨です。sessionDatalocalStorage、Cookie、ディスクキャッシュ、ダウンロードした辞書、ネットワーク状態、デベロッパー ツールのファイルなど、Sessionで生成したデータを保存するディレクトリです。 既定ではこれはuserDataを指します。 Chromium はここに非常に大きなディスクキャッシュを書き込む可能性があるため、ユーザーデータの保存を localStorage や Cookie などのブラウザストレージに依存しないアプリの場合、userDataディレクトリを汚染しないよう、このディレクトリを他の場所に設定することが推奨されます。temp一時ディレクトリ。exe現在の実行ファイル。moduleChromiumモジュールの場所。 デフォルトでは、これはexeと同義です。desktop現在のユーザのデスクトップディレクトリ。documentsユーザの"マイドキュメント"のディレクトリ。downloadsユーザのダウンロードのディレクトリ。musicユーザのミュージックのディレクトリ。picturesユーザのピクチャのディレクトリ。videosユーザのビデオのディレクトリ。recentユーザーが最近開いたファイルのディレクトリ (Windows のみ)。logsアプリのログフォルダのディレクトリ。crashDumpsクラッシュダンプを格納するディレクトリ。
戻り値 string - name に関連付けられた特別なディレクトリもしくはファイルのパス。 失敗した場合、Error が送出されます。
app.setAppLogsPath() を呼び出すよりも先に app.getPath('logs') が呼び出された場合、path 引数なしで app.setAppLogsPath() を呼び出すのに等しい、デフォルトのログディレクトリが作成されます。
app.getFileIcon(path[, options])
pathstring
戻り値 Promise<NativeImage> - アプリのアイコンで解決され、これは NativeImage 型です。
パスに関連付けられているアイコンを取得します。
Windows の場合、以下の 2 種類のアイコンがあります。
.mp3、.pngなど、特定のファイル拡張子に関連付けられたアイコン。.exe、.dll、.icoのような、ファイル自体に含まれるアイコン。
Linux と macOS の場合、アイコンはファイルの MIME タイプに関連付けられたアプリケーションによって決まります。
app.setPath(name, path)
namestringpathstring
name に関連付けられた特別なディレクトリもしくはファイルの path を上書きします。 パスとして存在しないディレクトリが指定された場合、Error が投げられます。 その場合、そのディレクトリを fs.mkdirSync や類似のもので作成するべきです。
app.getPath で定義されている name のパスだけを上書きすることができます。
既定では、WebページのCookieとキャッシュは sessionData ディレクトリに保存されます。 この場所を変更するには、app モジュールの ready イベントが発生する前に sessionData を上書きする必要があります。
app.getVersion()
戻り値 string - ロードされたアプリケーションのバージョン。 アプリケーションの package.json ファイルにバージョンが見つからない場合、現在のバンドルもしくは実行可能ファイルのバージョンが返却されます。
app.getName()
戻り値 string - アプリケーションの package.json ファイルで名前として設定された現在のアプリケーション名。
通常、package.json の name フィールドは、npm のモジュール仕様に基づいて小文字だけの短い名前が設定されます。 通常、すべて大文字で始まるアプリケーションの名前となる productName フィールドも指定してください。Electronによって、name よりも優先されます。
app.setName(name)
namestring
現在のアプリケーションの名前を上書きします。
[!NOTE] This function overrides the name used internally by Electron; it does not affect the name that the OS uses.
app.getLocale()
戻り値 string - 現在のアプリケーションのロケールで、Chromium の l10n_util ライブラリを用いて取得されます。 取りうる戻り値については こちら にドキュメントがあります。
ロケールを設定するには、アプリケーションの起動時にコマンドラインスイッチを使用する必要があります。これについては、こちら を参照してください。
[!NOTE] When distributing your packaged app, you have to also ship the
localesfolder.
[!NOTE] This API must be called after the
readyevent is emitted.
[!NOTE] To see example return values of this API compared to other locale and language APIs, see
app.getPreferredSystemLanguages().
app.getLocaleCountryCode()
戻り値 string - 2 文字の ISO 3166 国名コードで、ユーザーの OS のロケールを示します。 この値はネイティブの OS API から取得します。
[!NOTE] When unable to detect locale country code, it returns empty string.
app.getSystemLocale()
戻り値 string - 現在のシステムロケール。 Windows と Linux では、Chromium の i18n ライブラリを用いて取得します。 macOS では、[NSLocale currentLocale] を代わりに使用します。 ユーザーの現在のシステム言語を取得するには、app.getPreferredSystemLanguages() を使用するとよいでしょう。これはロケールと同じとは限りません。
また、オペレーティングシステムによってもリージョンデータの扱いが異なります。
- Windows 11 は数値、日付、時刻にリージョンごとの書式を使用します。
- macOS Monterey は数値、日付、時刻の書式設定や、通貨記号の選択にリージョンを使用します。
そのため、この API はカレンダーアプリで日付や時刻を表示する際のフォーマットを選択するような用途、特に開発者が OS に適したフォーマットを希望する場合に利用できます。
[!NOTE] This API must be called after the
readyevent is emitted.
[!NOTE] To see example return values of this API compared to other locale and language APIs, see
app.getPreferredSystemLanguages().
app.getPreferredSystemLanguages()
戻り値 string[] - ユーザーが希望するシステム言語を、最も希望するものから最も希望しないものまで、国番号も含めたものです。 Windows や macOS では、ユーザーが言語と地域の設定からこのリストを変更したり追加したりできます。
Windows では GlobalizationPreferences (GetSystemPreferredUILanguages へのフォールバックあり)、macOS では \[NSLocale preferredLanguages\]、Linux では g_get_language_names が API として使用されます。
この API は、アプリケーションをどの言語で表示するかを決定するなどの目的で使用できます。
以下に、さまざまな言語とロケールの API を設定した場合の戻り値の例を示します。
Windows で、アプリケーションのロケールがドイツ語、リージョンフォーマットがフィンランド語 (フィンランド)、優先システム言語は上からフランス語 (カナダ)、英語 (米国)、簡体字中国語 (中国)、フィンランド語、スペイン語 (ラテンアメリカ) になっているとします。
app.getLocale() // 'de'
app.getSystemLocale() // 'fi-FI'
app.getPreferredSystemLanguages() // ['fr-CA', 'en-US', 'zh-Hans-CN', 'fi', 'es-419']
macOS で、アプリケーションのロケールがドイツ語、リージョンがフィンランド、優先システム言語は上からフランス語 (カナダ)、英語 (米国)、簡体字中国語、スペイン語 (ラテンアメリカ) になっているとします。
app.getLocale() // 'de'
app.getSystemLocale() // 'fr-FI'
app.getPreferredSystemLanguages() // ['fr-CA', 'en-US', 'zh-Hans-FI', 'es-419']
利用可能な言語と地域とその戻り値は、この 2 つのオペレーティングシステムでも異なります。
上記の例からわかるように、Windows では優先システム言語が国コードを持たず、優先システム言語の 1 つがリージョンのフォーマットに使用されている言語と一致することがあります。 macOS では、リージョンはデフォルトの国コードとしてより多くの役割を果たします。ユーザーはフィンランドをリージョンとするために優先言語をフィンランド語にする必要はなく、国コード FI は、言語名に関連する国がない優先システム言語の国コードとして使用されます。
app.addRecentDocument(path) macOS Windows
pathstring
path を最近使ったドキュメントのリストに追加します。
このリストは OS が管理します。 Windows の場合はタスクバーからリストにアクセスでき、macOS の場合は Dock メニューからリストにアクセスできます。
app.clearRecentDocuments() macOS Windows
最近使ったドキュメントのリストをクリアします。
app.getRecentDocuments() macOS Windows
戻り値 string[] - 最近使ったドキュメントのリストを取得します。
const { app } = require('electron')
const path = require('node:path')
const file = path.join(app.getPath('desktop'), 'foo.txt')
app.addRecentDocument(file)
const recents = app.getRecentDocuments()
console.log(recents) // ['/path/to/desktop/foo.txt'}
app.setAsDefaultProtocolClient(protocol[, path, args])
protocolstring -://を除くプロトコルの名前。 例えば、アプリでelectron://リンクを処理したい場合、引数をelectronにしてこのメソッドを呼び出してください。pathstring (任意) Windows - Electron 実行形式へのパス。 省略値はprocess.execPathです。argsstring[] (任意) Windows - 実行形式に渡す引数。 省略値は空の配列です。
戻り値 boolean - 呼び出しが成功したかどうか。
このメソッドは現在の実行形式をプロトコル (または URI スキーム) の既定のハンドラーとして設定します。 これにより、アプリをオペレーティングシステムと密接に統合できます。 登録すると、プロトコル:// によるすべてのリンクは現在の実行形式で開かれるようになります。 プロトコルを含むリンク全体が、アプリケーションに引数として渡されます。
[!NOTE] On macOS, you can only register protocols that have been added to your app's
info.plist, which cannot be modified at runtime. However, you can change the file during build time via Electron Forge, Electron Packager, or by editinginfo.plistwith a text editor. Please refer to Apple's documentation for details.
[!NOTE] In a Windows Store environment (when packaged as an
appx) this API will returntruefor all calls but the registry key it sets won't be accessible by other applications. In order to register your Windows Store application as a default protocol handler you must declare the protocol in your manifest.
この API は内部的に Windows レジストリ や LSSetDefaultHandlerForURLScheme を使用します。
app.removeAsDefaultProtocolClient(protocol[, path, args]) macOS Windows
protocolstring -://を除くプロトコルの名前。pathstring (任意) Windows - 省略値はprocess.execPathargsstring[] (任意) Windows - 省略値は空の配列
戻り値 boolean - 呼び出しが成功したかどうか。
このメソッドは、現在の実行ファイルがプロトコル (または URI スキーム) のデフォルトハンドラであるかどうかをチェックします。 その場合、既定のハンドラーからアプリを削除します。
app.isDefaultProtocolClient(protocol[, path, args])
protocolstring -://を除くプロトコルの名前。pathstring (任意) Windows - 省略値はprocess.execPathargsstring[] (任意) Windows - 省略値は空の配列
戻り値 boolean - 現在の実行形式がプロトコル (または URI スキーム) の既定のハンドラーかどうか。
[!NOTE] On macOS, you can use this method to check if the app has been registered as the default protocol handler for a protocol. You can also verify this by checking
~/Library/Preferences/com.apple.LaunchServices.pliston the macOS machine. Please refer to Apple's documentation for details.
この API は内部的に Windows レジストリ や LSCopyDefaultHandlerForURLScheme を使用します。
app.getApplicationNameForProtocol(url)
urlstring - 確認するプロトコル名が付いた URL。 類似の他メソッドとは異なり、少なくとも://までを含む URL 全体を受け付けます (例:https://)。
戻り値 string - そのプロトコルを処理するアプリケーションの名前。ハンドラーがない場合は空の文字列です。 たとえば、Electron がその URL のデフォルトハンドラーである場合、Windows と Mac では Electron になります。 ただし、厳密な形式に依存しないでください。変更されている可能性があります。 Linux では、.desktop 接尾子を付けた別の形式が必要でしょう。
このメソッドは、URL のプロトコル (別名 URI スキーム) のデフォルトハンドラーであるアプリケーション名を返します。
app.getApplicationInfoForProtocol(url) macOS Windows
urlstring - 確認するプロトコル名が付いた URL。 類似の他メソッドとは異なり、少なくとも://までを含む URL 全体を受け付けます (例:https://)。
戻り値 Promise<Object> - 以下を含むオブジェクトで実行されます。
iconNativeImage - プロトコルを処理するアプリの表示アイコン。pathstring - プロトコルを扱うアプリのインストールパス。namestring - プロトコルを扱うアプリの表示名。
このメソッドは、URL のプロトコル (別名 URI スキーム) のデフォルトハンドラーであるアプリケーション名、アイコン、パスを含むPromiseを返します。
app.setUserTasks(tasks) Windows
tasksTask[] -Taskオブジェクトの配列
tasks を Tasks カテゴリの Windows のジャンプリストに追加します。
tasks は Task オブジェクトの配列です。
戻り値 boolean - 呼び出しが成功したかどうか。
[!NOTE] If you'd like to customize the Jump List even more use
app.setJumpList(categories)instead.
app.getJumpListSettings() Windows
戻り値 Object:
minItemsInteger - ジャンプリストに表示されるアイテムの最小の数 (この値の詳細な説明は MSDN ドキュメント を参照してください) 。removedItemsJumpListItem[] -JumpListItemオブジェクトの配列。ユーザが明示的に、ジャンプリストのカスタムカテゴリから削除したアイテムに対応します。 これらのアイテムを直後のapp.setJumpList()の呼び出しでジャンプリストに再度追加してはいけません。Windowsは削除されたアイテムを含むいかなるカスタムカテゴリも表示することはできません。
app.setJumpList(categories) Windows
categoriesJumpListCategory[] |null-JumpListCategoryオブジェクトの配列。
戻り値 string
アプリケーションのカスタムジャンプリストを設定もしくは削除し、以下の文字列のいずれかを返します。
ok- 正常。error- 1つ以上のエラーが発生しました。何が原因かを把握するためには、実行時ログを有効にします。invalidSeparatorError- ジャンプリストのカスタムカテゴリに区切りを追加しようとしました。 区切りは標準のタスクカテゴリでしか使用できません。fileTypeRegistrationError- アプリが処理できると登録されていないファイルタイプのファイルリンクをジャンプリストに追加しようとしました。customCategoryAccessDeniedError- ユーザープライバシーもしくはグループポリシー設定のため、ジャンプリストにカスタムカテゴリを追加できません。
categories が null の場合、その前に設定されていたカスタムジャンプリスト (あれば) は、(Windowsによって管理される) アプリ標準のジャンプリストに置換されます。
[!NOTE] If a
JumpListCategoryobject has neither thetypenor thenameproperty set then itstypeis assumed to betasks. If thenameproperty is set but thetypeproperty is omitted then thetypeis assumed to becustom.
[!NOTE] Users can remove items from custom categories, and Windows will not allow a removed item to be added back into a custom category until after the next successful call to
app.setJumpList(categories). Any attempt to re-add a removed item to a custom category earlier than that will result in the entire custom category being omitted from the Jump List. The list of removed items can be obtained usingapp.getJumpListSettings().
[!NOTE] The maximum length of a Jump List item's
descriptionproperty is 260 characters. Beyond this limit, the item will not be added to the Jump List, nor will it be displayed.
カスタムジャンプリストを作成する非常に簡単な例は以下の通りです。
const { app } = require('electron')
app.setJumpList([
{
type: 'custom',
name: 'Recent Projects',
items: [
{ type: 'file', path: 'C:\\Projects\\project1.proj' },
{ type: 'file', path: 'C:\\Projects\\project2.proj' }
]
},
{ // `type` は "custom" と見なされます
name: 'Tools',
items: [
{
type: 'task',
title: 'Tool A',
program: process.execPath,
args: '--run-tool-a',
iconPath: process.execPath,
iconIndex: 0,
description: 'Runs Tool A'
},
{
type: 'task',
title: 'Tool B',
program: process.execPath,
args: '--run-tool-b',
iconPath: process.execPath,
iconIndex: 0,
description: 'Runs Tool B'
}
]
},
{ type: 'frequent' },
{ // 名前とタイプが無いので `type` は "tasks" と見なされます
items: [
{
type: 'task',
title: 'New Project',
program: process.execPath,
args: '--new-project',
description: 'Create a new project.'
},
{ type: 'separator' },
{
type: 'task',
title: 'プロジェクトの復元',
program: process.execPath,
args: '--recover-project',
description: 'プロジェクトを復元します。'
}
]
}
])
app.requestSingleInstanceLock([additionalData])
additionalDataRecord<any, any> (optional) - 最初のインスタンスに送信する追加データを格納する JSON オブジェクトです。
戻り値 boolean
このメソッドの戻り値は、アプリケーションのこのインスタンスのロックが成功したかどうかを表します。 ロック状態にできなかった場合、アプリケーションの他のインスタンスが既にロックされており、ただちに終了すると想定できます。
つまり、 このメソッドは、プロセスがアプリケーションの 1 つ目のインスタンスで、アプリがロード処理を続行する必要がある場合に true を返します。 既にロック状態にしたものとは別のインスタンスにパラメータを送信したためプロセスが直ちに終了する必要がある場合は、false を返します。
macOSの場合、ユーザがFinderでアプリの2番目のインスタンスを開こうとしたとき、システムは自動的にシングルインスタンスになるようにし、open-file と open-url イベントが発生します。 ただし、ユーザがアプリをコマンドラインで開始する場合、シングルインスタンスを強制するシステムの仕組みが迂回されるため、シングルインスタンスであることを保証するには、このメソッドを使う必要があります。
以下は、2つ目のインスタンスが開始されたときに1つ目のインスタンスのウインドウをアクティブにする例です。
const { app, BrowserWindow } = require('electron')
let myWindow = null
const additionalData = { myKey: 'myValue' }
const gotTheLock = app.requestSingleInstanceLock(additionalData)
if (!gotTheLock) {
app.quit()
} else {
app.on('second-instance', (event, commandLine, workingDirectory, additionalData) => {
// 2 つ目のインスタンスから受け取ったデータを出力します。
console.log(additionalData)
// 誰かが 2 つ目のインスタンスを実行しようとしたので、このウインドウにフォーカスする必要があります。
if (myWindow) {
if (myWindow.isMinimized()) myWindow.restore()
myWindow.focus()
}
})
app.whenReady().then(() => {
myWindow = new BrowserWindow({})
myWindow.loadURL('https://electronjs.org')
})
}
app.hasSingleInstanceLock()
戻り値 boolean
このメソッドはアプリのこのインスタンスが現在シングルインスタンスロックをされているかどうかを返します。 app.requestSingleInstanceLock() でロックを要求し、app.releaseSingleInstanceLock() で解放できます。
app.releaseSingleInstanceLock()
requestSingleInstanceLock によって作成されたすべてのロックを解放します。 これにより、並列実行するための複数インスタンスのアプリケーションが再び許可されます。
app.setUserActivity(type, userInfo[, webpageURL]) macOS
typestring - アクティビティを一意に識別します。NSUserActivity.activityTypeと対応しています。userInfoany - 別のデバイスで使用するために保存されたアプリ固有の情報。webpageURLstring (任意) - 続行するデバイスに適切なアプリがインストールされていない場合、ブラウザで読み込むウェブページ。 スキームはhttpもしくはhttpsでなければなりません。
NSUserActivity を作成し、現在のアクティビティとして設定します。 アクティビティは、あとで別のデバイスに Handoff の対象となります。
app.getCurrentActivityType() macOS
戻り値 string - 現在実行されているアクティビティのタイプです。
app.invalidateCurrentActivity() macOS
現在の Handoff ユーザアクティビティを無効にします。
app.resignCurrentActivity() macOS
現在の Handoff ユーザーアクティビティを無効化せずに非アクティブとしてマークします。
app.updateCurrentActivity(type, userInfo) macOS
typestring - アクティビティを一意に識別します。NSUserActivity.activityTypeと対応しています。userInfoany - 別のデバイスで使用するために保存されたアプリ固有の情報。
タイプが type と一致した場合、現在のアクティビティを更新し、現在の userInfo ディスクショナリに userInfo のエントリを統合します。
app.setAppUserModelId(id) Windows
idstring
Application User Model ID を id に変更します。
app.setActivationPolicy(policy) macOS
policystring - 'regular', 'accessory', 'formited' のいずれかにできます。
アプリのアクティベーションポリシーを設定します。
アクティベーションポリシーの種類は以下のとおりです。
- 'regular' - Dock に表示される通常のアプリで、ユーザーインターフェースがあったりします。
- 'accessory' - このアプリケーションはドックに表示されず、メニューバーもありません。プログラムから又はウィンドウをクリックすることでアクティベートできます。
- 'prohibited' - アプリケーションはドックに表示されず、ウィンドウも作られず、アクティベートできません。
app.importCertificate(options, callback) Linux
callbackFunctionresultInteger - インポート結果。
プラットフォームの証明書ストアにPACS#12形式で証明書をインポートします。 インポートをすると、result を引数に callback が呼び出されます。0 という値は成功を意味しますが、その他の値は Chromium の net_error_list にある通りの失敗を意味します。
app.configureHostResolver(options)
ホスト解決 (DNS と DNS-over-HTTPS) を設定します。 デフォルトでは、以下のリゾルバがこの順番で使用されます。
- DNS-over-HTTPS、DNS プロバイダがサポートしている 場合
- 組み込みリゾルバ (macOS のみデフォルトで有効)
- システムのリゾルバ (
getaddrinfoなど)
これは、暗号化されていない DNS の使用を制限する (secureDnsMode: "secure") か、DNS-over-HTTPS を無効にする (secureDnsMode: "off") ように設定できます。 また、組み込みリゾルバの有効化または無効化もできます。
安全でない DNS を無効にするには、 secureDnsMode に "secure" を指定します。 その場合、ユーザーの DNS 設定に DoH をサポートするプロバイダが無い場合に備えて、使用する DNS-over-HTTPS サーバのリストを提供しなければなりません。
const { app } = require('electron')
app.whenReady().then(() => {
app.configureHostResolver({
secureDnsMode: 'secure',
secureDnsServers: [
'https://cloudflare-dns.com/dns-query'
]
})
})
この API は ready イベントが発生した後で呼ばなければいけません。
app.disableHardwareAcceleration()
現在のアプリのハードウェアアクセラレーションを無効にします。
このメソッドはアプリが ready になる前だけでしか呼び出すことができません。
app.disableDomainBlockingFor3DAPIs()
既定では、GPU プロセスがあまりに頻繁にクラッシュする場合、ドメイン単位の原則に基づき、再起動するまで Chromium は 3D API (例えばWebGL) を無効にします。 この関数はその振る舞いを無効にします。
このメソッドはアプリが ready になる前だけでしか呼び出すことができません。
app.getAppMetrics()
戻り値 ProcessMetric[]: ProcessMetric オブジェクトの配列で、アプリに関連付けられたすべてのプロセスのメモリや CPU 使用率の統計情報に対応しています。
app.getGPUFeatureStatus()
戻り値 GPUFeatureStatus - chrome://gpu/ から取得したグラフィックス機能のステータス。
[!NOTE] This information is only usable after the
gpu-info-updateevent is emitted.
app.getGPUInfo(infoType)
infoTypestring -basicかcompleteにできます。
戻り値 Promise<unknown>
infoType が complete の場合、Promise は Chromium の GPUInfo オブジェクト 内におけるすべての GPU 情報を含んだ Object で解決されます。 これには chrome://gpu ページ上で表示されるバージョンとドライバ情報が含まれます。
infoType が basic に等しい場合、Promise は complete でのGPU情報より少ない属性を含んだ Object で解決されます。 basic の応答の例はこちらです。
{
auxAttributes:
{
amdSwitchable: true,
canSupportThreadedTextureMailbox: false,
directComposition: false,
directRendering: true,
glResetNotificationStrategy: 0,
inProcessGpu: true,
initializationTime: 0,
jpegDecodeAcceleratorSupported: false,
optimus: false,
passthroughCmdDecoder: false,
sandboxed: false,
softwareRendering: false,
supportsOverlays: false,
videoDecodeAcceleratorFlags: 0
},
gpuDevice:
[{ active: true, deviceId: 26657, vendorId: 4098 },
{ active: false, deviceId: 3366, vendorId: 32902 }],
machineModelName: 'MacBookPro',
machineModelVersion: '11.5'
}
vendorId や deviceId のような基本的な情報だけ必要であれば、basic を用いることが好ましいです。
app.setBadgeCount([count]) Linux macOS
countInteger (任意) - 値が指定されている場合は、指定された値のバッジを設定します。そうでない場合、macOS では無地の白点 (通知数不明などの意味) を表示します。 Linux で値を指定しない場合、バッジは表示されません。
戻り値 boolean - 呼び出しが成功したかどうか。
現在のアプリのカウンターバッジを設定します。 カウントを 0 に設定すると、バッジを非表示にします。
macOS では Dock アイコンに表示されます。 Linux では Unity ランチャーでのみ動作します。
[!NOTE] Unity launcher requires a
.desktopfile to work. For more information, please read the Unity integration documentation.
[!NOTE] On macOS, you need to ensure that your application has the permission to display notifications for this method to work.
app.getBadgeCount() Linux macOS
戻り値 Integer - カウンターバッジに表示されている現在の値。
app.isUnityRunning() Linux
戻り値 boolean - 現在のデスクトップ環境が Unity ランチャーであるかどうか。
app.getLoginItemSettings([options]) macOS Windows
app.setLoginItemSettings に path と args オプションを指定した場合、openAtLogin が正しく設定されるように、ここで同じ引数を引き渡す必要があります。
戻り値 Object:
openAtLoginboolean - アプリがログイン時に開くよう設定されている場合、trueです。openAsHiddenboolean macOS 非推奨 - ログイン時にアプリを隠して開くように設定されている場合、trueです。 これは macOS 13 以降では動作しません。wasOpenedAtLoginboolean macOS - アプリがログイン時に自動で開かれた場合、trueです。wasOpenedAsHiddenboolean macOS 非推奨 - アプリが非表示のログイン項目として開かれていた場合、trueです。 これは、アプリが起動時に何もウインドウを開いてはいけないことを示します。 この設定は MAS ビルド または macOS 13 以降では利用できません。restoreStateboolean macOS 非推奨 - 以前のセッションから状態を復元すべきログイン項目としてアプリが開かれた場合は、trueです。 これは、最後に閉じたときに開いていたウインドウをアプリが復元すべきことを示します。 この設定は MAS ビルド または macOS 13 以降では利用できません。statusstring macOS -not-registered,enabled,requires-approval,not-foundのいずれかにできます。executableWillLaunchAtLoginboolean Windows - アプリがログイン時に開くように設定されており、その実行キーが無効化されていない場合、trueです。openAtLoginはargsオプションを無視する点が異なっています。与えられた実行ファイルがログイン時なんらかの引数が与えれた場合にこのプロパティは 真 になります。launchItemsObject[] Windowsnamestring Windows - レジストリエントリの名前の値。pathstring Windows - レジストリエントリに対応するアプリの実行形式。argsstring[] Windows - 実行形式に渡すコマンドライン引数。scopestring Windows -userまたはmachineのどちらか。 レジストリエントリがHKEY_CURRENT USERまたはHKEY_LOCAL_MACHINEの下にあるかどうかを示します。enabledboolean Windows - アプリのレジストリキーがスタートアップ承認されていて、タスクマネージャと Windows の設定でenabledとして表示されている場合、trueです。
app.setLoginItemSettings(settings) macOS Windows
settingsObjectopenAtLoginboolean (任意) -trueにするとログイン時にアプリを開き、falseにするとログイン項目からアプリを取り除きます。 省略値はfalseです。openAsHiddenboolean (任意) macOS 非推奨 -trueにするとアプリを非表示で開きます。 省略値はfalseです。 ユーザはこの設定をシステム環境設定から変更することができるので、現在の値を取得するためにapp.getLoginItemSettings().wasOpenedAsHiddenをアプリが開かれたときに確認するようにしてください。 この設定は MAS ビルド または macOS 13 以降では利用できません。typestring (任意) macOS - ログイン項目として追加するサービスの種別。 省略値はmainAppServiceです。 macOS 13 以降でのみ利用できます。mainAppService- 通常のアプリケーション。agentService- 起動エージェントのプロパティリスト名。 プロパティリスト名は、アプリのContents/Library/LaunchAgentsディレクトリ内のプロパティリストに対応している必要があります。daemonServicestring (任意) macOS - 起動エージェントのプロパティリスト名。 プロパティリスト名は、アプリのContents/Library/LaunchDaemonsディレクトリ内のプロパティリストに対応している必要があります。loginItemServicestring (任意) macOS - ログイン項目のサービスのプロパティリスト名。 プロパティリスト名は、アプリのContents/Library/LoginItemsディレクトリ内のプロパティリストに対応している必要があります。
serviceNamestring (任意) macOS - サービスの名称。typeがデフォルトではない場合は必須です。 macOS 13 以降でのみ利用できます。pathstring (任意) Windows - ログイン時に起動する実行形式。 省略値はprocess.execPathです。argsstring[] (任意) Windows - 実行形式に渡すコマンドライン引数。 省略値は空の配列です。 パスはテンプレート文字列にするようにしましょう。enabledboolean (任意) Windows -trueの場合、スタートアップ承認されたレジストリキーを変更し、タスクマネージャと Windows の設定でアプリをenable / disableにします。 省略値はtrueです。namestring (任意) Windows - レジストリに書き込む名前の値。 デフォルトはアプリの AppUserModelId() です。
アプリのログイン項目設定を設定します。
Windows で Electron の autoUpdater を使用している、つまり Squirrel を使用している場合、起動パスを実行ファイル名から1階層上に設定する必要があります。これは Squirrel が自動的にスタブアプリケーションを作成し、自動的に最新バージョンのアプリケーションを起動するからです。
const { app } = require('electron')
const path = require('node:path')
const appFolder = path.dirname(process.execPath)
const ourExeName = path.basename(process.execPath)
const stubLauncher = path.resolve(appFolder, '..', ourExeName)
app.setLoginItemSettings({
openAtLogin: true,
path: stubLauncher,
args: [
// ここに、このアプリがログインによって起動されることを示す
// パラメータを渡すことはできますが、必須ではありません
]
})
macOS 13 以降でログイン項目として異なるサービスを設定する方法については、 SMAppService を参照してください。
app.isAccessibilitySupportEnabled() macOS Windows
戻り値 boolean - Chrome のアクセシビリティサポートが有効な場合 true、そうでない場合 false です。 このAPIは、スクリーンリーダーなどの支援技術を使っていることが検出された場合、true を返します。 詳細については、https://www.chromium.org/developers/design-documents/accessibility を参照してください。
app.setAccessibilitySupportEnabled(enabled) macOS Windows
enabledboolean - アクセシビリティツリー レンダリングを有効もしくは無効にします。
手動でChromeのユーザ補助機能を有効にすると、アプリケーションの設定でユーザにアクセシビリティスイッチを出すことができます。 詳細は Chromium のアクセシビリティドキュメント をご覧ください。 既定では無効です。
この API は ready イベントが発生した後で呼ばなければいけません。
[!NOTE] Rendering accessibility tree can significantly affect the performance of your app. 既定で有効にすべきではありません。
app.showAboutPanel()
アプリの About パネルを表示します。 このオプションは app.setAboutPanelOptions(options)で上書きできます。 この関数は非同期実行されます。
app.setAboutPanelOptions(options)
Aboutパネルのオプションを設定します。 macOS の場合、これはアプリの .plist ファイルで定義された値を上書きします。 詳細は Apple ドキュメント をご覧ください。 Linuxの場合、表示するために値をセットしなければなりません。デフォルトの値はありません。
credits を設定していなくてもアプリに表示したい場合、AppKit は NSBundle の main クラスメソッドから返されたバンドル内で、"Credits.html"、"Credits.rtf"、"Credits.rtfd" の順番でファイルを探します。 最初に見つかったファイルが使用されます。見つからない場合、その情報の部分は空白のままです。 詳細は Apple の ドキュメント をご覧ください。
app.isEmojiPanelSupported()
戻り値 boolean - 現在の OS バージョンがネイティブの絵文字ピッカーを許可しているかどうか。
app.showEmojiPanel() macOS Windows
プラットフォームのネイティブの絵文字ピッカーを表示します。
app.startAccessingSecurityScopedResource(bookmarkData) MAS
bookmarkDatastring -dialog.showOpenDialogまたはdialog.showSaveDialogメソッドによって返された、base64 でエンコードされたセキュリティスコープのブックマークデータ。
戻り値 Function - セキュリティスコープ付きファイルへのアクセスが終了すれば、この関数の呼び出しを しなければなりません。 ブックマークへのアクセスを停止するのを忘れた場合、 カーネルリソースがリークし、アプリのサンドボックス外部にアクセスする権限が失われます。
const { app, dialog } = require('electron')
const fs = require('node:fs')
let filepath
let bookmark
dialog.showOpenDialog(null, { securityScopedBookmarks: true }).then(({ filePaths, bookmarks }) => {
filepath = filePaths[0]
bookmark = bookmarks[0]
fs.readFileSync(filepath)
})
// ... アプリを再起動 ...
const stopAccessingSecurityScopedResource = app.startAccessingSecurityScopedResource(bookmark)
fs.readFileSync(filepath)
stopAccessingSecurityScopedResource()
セキュリティスコープ付きリソースへのアクセスを開始します。 このメソッドでは、Mac App Store 用にパッケージ化された Electron アプリケーションが、ユーザーが選択したファイルにアクセスするためにサンドボックスの外部にアクセスすることがあります。 この機能の動作については、 Appleのドキュメント を参照してください。
app.enableSandbox()
アプリで完全サンドボックスモードを有効にします。 これは、WebPreferences の sandbox フラグの値に関係なく、すべてのレンダラーがサンドボックスで起動されることを意味します。
このメソッドはアプリが ready になる前だけでしか呼び出すことができません。
app.isInApplicationsFolder() macOS
戻り値 boolean - アプリケーションが現在、システムのアプリケーションフォルダから実行されているかどうか。 app.moveToApplicationsFolder() と組み合わせて使ってください。
app.moveToApplicationsFolder([options]) macOS
戻り値 boolean - 移動が成功したかどうか。 移動が成功した場合、アプリケーションは終了し、再起動されることに注意してください。
デフォルトでは確認ダイアログは表示されません。 ユーザに操作の確認をさせたい場合は、dialog API で実現できます。
注意: このメソッドはユーザ以外が移動の失敗を引き起こした場合にもエラーを送出します。 例えば、ユーザが承認ダイアログをキャンセルした場合、このメソッドは false を返します。 コピーの実行に失敗した場合、このメソッドはエラーをスローします。 エラーのメッセージは意味の分かるものにする必要があり、何が間違っているのかを正確に知らせるようにしてください。
既定では、移動するアプリと同じ名前のアプリがアプリケーションディレクトリに存在し実行されて いない 場合、既存のアプリはゴミ箱に移動され、新たなアプリがその場所に移動します。 実行 されている 場合、既存の実行中のアプリはフォーカスを引き継ぎ、新たなアプリは自動的に終了します。 この挙動は、オプションの競合ハンドラを提供することで変更できます。この場合、ハンドラによって返されるブール値によって、移動の競合がデフォルトの動作で解決されるかどうかを決定します。 つまり、false を返すとそれ以上のアクションは行われなくなります。true を返すとデフォルトの動作になり、メソッドが続行されます。
以下がその例です。
const { app, dialog } = require('electron')
app.moveToApplicationsFolder({
conflictHandler: (conflictType) => {
if (conflictType === 'exists') {
return dialog.showMessageBoxSync({
type: 'question',
buttons: ['Halt Move', 'Continue Move'],
defaultId: 0,
message: 'An app of this name already exists'
}) === 1
}
}
})
そのユーザーディレクトリにアプリが既に存在する場合、ユーザーが '移動を続行' を選択すると、関数は既定の動作を続行し、既存のアプリは破棄され、新たなアプリはその場所に移動します。
app.isSecureKeyboardEntryEnabled() macOS
戻り値 boolean - キーボード入力のセキュリティを保護 が有効になっているかどうか。
この API は既定で false を返します。
app.setSecureKeyboardEntryEnabled(enabled) macOS
enabledboolean -キーボード入力のセキュリティを保護を有効にするかどうか
アプリケーションの キーボード入力のセキュリティを保護 の有効化を設定します。
この API を利用すると、パスワードなどの重要な情報や機密情報を他のプロセスの傍受から防げます。
詳細は Apple のドキュメント を参照してください。
[!NOTE] Enable
Secure Keyboard Entryonly when it is needed and disable it when it is no longer needed.
app.setProxy(config)
configProxyConfig
戻り値 Promise<void> - プロキシ設定処理が完了すると実行されます。
Session の関連付けなしで行われるネットワークリクエストのプロキシ設定をセットします。 現在、これは ユーティリティプロセス 内の net を用いて行われたリクエストと、ランタイムによって行われる内部リクエスト (例: 地理位置情報クエリ) に影響します。
このメソッドは app が ready になる前でのみ呼び出すことができます。
app.resolveProxy(url)
urlURL
戻り値 Promise<string> - ユーティリティプロセス で net を用いてリクエストを行うときに使用される url のプロキシ情報で解決します。
app.setClientCertRequestPasswordHandler(handler) Linux
-
handlerFunction<Promise<string>>clientCertRequestParamsオブジェクトhostnamestring - クライアント証明書を必要とするサイトのホスト名tokenNamestring - 暗号化デバイスのトークン (またはスロット) 名isRetryboolean - パスワードの試行で以前に失敗した試行があったかどうか
戻り値
Promise<string>- Resolve はパスワードで解決されます。
クライアント証明書を hostname でロックを解除するためにパスワードが必要な場合にハンドラが呼ばれます。
const { app } = require('electron')
async function passwordPromptUI (text) {
return new Promise((resolve, reject) => {
// パスワードを入力する画面を表示
// ...
// ...
resolve('パスワード')
})
}
app.setClientCertRequestPasswordHandler(async ({ hostname, tokenName, isRetry }) => {
const text = `${hostname}の証明書を認証するため、${tokenName}へログインしてください。`
const password = await passwordPromptUI(text)
return password
})
プロパティ
app.accessibilitySupportEnabled macOS Windows
この boolean プロパティは、Chrome のアクセシビリティサポートが有効になっている場合は true、それ以外の場合は false になります。 このプロパティは、テキスト読み上げなどのアシスト技術を使っていることが検出された場合、true を返します。 手動でこのプロパティを true にセットして Chrome のアクセシビリティサポートを有効にすると、開発者はアプリケーション設定内でユーザにアクセシビリティスイッチを出すことができます。
詳細は Chromium のアクセシビリティドキュメント をご覧ください。 既定では無効です。
この API は ready イベントが発生した後で呼ばなければいけません。
[!NOTE] Rendering accessibility tree can significantly affect the performance of your app. 既定で有効にすべきではありません。
app.applicationMenu
Menu | null 型のプロパティです。設定されていれば Menu を、されていなければ null を返します。 ユーザはこのプロパティに Menu を渡すことができます。
app.badgeCount Linux macOS
Integer 型のプロパティです。現在のアプリのバッジカウントを返します。 カウントを 0 に設定するとバッジを非表示にします。
macOS では、ゼロ以外の整数を設定すると、ドックアイコンに表示されます。 Linux では Unity ランチャーでのみ動作します。
[!NOTE] Unity launcher requires a
.desktopfile to work. For more information, please read the Unity integration documentation.
[!NOTE] On macOS, you need to ensure that your application has the permission to display notifications for this property to take effect.
app.commandLine 読み出し専用
CommandLine オブジェクトです。Chromium が使用するコマンドライン引数の読み取りと操作ができます。
app.dock macOS 読み出し専用
Dock | undefined 型のプロパティです。(macOS では Dock 、その他のプラットフォームでは undefined になります。) ユーザーのDockにあるアプリアイコンに対して操作を実行できます。
app.isPackaged 読み出し専用
アプリがパッケージされている場合はtrue、それ以外は false を返す boolean プロパティ。 多くのアプリケーションでは、このプロパティを用いて開発版の環境と製品版の環境を区別できます。
app.name
string 型のプロパティです。現在のアプリケーション名を示します。アプリケーションの package.json ファイル内にある名前になります。
通常、package.json の name フィールドは、npm のモジュール仕様に基づいて小文字だけの短い名前が設定されます。 通常、すべて大文字で始まるアプリケーションの名前となる productName フィールドも指定してください。Electronによって、name よりも優先されます。
app.userAgentFallback
この string は Electron がグローバルフォールバックとして使用するユーザーエージェント文字列です。
これは、webContents または session レベルでユーザーエージェントが設定されていない場合に使用されるユーザーエージェントです。 アプリ全体が同じユーザーエージェントを持っていることを確認するのに役立ちます。 オーバーライドされた値が確実に使用されるように、アプリの初期化のできるだけ早い段階でカスタム値に設定してください。
app.runningUnderARM64Translation Readonly macOS Windows
boolean 型です。true の場合はアプリが現在 ARM64 互換 (macOS の Rosetta 変換環境 や Windows の WOW など) で動作していることを示します。
このプロパティを使用すれば、Rosetta や WOW 下で x64 版を誤って実行しても、ユーザーに arm64 版アプリケーションをダウンロードするよう促すことができます。