本文へスキップ

app

アプリケーションのイベントライフサイクルを制御します。

プロセス: メイン

次の例は、最後のウィンドウが閉じられたときにアプリケーションを終了する方法を示しています。

const { app } = require('electron')
app.on('window-all-closed', () => {
app.quit()
})

イベント

appオブジェクトは、次のイベントを発行します。

イベント: 'will-finish-launching'

アプリケーションの基本的な起動が完了したときに発行されます。WindowsとLinuxでは、will-finish-launchingイベントはreadyイベントと同じです。macOSでは、このイベントはNSApplicationapplicationWillFinishLaunching通知を表します。

ほとんどの場合、readyイベントハンドラーですべてを実行する必要があります。

イベント: 'ready'

戻り値

Electronの初期化が完了したときに一度発行されます。macOSでは、launchInfoは、通知センターからアプリケーションが起動された場合に使用されたNSUserNotificationuserInfo、またはUNNotificationResponseからの情報を保持します。app.isReady()を呼び出して、このイベントが既に発生しているかどうかを確認し、app.whenReady()を呼び出してElectronが初期化されたときに解決されるPromiseを取得することもできます。

注記: readyイベントは、メインプロセスがイベントループの最初のティックの実行を終えた後にのみ発行されます。readyイベントの前にElectron APIを呼び出す必要がある場合は、メインプロセスの最上位コンテキストで同期的に呼び出すようにしてください。

イベント: 'window-all-closed'

すべてのウィンドウが閉じられたときに発行されます。

このイベントを購読せず、すべてのウィンドウが閉じられた場合、デフォルトの動作はアプリを終了することです。ただし、購読している場合は、アプリを終了するかどうかを制御できます。ユーザーがCmd + Qを押したか、開発者がapp.quit()を呼び出した場合、Electronは最初にすべてのウィンドウを閉じようと試み、次にwill-quitイベントを発行します。この場合、window-all-closedイベントは発行されません。

イベント: 'before-quit'

戻り値

  • event イベント

アプリケーションがウィンドウの閉じを開始する前に発行されます。event.preventDefault()を呼び出すと、アプリケーションを終了するというデフォルトの動作が阻止されます。

注記: アプリケーションの終了がautoUpdater.quitAndInstall()によって開始された場合、before-quitはすべてのウィンドウでcloseイベントを発行してそれらを閉じた*後*に発行されます。

注記: Windowsでは、システムのシャットダウン/再起動またはユーザーログアウトが原因でアプリが閉じられた場合は、このイベントは発行されません。

イベント: 'will-quit'

戻り値

  • event イベント

すべてのウィンドウが閉じられ、アプリケーションが終了しようとしているときに発行されます。event.preventDefault()を呼び出すと、アプリケーションを終了するというデフォルトの動作が阻止されます。

will-quitイベントとwindow-all-closedイベントの違いについては、window-all-closedイベントの説明を参照してください。

注記: Windowsでは、システムのシャットダウン/再起動またはユーザーログアウトが原因でアプリが閉じられた場合は、このイベントは発行されません。

イベント: 'quit'

戻り値

  • event イベント
  • exitCode 整数

アプリケーションが終了しようとしているときに発行されます。

注記: Windowsでは、システムのシャットダウン/再起動またはユーザーログアウトが原因でアプリが閉じられた場合は、このイベントは発行されません。

イベント: 'open-file' macOS

戻り値

  • event イベント
  • path 文字列

ユーザーがアプリケーションでファイルを開こうとしたときに発行されます。open-fileイベントは通常、アプリケーションが既に開いていて、OSがアプリケーションを再利用してファイルを開こうとしている場合に発行されます。open-fileは、ファイルがDockにドロップされ、アプリケーションがまだ実行されていない場合にも発行されます。このケースを処理するには、アプリケーションの起動の非常に早い段階で(readyイベントが発行される前でも)open-fileイベントを必ずリッスンしてください。

このイベントを処理する場合は、event.preventDefault()を呼び出す必要があります。

Windowsでは、ファイルパスを取得するには、process.argv(メインプロセス内)を解析する必要があります。

イベント: 'open-url' macOS

戻り値

  • event イベント
  • url 文字列

ユーザーがアプリケーションでURLを開こうとしたときに発行されます。アプリケーションのInfo.plistファイルでは、CFBundleURLTypesキー内にURLスキームを定義し、NSPrincipalClassAtomApplicationに設定する必要があります。

open-fileイベントと同様に、アプリケーションの起動の早い段階でopen-urlイベントのリスナーを登録して、アプリケーションがURLを処理するために開かれているかどうかを検出してください。readyイベントに応答してリスナーを登録すると、アプリケーションの起動をトリガーするURLを見逃すことになります。

イベント: 'activate' macOS

戻り値

  • event イベント
  • hasVisibleWindows ブーリアン

アプリケーションがアクティブになったときに発行されます。アプリケーションを初めて起動したり、既に実行中のアプリケーションを再起動しようとしたり、アプリケーションのDockまたはタスクバーアイコンをクリックしたりするなど、さまざまな操作がこのイベントをトリガーする可能性があります。

イベント: 'did-become-active' macOS

戻り値

  • event イベント

アプリケーションがアクティブになったときに発行されます。これはactivateイベントとは異なり、did-become-activeはアプリがアクティブになるたびに発行され、Dockアイコンがクリックされたときやアプリケーションが再起動されたときだけではありません。ユーザーがmacOSアプリスイッチャーを使用してアプリに切り替えた場合にも発行されます。

イベント: 'did-resign-active' macOS

戻り値

  • event イベント

アプリがアクティブではなくなり、フォーカスを持っていないときに発行されます。これは、たとえば、別のアプリケーションをクリックしたり、macOSアプリスイッチャーを使用して別のアプリケーションに切り替えたりすることでトリガーできます。

イベント: 'continue-activity' macOS

戻り値

  • event イベント
  • type 文字列 - アクティビティを識別する文字列。 NSUserActivity.activityTypeにマップされます。
  • userInfo 不明 - 別のデバイスのアクティビティによって保存されたアプリ固有の状態が含まれます。
  • details オブジェクト
    • webpageURL 文字列(オプション) - 使用可能な場合、別のデバイスのアクティビティによってアクセスされたWebページのURLを識別する文字列。

Handoff中に、別のデバイスからのアクティビティが再開されようとしているときに発行されます。このイベントを処理する場合は、event.preventDefault()を呼び出す必要があります。

ユーザーアクティビティは、アクティビティのソースアプリと同じ開発者チームIDを持ち、アクティビティのタイプをサポートしているアプリでのみ続行できます。サポートされるアクティビティタイプは、アプリのInfo.plistNSUserActivityTypesキーで指定されています。

イベント: 'will-continue-activity' macOS

戻り値

  • event イベント
  • type 文字列 - アクティビティを識別する文字列。 NSUserActivity.activityTypeにマップされます。

Handoff中に、別のデバイスからのアクティビティが再開されようとする前に発行されます。このイベントを処理する場合は、event.preventDefault()を呼び出す必要があります。

イベント: 'continue-activity-error' macOS

戻り値

  • event イベント
  • type 文字列 - アクティビティを識別する文字列。 NSUserActivity.activityTypeにマップされます。
  • error 文字列 - エラーのローカライズされた説明を含む文字列。

Handoff中に、別のデバイスからのアクティビティの再開が失敗したときに発行されます。

イベント: 'activity-was-continued' macOS

戻り値

  • event イベント
  • type 文字列 - アクティビティを識別する文字列。 NSUserActivity.activityTypeにマップされます。
  • userInfo 不明 - アクティビティによって保存されたアプリ固有の状態が含まれます。

このデバイスからのアクティビティが別のデバイスで正常に再開された後、Handoff中に発生します。

イベント: 'update-activity-state' macOS

戻り値

  • event イベント
  • type 文字列 - アクティビティを識別する文字列。 NSUserActivity.activityTypeにマップされます。
  • userInfo 不明 - アクティビティによって保存されたアプリ固有の状態が含まれます。

Handoffが別のデバイスで再開されようとしているときに発生します。転送する状態を更新する必要がある場合は、すぐにevent.preventDefault()を呼び出し、新しいuserInfo辞書を作成して、タイムリーにapp.updateCurrentActivity()を呼び出す必要があります。それ以外の場合は、操作が失敗し、continue-activity-errorが呼び出されます。

イベント: 'new-window-for-tab' macOS

戻り値

  • event イベント

ユーザーがネイティブmacOSの新規タブボタンをクリックしたときに発生します。新規タブボタンは、現在のBrowserWindowtabbingIdentifierがある場合にのみ表示されます。

イベント: 'browser-window-blur'

戻り値

browserWindowが非アクティブになったときに発生します。

イベント: 'browser-window-focus'

戻り値

browserWindowがアクティブになったときに発生します。

イベント: 'browser-window-created'

戻り値

新しいbrowserWindowが作成されたときに発生します。

イベント: 'web-contents-created'

戻り値

新しいwebContentsが作成されたときに発生します。

イベント: 'certificate-error'

戻り値

  • event イベント
  • webContents WebContents
  • url 文字列
  • error string - エラーコード
  • certificate Certificate
  • callback Function
    • isTrusted boolean - 証明書を信頼済みと見なすかどうか
  • isMainFrame boolean

urlcertificateの検証に失敗したときに発生します。証明書を信頼するには、event.preventDefault()を使用してデフォルトの動作を阻止し、callback(true)を呼び出す必要があります。

const { app } = require('electron')

app.on('certificate-error', (event, webContents, url, error, certificate, callback) => {
if (url === 'https://github.com') {
// Verification logic.
event.preventDefault()
callback(true)
} else {
callback(false)
}
})

イベント: 'select-client-certificate'

戻り値

クライアント証明書が要求されたときに発生します。

urlは、クライアント証明書を要求するナビゲーションエントリに対応し、callbackはリストからフィルタリングされたエントリで呼び出すことができます。event.preventDefault()を使用すると、アプリケーションがストアの最初の証明書を使用することが防止されます。

const { app } = require('electron')

app.on('select-client-certificate', (event, webContents, url, list, callback) => {
event.preventDefault()
callback(list[0])
})

イベント: 'login'

戻り値

  • event イベント
  • webContents WebContents (オプション)
  • authenticationResponseDetails Object
    • url URL
    • pid number
  • authInfo Object
    • isProxy boolean
    • scheme string
    • host string
    • port Integer
    • realm string
  • callback Function
    • username string (オプション)
    • password string (オプション)

webContentsまたはユーティリティプロセスが基本認証を実行しようとしたときに発生します。

デフォルトの動作は、すべての認証をキャンセルすることです。これをオーバーライドするには、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'

戻り値

レンダラープロセスが予期せず消失したときに発生します。これは通常、クラッシュまたは強制終了が原因です。

イベント: 'child-process-gone'

戻り値

  • event イベント
  • details オブジェクト
    • type string - プロセスタイプ。以下のいずれかの値
      • ユーティリティ
      • Zygote
      • サンドボックスヘルパー
      • GPU
      • Pepper Plugin
      • Pepper Plugin Broker
      • 不明
    • reason string - 子プロセスが消失した理由。可能な値
      • clean-exit - プロセスが終了コード0で終了
      • abnormal-exit - プロセスが0以外の終了コードで終了
      • killed - プロセスにSIGTERMが送信されたか、外部から強制終了された
      • crashed - プロセスがクラッシュ
      • oom - プロセスがメモリ不足
      • launch-failed - プロセスが正常に起動しなかった
      • integrity-failure - Windowsコード整合性チェックに失敗
    • exitCode number - プロセスの終了コード(例:posixの場合はwaitpidからのステータス、Windowsの場合はGetExitCodeProcessからのステータス)。
    • serviceName string (オプション) - プロセスのローカライズされていない名前。
    • name string (オプション) - プロセスの名前。ユーティリティの例:「オーディオサービス」、「コンテンツ暗号化モジュールサービス」、「ネットワークサービス」、「ビデオキャプチャ」など。

子プロセスが予期せず消失したときに発生します。これは通常、クラッシュまたは強制終了が原因です。レンダラープロセスは含まれません。

イベント: 'accessibility-support-changed' macOS Windows

戻り値

  • event イベント
  • accessibilitySupportEnabled boolean - Chromeのアクセシビリティサポートが有効な場合はtrue、無効な場合はfalse

Chromeのアクセシビリティサポートが変更されたときに発生します。このイベントは、スクリーンリーダーなどの支援技術が有効または無効になったときに発生します。詳細については、https://www.chromium.org/developers/design-documents/accessibilityを参照してください。

イベント: 'session-created'

戻り値

Electronが新しいsessionを作成したときに発生します。

const { app } = require('electron')

app.on('session-created', (session) => {
console.log(session)
})

イベント: 'second-instance'

戻り値

  • event イベント
  • argv string[] - 2番目のインスタンスのコマンドライン引数の配列
  • workingDirectory string - 2番目のインスタンスの作業ディレクトリ
  • additionalData unknown - 2番目のインスタンスから渡された追加データのJSONオブジェクト

2番目のインスタンスが実行され、app.requestSingleInstanceLock()を呼び出したときに、アプリケーションのプライマリインスタンス内でこのイベントが発生します。

argvは2番目のインスタンスのコマンドライン引数の配列であり、workingDirectoryはその現在の作業ディレクトリです。通常、アプリケーションはこれに応答して、プライマリウィンドウをフォーカスし、最小化されていない状態にします。

注: argvは、2番目のインスタンスに渡された引数のリストとまったく同じではありません。順序が変わる可能性があり、追加の引数が追加される可能性があります。まったく同じ引数を維持する必要がある場合は、代わりにadditionalDataを使用することをお勧めします。

注: 2番目のインスタンスが最初のインスタンスとは異なるユーザーによって開始された場合、argv配列には引数は含まれません。

このイベントは、appreadyイベントの発生後に発生することが保証されています。

注: Chromiumによって、--original-process-start-timeなどの追加のコマンドライン引数が追加される場合があります。

メソッド

appオブジェクトには、次のメソッドがあります。

注: 一部のメソッドは特定のオペレーティングシステムでのみ使用可能であり、そのようにラベル付けされています。

app.quit()

すべてのウィンドウを閉じようとします。最初にbefore-quitイベントが発生します。すべてのウィンドウが正常に閉じられた場合、will-quitイベントが発生し、デフォルトでアプリケーションは終了します。

このメソッドは、すべてのbeforeunloadおよびunloadイベントハンドラーが正しく実行されることを保証します。ウィンドウがbeforeunloadイベントハンドラーでfalseを返すことで、終了をキャンセルすることが可能です。

app.exit([exitCode])

  • exitCode Integer (オプション)

exitCodeで直ちに終了します。exitCodeのデフォルトは0です。

すべてのウィンドウはユーザーに確認することなく直ちに閉じられ、before-quitイベントとwill-quitイベントは発生しません。

app.relaunch([options])

  • options Object (オプション)
    • args string[] (オプション)
    • execPath string (オプション)

現在のインスタンスが終了したときにアプリを再起動します。

デフォルトでは、新しいインスタンスは、現在のインスタンスと同じ作業ディレクトリとコマンドライン引数を使用します。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、それ以外の場合はfalseapp.whenReady()も参照してください。

app.whenReady()

Promise<void>を返します - Electronが初期化されたときに解決されます。アプリがまだ準備できていない場合、app.isReady()をチェックし、readyイベントを購読する便利な代替手段として使用できます。

app.focus([options])

  • options Object (オプション)
    • steal boolean macOS - 他のアプリが現在アクティブであっても、レシーバーをアクティブなアプリにします。

Linuxでは、最初に表示されるウィンドウにフォーカスします。macOSでは、アプリケーションをアクティブなアプリにします。Windowsでは、アプリケーションの最初のウィンドウにフォーカスします。

stealオプションの使用は、可能な限り控えめにすべきです。

app.hide() macOS

すべてのアプリケーションウィンドウを最小化せずに非表示にします。

app.isHidden() macOS

booleanを返します - アプリケーション(すべてのウィンドウを含む)が非表示になっている場合(例:Command-H)、true、それ以外の場合はfalse

app.show() macOS

非表示になった後にアプリケーションウィンドウを表示します。自動的にフォーカスしません。

app.setAppLogsPath([path])

  • path string (オプション) - ログのカスタムパス。絶対パスでなければなりません。

アプリのログを格納するディレクトリを設定または作成します。その後、app.getPath()またはapp.setPath(pathName, newPath)で操作できます。

pathパラメータなしでapp.setAppLogsPath()を呼び出すと、このディレクトリはmacOSでは~/Library/Logs/YourAppNameに、LinuxWindowsではuserDataディレクトリ内に設定されます。

app.getAppPath()

stringを返します - 現在のアプリケーションディレクトリ。

app.getPath(name)

  • name string - 次のパスを名前で要求できます
    • home ユーザーのホームディレクトリ。
    • appData ユーザーごとのアプリケーションデータディレクトリ。デフォルトでは、
      • Windowsでは%APPDATA%
      • Linuxでは$XDG_CONFIG_HOMEまたは~/.config
      • macOSでは~/Library/Application Support
    • userData アプリの構成ファイルを保存するためのディレクトリ。デフォルトでは、アプリ名を追加したappDataディレクトリです。慣例により、ユーザーデータを保存するファイルはここに書き込む必要があります。一部の環境ではこのディレクトリがクラウドストレージにバックアップされる可能性があるため、大きなファイルをここに書き込むことは推奨されません。
    • sessionData Sessionによって生成されたデータ(localStorage、Cookie、ディスクキャッシュ、ダウンロードされた辞書、ネットワーク状態、デベロッパーツールファイルなど)を保存するためのディレクトリ。デフォルトではuserDataを指します。Chromiumはここに非常に大きなディスクキャッシュを書き込む可能性があるため、アプリがlocalStorageやCookieなどのブラウザストレージにユーザーデータを保存することに依存していない場合は、userDataディレクトリの汚染を避けるために、このディレクトリを他の場所に設定することをお勧めします。
    • temp 一時ディレクトリ。
    • exe 現在の実行可能ファイル。
    • module libchromiumcontentライブラリ。
    • 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])

  • path 文字列
  • options Object (オプション)
    • size string
      • small - 16x16
      • normal - 32x32
      • large - Linuxでは48x48、Windowsでは32x32、macOSではサポートされていません。

Promise<NativeImage>を返します - アプリのアイコン(NativeImage)で解決されます。

パスの関連付けられたアイコンを取得します。

Windowsでは、2種類のアイコンがあります。

  • .mp3.pngなどの特定のファイル拡張子に関連付けられたアイコン。
  • .exe.dll.icoなどのファイル自体内にあるアイコン。

LinuxmacOSでは、アイコンはファイルのMIMEタイプに関連付けられたアプリケーションによって異なります。

app.setPath(name, path)

  • name string
  • path 文字列

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.jsonnameフィールドは、npmモジュール仕様に従って短い小文字の名前です。通常はproductNameフィールドも指定する必要があります。これはアプリケーションの完全な大文字の名前で、Electronではnameよりも優先されます。

app.setName(name)

  • name string

現在のアプリケーションの名前をオーバーライドします。

注: この関数はElectron内部で使用される名前をオーバーライドします。OSが使用する名前には影響しません。

app.getLocale()

stringを返します - Chromiumのl10n_utilライブラリを使用して取得された現在のアプリケーションロケール。可能な戻り値については、こちらで説明されています。

ロケールを設定するには、アプリの起動時にコマンドラインスイッチを使用する必要があります。これについてはこちらを参照してください。

注: パッケージ化されたアプリを配布する場合は、localesフォルダーも配布する必要があります。

注: このAPIは、readyイベントが発行された後に呼び出す必要があります。

注: このAPIの戻り値の例を他のロケールおよび言語APIと比較するには、app.getPreferredSystemLanguages()を参照してください。

app.getLocaleCountryCode()

stringを返します - ユーザーのオペレーティングシステムのロケール2文字ISO 3166国コード。この値はネイティブOS APIから取得されます。

注: ロケール国コードを検出できない場合は、空の文字列を返します。

app.getSystemLocale()

stringを返します - 現在のシステムロケール。WindowsとLinuxでは、Chromiumのi18nライブラリを使用して取得されます。macOSでは、代わりに[NSLocale currentLocale]が使用されます。ユーザーの現在のシステム言語(常にロケールと同じとは限らない)を取得するには、app.getPreferredSystemLanguages()を使用する方が良いでしょう。

異なるオペレーティングシステムでは、地域データも異なって使用されます。

  • Windows 11では、数値、日付、時刻の地域形式が使用されます。
  • macOS Montereyでは、数値、日付、時刻の書式設定、および使用する通貨記号の選択に地域が使用されます。

したがって、このAPIは、特に開発者がOSと形式を一致させたい場合、カレンダーアプリで日付と時刻のレンダリング形式を選択するなどの目的で使用できます。

注: このAPIは、readyイベントが発行された後に呼び出す必要があります。

注: このAPIの戻り値の例を他のロケールおよび言語APIと比較するには、app.getPreferredSystemLanguages()を参照してください。

app.getPreferredSystemLanguages()

string[]を返します - ユーザーの優先システム言語(最も優先される順に)。該当する場合は国コードも含まれます。ユーザーは、WindowsまたはmacOSで言語と地域の設定を使用して、このリストを変更および追加できます。

このAPIは、WindowsではGlobalizationPreferencesGetSystemPreferredUILanguagesへのフォールバックあり)、macOSでは\[NSLocale preferredLanguages\]、Linuxではg_get_language_namesを使用します。

この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']

使用可能な言語と地域、および可能な戻り値は、オペレーティングシステムによって異なります。

上記の例からもわかるように、Windowsでは、優先システム言語に国コードがない場合や、優先システム言語の1つが地域形式に使用される言語と一致する場合があります。macOSでは、地域はデフォルトの国コードとして機能します。ユーザーはフィンランドを地域として使用するためにフィンランド語を優先言語として持つ必要はなく、言語名に関連付けられた国がない優先システム言語の国コードとしてFIが使用されます。

app.addRecentDocument(path) macOS Windows

  • path 文字列

最近のドキュメント一覧にpathを追加します。

この一覧はOSによって管理されています。Windowsではタスクバーから、macOSではDockメニューからアクセスできます。

app.clearRecentDocuments() macOS Windows

最近のドキュメント一覧をクリアします。

app.setAsDefaultProtocolClient(protocol[, path, args])

  • protocol 文字列 - プロトコルの名前(://を除く)。例えば、アプリでelectron://リンクを処理したい場合は、このメソッドをパラメーターとしてelectronで呼び出します。
  • path 文字列(オプション) Windows - Electron実行ファイルへのパス。デフォルトはprocess.execPath
  • args 文字列配列(オプション) Windows - 実行ファイルに渡される引数。デフォルトは空の配列

戻り値 boolean - 呼び出しが成功したかどうか。

現在の実行ファイルをプロトコル(別名URIスキーム)のデフォルトハンドラーとして設定します。これにより、アプリをオペレーティングシステムにより深く統合できます。登録されると、your-protocol://が付いたすべてのリンクは、現在の実行ファイルで開かれます。プロトコルを含むリンク全体がパラメーターとしてアプリケーションに渡されます。

注記: macOSでは、アプリのinfo.plistに追加されたプロトコルのみを登録できます。これは実行時に変更できません。ただし、Electron ForgeElectron Packager、またはテキストエディタでinfo.plistを編集することで、ビルド時にファイルを編集できます。詳細はAppleのドキュメントを参照してください。

注記: Windowsストア環境(appxとしてパッケージ化されている場合)、このAPIはすべての呼び出しに対してtrueを返しますが、設定されたレジストリキーには他のアプリケーションからアクセスできません。Windowsストアアプリケーションをデフォルトのプロトコルハンドラーとして登録するには、マニフェストでプロトコルを宣言する必要があります。

このAPIは内部的にWindowsレジストリとLSSetDefaultHandlerForURLSchemeを使用しています。

app.removeAsDefaultProtocolClient(protocol[, path, args]) macOS Windows

  • protocol 文字列 - プロトコルの名前(://を除く)。
  • path 文字列(オプション) Windows - デフォルトはprocess.execPath
  • args 文字列配列(オプション) Windows - デフォルトは空の配列

戻り値 boolean - 呼び出しが成功したかどうか。

このメソッドは、現在の実行ファイルがプロトコル(別名URIスキーム)のデフォルトハンドラーかどうかを確認します。もしそうであれば、アプリをデフォルトハンドラーから削除します。

app.isDefaultProtocolClient(protocol[, path, args])

  • protocol 文字列 - プロトコルの名前(://を除く)。
  • path 文字列(オプション) Windows - デフォルトはprocess.execPath
  • args 文字列配列(オプション) Windows - デフォルトは空の配列

戻り値 boolean - 現在の実行ファイルがプロトコル(別名URIスキーム)のデフォルトハンドラーかどうか。

注記: macOSでは、このメソッドを使用して、アプリがプロトコルのデフォルトプロトコルハンドラーとして登録されているかどうかを確認できます。macOSマシンの~/Library/Preferences/com.apple.LaunchServices.plistを確認することでも検証できます。詳細はAppleのドキュメントを参照してください。

このAPIは内部的にWindowsレジストリとLSCopyDefaultHandlerForURLSchemeを使用しています。

app.getApplicationNameForProtocol(url)

  • url 文字列 - 確認するプロトコル名を含むURL。このファミリの他のメソッドとは異なり、これは://を含む完全なURLを受け入れます(例:https://)。

戻り値 string - プロトコルを処理するアプリケーションの名前。ハンドラーがない場合は空文字列を返します。例えば、ElectronがURLのデフォルトハンドラーの場合、WindowsとMacではElectronになる可能性があります。ただし、正確な形式は変更されないとは限らないため、正確な形式に依存しないでください。Linuxでは異なる形式になる可能性があり、.desktopサフィックスが付く場合があります。

このメソッドは、URLのプロトコル(別名URIスキーム)のデフォルトハンドラーのアプリケーション名を返します。

app.getApplicationInfoForProtocol(url) macOS Windows

  • url 文字列 - 確認するプロトコル名を含むURL。このファミリの他のメソッドとは異なり、これは://を含む完全なURLを受け入れます(例:https://)。

戻り値 Promise<Object> - 次を含むオブジェクトを解決します

  • icon NativeImage - プロトコルを処理するアプリの表示アイコン。
  • path 文字列 - プロトコルを処理するアプリのインストールパス。
  • name 文字列 - プロトコルを処理するアプリの表示名。

このメソッドは、URLのプロトコル(別名URIスキーム)のデフォルトハンドラーのアプリケーション名、アイコン、パスを含むPromiseを返します。

app.setUserTasks(tasks) Windows

  • tasks Task[] - Taskオブジェクトの配列

Windowsのジャンプリストの「タスク」カテゴリにtasksを追加します。タスク

tasksTaskオブジェクトの配列です。

戻り値 boolean - 呼び出しが成功したかどうか。

注記: ジャンプリストをさらにカスタマイズする場合は、代わりにapp.setJumpList(categories)を使用してください。

app.getJumpListSettings() Windows

戻り値 Object

  • minItems 整数 - ジャンプリストに表示される最小項目数(この値の詳細については、MSDNドキュメントを参照してください)。
  • removedItems JumpListItem[] - ユーザーがジャンプリストのカスタムカテゴリから明示的に削除した項目に対応するJumpListItemオブジェクトの配列。これらの項目は、app.setJumpList()への**次の**呼び出しでジャンプリストに再追加してはなりません。Windowsは、削除された項目を含むカスタムカテゴリを1つも表示しません。

app.setJumpList(categories) Windows

戻り値 string

アプリケーションのカスタムジャンプリストを設定または削除し、次の文字列のいずれかを返します。

  • ok - 問題ありませんでした。
  • error - 1つ以上のエラーが発生しました。原因を特定するには、ランタイムロギングを有効にしてください。
  • invalidSeparatorError - ジャンプリストのカスタムカテゴリにセパレータを追加しようとしました。セパレータは標準のTasksカテゴリでのみ許可されます。
  • fileTypeRegistrationError - アプリが処理するように登録されていないファイルタイプについて、ジャンプリストにファイルリンクを追加しようとしました。
  • customCategoryAccessDeniedError - ユーザーのプライバシー設定またはグループポリシー設定により、ジャンプリストにカスタムカテゴリを追加できません。

categoriesnullの場合、以前設定されていたカスタムジャンプリスト(存在する場合)は、アプリの標準ジャンプリスト(Windowsによって管理)に置き換えられます。

注記: JumpListCategoryオブジェクトにtypeプロパティとnameプロパティのどちらも設定されていない場合、そのtypetasksと見なされます。nameプロパティが設定されているがtypeプロパティが省略されている場合、typecustomと見なされます。

注記: ユーザーはカスタムカテゴリから項目を削除できます。削除された項目は、app.setJumpList(categories)への次の成功した呼び出しの後でなければ、カスタムカテゴリに再追加できません。それより前に削除された項目をカスタムカテゴリに再追加しようとすると、カスタムカテゴリ全体がジャンプリストから省略されます。削除された項目の一覧は、app.getJumpListSettings()を使用して取得できます。

注記: ジャンプリスト項目のdescriptionプロパティの最大長は260文字です。この制限を超えると、項目はジャンプリストに追加されず、表示されません。

カスタムジャンプリストを作成する非常に簡単な例を次に示します。

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' }
]
},
{ // has a name so `type` is assumed to be "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' },
{ // has no name and no type so `type` is assumed to be "tasks"
items: [
{
type: 'task',
title: 'New Project',
program: process.execPath,
args: '--new-project',
description: 'Create a new project.'
},
{ type: 'separator' },
{
type: 'task',
title: 'Recover Project',
program: process.execPath,
args: '--recover-project',
description: 'Recover Project'
}
]
}
])

app.requestSingleInstanceLock([additionalData])

  • additionalData Record<any, any> (オプション) - 最初のインスタンスに送信する追加データを含むJSONオブジェクト。

戻り値 boolean

このメソッドの戻り値は、アプリケーションのこのインスタンスがロックを正常に取得したかどうかを示します。ロックの取得に失敗した場合、アプリケーションの別のインスタンスが既にロックを取得して実行されていると想定し、すぐに終了できます。

つまり、このメソッドは、プロセスがアプリケーションのプライマリインスタンスであり、アプリの読み込みを続ける必要がある場合にtrueを返します。ロックを既に取得した別のインスタンスにパラメーターを送信したため、プロセスをすぐに終了する必要がある場合はfalseを返します。

macOSでは、ユーザーがFinderでアプリの2番目のインスタンスを開こうとしたときに、システムが自動的にシングルインスタンスを強制し、そのためにopen-fileイベントとopen-urlイベントが発行されます。ただし、ユーザーがコマンドラインでアプリを起動した場合、システムのシングルインスタンスメカニズムはバイパスされ、シングルインスタンスを確保するためにこのメソッドを使用する必要があります。

セカンダリインスタンス起動時のプライマリインスタンスウィンドウの有効化例

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) => {
// Print out data received from the second instance.
console.log(additionalData)

// Someone tried to run a second instance, we should focus our window.
if (myWindow) {
if (myWindow.isMinimized()) myWindow.restore()
myWindow.focus()
}
})

app.whenReady().then(() => {
myWindow = new BrowserWindow({})
myWindow.loadURL('https://electron.dokyumento.jp')
})
}

app.hasSingleInstanceLock()

戻り値 boolean

このメソッドは、アプリのこのインスタンスがシングルインスタンスロックを保持しているかどうかを返します。ロックはapp.requestSingleInstanceLock()で要求し、app.releaseSingleInstanceLock()で解放できます。

app.releaseSingleInstanceLock()

requestSingleInstanceLockで作成されたすべてのロックを解放します。これにより、アプリケーションの複数のインスタンスが再び並行して実行できるようになります。

app.setUserActivity(type, userInfo[, webpageURL]) macOS

  • type string - アクティビティを一意に識別します。NSUserActivity.activityTypeにマップされます。
  • userInfo any - 別のデバイスで使用するために保存するアプリ固有の状態。
  • webpageURL string (optional) - 適切なアプリが再開デバイスにインストールされていない場合にブラウザで読み込むWebページ。スキームはhttpまたはhttpsである必要があります。

NSUserActivityを作成し、それを現在のアクティビティとして設定します。このアクティビティは、その後、別のデバイスへのHandoffの対象となります。

app.getCurrentActivityType() macOS

stringを返します - 現在実行中のアクティビティのタイプ。

app.invalidateCurrentActivity() macOS

現在のアクティビティを無効にします。Handoff

app.resignCurrentActivity() macOS

現在のアクティビティを無効にすることなく、非アクティブとしてマークします。Handoff

app.updateCurrentActivity(type, userInfo) macOS

  • type string - アクティビティを一意に識別します。NSUserActivity.activityTypeにマップされます。
  • userInfo any - 別のデバイスで使用するために保存するアプリ固有の状態。

タイプがtypeと一致する場合、現在のアクティビティを更新し、userInfoのエントリを現在userInfo辞書にマージします。

app.setAppUserModelId(id) Windows

  • id string

Application User Model IDidに変更します。

app.setActivationPolicy(policy) macOS

  • policy string - 'regular'、'accessory'、または'prohibited'のいずれか。

指定されたアプリの有効化ポリシーを設定します。

有効化ポリシーの種類

  • 'regular' - アプリケーションは、Dockに表示され、ユーザーインターフェースを持つ可能性のある通常のアプリです。
  • 'accessory' - アプリケーションはDockに表示されず、メニューバーもありませんが、プログラムによって、またはウィンドウのいずれかをクリックすることで有効化される場合があります。
  • 'prohibited' - アプリケーションはDockに表示されず、ウィンドウを作成したり、有効化したりすることはできません。

app.importCertificate(options, callback) Linux

  • options Object
    • certificate string - pkcs12ファイルのパス。
    • password string - 証明書のパスフレーズ。
  • callback Function
    • result Integer - インポートの結果。

PKCS12形式の証明書をプラットフォーム証明書ストアにインポートします。callbackはインポート操作のresultで呼び出されます。値が0の場合は成功を示し、それ以外の値はChromiumのnet_error_listに従って失敗を示します。

app.configureHostResolver(options)

  • options Object
    • enableBuiltInResolver boolean (optional) - getaddrinfoよりも優先して組み込みホストリゾルバーを使用するかどうか。有効にすると、組み込みリゾルバーはシステムのDNS設定を使用してDNSルックアップを試みます。macOSではデフォルトで有効、WindowsとLinuxではデフォルトで無効。
    • secureDnsMode string (optional) - 'off'、'automatic'、または'secure'のいずれか。DNS-over-HTTPモードを設定します。'off'の場合、DoHルックアップは実行されません。'automatic'の場合、DoHが使用可能な場合は最初にDoHルックアップが実行され、安全ではないDNSルックアップがフォールバックとして実行されます。'secure'の場合、DoHルックアップのみが実行されます。デフォルトは'automatic'。
    • secureDnsServers string[] (optional) - DNS-over-HTTPサーバーテンプレートのリスト。RFC8484 § 3でテンプレート形式の詳細を参照してください。ほとんどのサーバーはPOSTメソッドをサポートしています。このようなサーバーのテンプレートは、単なるURIです。一部のDNSプロバイダーでは、DoHが明示的に無効になっていない限り、DoHサーバーがこのリストに提供されていなくても、リゾルバーは自動的にDoHにアップグレードします。
    • enableAdditionalDnsQueryTypes boolean (optional) - 要求が安全ではないDNSを介して行われている場合、従来のAおよびAAAAクエリ以外にも、追加のDNSクエリタイプ(例:HTTPS(DNSタイプ65))を許可するかどうかを制御します。セキュアDNSには影響しません。常に追加のタイプを許可します。デフォルトはtrue。

ホスト解決(DNSとDNS-over-HTTPS)を設定します。デフォルトでは、次のリゾルバーが順番に使用されます。

  1. DNSプロバイダーがサポートしている場合、DNS-over-HTTPS。
  2. 組み込みリゾルバー(macOSでのみデフォルトで有効)。
  3. システムのリゾルバー(例: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()

現在アプリのハードウェアアクセラレーションを無効にします。

このメソッドは、アプリの準備が整う前にのみ呼び出すことができます。

app.disableDomainBlockingFor3DAPIs()

デフォルトでは、ChromiumはGPUプロセスが頻繁にクラッシュする場合、ドメインごとに再起動するまで3D API(例:WebGL)を無効にします。この関数は、その動作を無効にします。

このメソッドは、アプリの準備が整う前にのみ呼び出すことができます。

app.getAppMetrics()

ProcessMetric[]を返します: アプリに関連付けられたすべてのプロセスのメモリとCPU使用率統計に対応するProcessMetricオブジェクトの配列。

app.getGPUFeatureStatus()

GPUFeatureStatusを返します - chrome://gpu/からのグラフィック機能の状態。

注記: この情報は、gpu-info-updateイベントが発行された後でのみ使用できます。

app.getGPUInfo(infoType)

  • infoType string - basicまたはcompleteのいずれか。

Promise<unknown>を返します

infoTypecompleteの場合:プロミスはchromiumのGPUInfoオブジェクトにあるすべてのGPU情報を含むObjectで解決されます。これには、chrome://gpuページに表示されるバージョンとドライバーの情報が含まれます。

infoTypebasicの場合:プロミスは、completeで要求した場合よりも属性の少ないObjectで解決されます。基本的な応答の例を以下に示します。

{
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'
}

vendorIddeviceIdなどの基本的な情報のみが必要な場合は、basicの使用を優先する必要があります。

app.setBadgeCount([count]) Linux macOS

  • count 整数 (オプション) - 値が指定された場合、バッジにその値を設定します。指定されない場合、macOSでは白い点が表示され(通知数の不明を示します)、Linuxではバッジは表示されません。

戻り値 boolean - 呼び出しが成功したかどうか。

現在のアプリケーションのカウントバッジを設定します。count0に設定すると、バッジが非表示になります。

macOSではDockアイコンに表示されます。Linuxでは、Unityランチャーでのみ機能します。

注記: Unityランチャーは動作に.desktopファイルが必要です。詳細については、Unity統合ドキュメントをご覧ください。

注記: macOSでは、このメソッドが機能するには、アプリケーションに通知を表示する権限が必要です。

app.getBadgeCount() Linux macOS

整数を返します - カウントバッジに表示されている現在の値。

app.isUnityRunning() Linux

booleanを返します - 現在のデスクトップ環境がUnityランチャーかどうか。

app.getLoginItemSettings([options]) macOS Windows

  • options Object (オプション)
    • type 文字列 (オプション) macOS - mainAppServiceagentServicedaemonServiceloginItemServiceのいずれかになります。デフォルトはmainAppServiceです。macOS 13以降でのみ使用可能です。app.setLoginItemSettingsで各タイプの詳細を参照してください。
    • serviceName 文字列 (オプション) macOS - サービスの名前。typeがデフォルト以外の場合に必要です。macOS 13以降でのみ使用可能です。
    • path 文字列 (オプション) Windows - 比較対象の実行ファイルパス。デフォルトはprocess.execPathです。
    • args 文字列配列 (オプション) Windows - 比較対象のコマンドライン引数。デフォルトは空の配列です。

app.setLoginItemSettingspathargsオプションを指定した場合、openAtLoginを正しく設定するには、ここで同じ引数を渡す必要があります。

戻り値 Object

  • openAtLogin ブーリアン - アプリケーションがログイン時に開く設定になっている場合true
  • openAsHidden ブーリアン macOS 非推奨 - アプリケーションがログイン時に非表示で開く設定になっている場合true。macOS 13以降では動作しません。
  • wasOpenedAtLogin ブーリアン macOS - アプリケーションが自動的にログイン時に開かれた場合true
  • wasOpenedAsHidden ブーリアン macOS 非推奨 - アプリケーションが非表示のログインアイテムとして開かれた場合true。これは、アプリケーションが起動時にウィンドウを開かないことを示します。この設定は、MASビルドまたはmacOS 13以降では使用できません。
  • restoreState ブーリアン macOS 非推奨 - 前回のセッションからの状態を復元する必要があるログインアイテムとしてアプリケーションが開かれた場合true。これは、アプリケーションが最後に閉じられたときに開いていたウィンドウを復元する必要があることを示します。この設定は、MASビルドまたはmacOS 13以降では使用できません。
  • status 文字列 macOS - not-registeredenabledrequires-approvalnot-foundのいずれかになります。
  • executableWillLaunchAtLogin ブーリアン Windows - アプリがログイン時に開く設定になっており、その実行キーが無効になっていない場合trueargsオプションを無視するためopenAtLoginとは異なります。指定された実行ファイルが **任意の** 引数でログイン時に起動される場合、このプロパティはtrueになります。
  • launchItems オブジェクト配列 Windows
    • name 文字列 Windows - レジストリエントリのname値。
    • path 文字列 Windows - レジストリエントリに対応するアプリの実行ファイル。
    • args 文字列配列 Windows - 実行ファイルに渡すコマンドライン引数。
    • scope 文字列 Windows - userまたはmachineのいずれか。レジストリエントリがHKEY_CURRENT_USERまたはHKEY_LOCAL_MACHINEの下にあるかどうかを示します。
    • enabled ブーリアン Windows - アプリのレジストリキーがスタートアップ承認されており、タスクマネージャーとWindowsの設定でenabledとして表示される場合true

app.setLoginItemSettings(settings) macOS Windows

  • settings オブジェクト
    • openAtLogin ブーリアン (オプション) - ログイン時にアプリを開く場合true、ログインアイテムからアプリを削除する場合false。デフォルトはfalse
    • openAsHidden ブーリアン (オプション) macOS 非推奨 - 非表示でアプリを開く場合true。デフォルトはfalse。ユーザーはシステム環境設定からこの設定を編集できるため、アプリが開かれたときにapp.getLoginItemSettings().wasOpenedAsHiddenをチェックして現在の値を確認する必要があります。この設定は、MASビルドまたはmacOS 13以降では使用できません。
    • type 文字列 (オプション) macOS - ログインアイテムとして追加するサービスの種類。デフォルトはmainAppServiceです。macOS 13以降でのみ使用可能です。
      • mainAppService - プライマリアプリケーション。
      • agentService - Launch Agentのプロパティリスト名。プロパティリスト名は、アプリのContents/Library/LaunchAgentsディレクトリ内のプロパティリストに対応している必要があります。
      • daemonService 文字列 (オプション) macOS - Launch Daemonのプロパティリスト名。プロパティリスト名は、アプリのContents/Library/LaunchDaemonsディレクトリ内のプロパティリストに対応している必要があります。
      • loginItemService 文字列 (オプション) macOS - ログインアイテムサービスのプロパティリスト名。プロパティリスト名は、アプリのContents/Library/LoginItemsディレクトリ内のプロパティリストに対応している必要があります。
    • serviceName 文字列 (オプション) macOS - サービスの名前。typeがデフォルト以外の場合に必要です。macOS 13以降でのみ使用可能です。
    • path 文字列 (オプション) Windows - ログイン時に起動する実行ファイル。デフォルトはprocess.execPathです。
    • args 文字列配列 (オプション) Windows - 実行ファイルに渡すコマンドライン引数。デフォルトは空の配列です。パスを引用符で囲むように注意してください。
    • enabled ブーリアン (オプション) Windows - trueはスタートアップ承認されたレジストリキーを変更し、タスクマネージャーとWindowsの設定でアプリを有効/無効にします。デフォルトはtrue
    • name 文字列 (オプション) Windows - レジストリに書き込む値の名前。アプリのAppUserModelId()がデフォルトです。

アプリのログインアイテム設定を設定します。

Squirrel を使用するWindows上のElectronのautoUpdaterを操作するには、起動パスをUpdate.exeに設定し、アプリケーション名を指定する引数を渡す必要があります。例えば

const { app } = require('electron')
const path = require('node:path')

const appFolder = path.dirname(process.execPath)
const updateExe = path.resolve(appFolder, '..', 'Update.exe')
const exeName = path.basename(process.execPath)

app.setLoginItemSettings({
openAtLogin: true,
path: updateExe,
args: [
'--processStart', `"${exeName}"`,
'--process-start-args', '"--hidden"'
]
})

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

Chromeのアクセシビリティサポートを手動で有効にし、アプリケーション設定でユーザーにアクセシビリティスイッチを公開できるようにします。詳細については、Chromiumのアクセシビリティドキュメントを参照してください。デフォルトでは無効になっています。

このAPIは、readyイベントが発行された後呼び出す必要があります。

注記: アクセシビリティツリーのレンダリングは、アプリのパフォーマンスに大きな影響を与える可能性があります。デフォルトで有効にするべきではありません。

app.showAboutPanel()

アプリの「バージョン情報」パネルオプションを表示します。これらのオプションは、app.setAboutPanelOptions(options)で上書きできます。この関数は非同期的に実行されます。

app.setAboutPanelOptions(options)

  • options Object
    • applicationName 文字列 (オプション) - アプリの名前。
    • applicationVersion 文字列 (オプション) - アプリのバージョン。
    • copyright 文字列 (オプション) - 著作権情報。
    • version 文字列 (オプション) macOS - アプリのビルドバージョン番号。
    • credits 文字列 (オプション) macOS Windows - クレジット情報。
    • authors 文字列配列 (オプション) Linux - アプリの作者リスト。
    • website 文字列 (オプション) Linux - アプリのウェブサイト。
    • iconPath 文字列 (オプション) Linux Windows - JPEGまたはPNGファイル形式のアプリのアイコンへのパス。Linuxでは、アスペクト比を維持しながら64x64ピクセルで表示されます。Windowsでは、48x48 PNGを使用すると、最高の視覚品質が得られます。

「バージョン情報」パネルのオプションを設定します。これにより、macOSのアプリの.plistファイルで定義されている値が上書きされます。詳細については、Appleのドキュメントを参照してください。Linuxでは、表示するには値を設定する必要があります。デフォルト値はありません。

credits を設定しない場合でも、アプリ内でクレジットを表示したい場合は、AppKit は `NSBundle` クラスメソッド `main` が返すバンドル内で、"Credits.html"、"Credits.rtf"、"Credits.rtfd" の順にファイルを検索します。最初に検出されたファイルが使用され、いずれも見つからない場合は、情報領域は空白のままになります。詳細は、Apple のドキュメントを参照してください。

app.isEmojiPanelSupported()

現在のOSバージョンがネイティブの絵文字ピッカーを許可するかどうかを返す `boolean` 型の値です。

app.showEmojiPanel() macOS Windows

プラットフォームのネイティブ絵文字ピッカーを表示します。

app.startAccessingSecurityScopedResource(bookmarkData) MAS

  • bookmarkData 文字列 - dialog.showOpenDialog または dialog.showSaveDialog メソッドによって返される、Base64 エンコードされたセキュリティスコープブックマークデータ。

セキュリティスコープファイルへのアクセスが完了したら、この関数を**必ず**呼び出す必要があります。ブックマークへのアクセスを停止するのを忘れると、カーネルリソースがリークし、アプリがサンドボックスの外にアクセスできなくなり、アプリを再起動するまでその状態が続きます。

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)
})

// ... restart app ...

const stopAccessingSecurityScopedResource = app.startAccessingSecurityScopedResource(bookmark)
fs.readFileSync(filepath)
stopAccessingSecurityScopedResource()

セキュリティスコープリソースへのアクセスを開始します。このメソッドを使用すると、Mac App Store向けにパッケージ化されたElectronアプリケーションは、サンドボックスの外側にアクセスして、ユーザーが選択したファイルにアクセスできます。このシステムの動作については、Apple のドキュメントを参照してください。

app.enableSandbox()

アプリで完全なサンドボックスモードを有効にします。これは、WebPreferencessandbox フラグの値に関係なく、すべてのレンダラーがサンドボックス化されて起動されることを意味します。

このメソッドは、アプリの準備が整う前にのみ呼び出すことができます。

app.isInApplicationsFolder() macOS

`boolean` 型の値を返します。アプリケーションが現在、システムのアプリケーションフォルダから実行されているかどうかを示します。app.moveToApplicationsFolder() と組み合わせて使用します。

app.moveToApplicationsFolder([options]) macOS

  • options Object (オプション)
    • conflictHandler Function<boolean> (オプション) - 移動失敗時の潜在的な競合に対するハンドラー。
      • conflictType 文字列 - ハンドラーによって検出された移動競合の種類。`exists` または `existsAndRunning` のいずれかになります。`exists` は、同じ名前のアプリがアプリケーションディレクトリに存在することを意味し、`existsAndRunning` は、存在し、現在実行中であることを意味します。

`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

  • enabled boolean - 「セキュアキーボード入力」を有効または無効にします。

アプリケーションで「セキュアキーボード入力」を有効または無効にします。

このAPIを使用することで、パスワードなどの重要な情報が他のプロセスによって傍受されるのを防ぐことができます。

詳細は、Apple のドキュメントを参照してください。

**注:** 「セキュアキーボード入力」は必要な場合にのみ有効にし、不要になったら無効にしてください。

app.setProxy(config)

`Promise<void>` を返します - プロキシ設定プロセスが完了すると解決されます。

関連付けられた Session がないネットワークリクエストのプロキシ設定を設定します。現在、これは ユーティリティプロセスNet で行われたリクエストと、ランタイムによって行われた内部リクエスト(例:位置情報クエリ)に影響します。

このメソッドは、アプリの準備が完了した後にのみ呼び出すことができます。

app.resolveProxy(url)

  • url URL

`Promise<string>` を返します - ユーティリティプロセスNet を使用してリクエストを試行するときに使用される `url` のプロキシ情報を解決します。

プロパティ

app.accessibilitySupportEnabled macOS Windows

`boolean` 型のプロパティです。Chrome のアクセシビリティサポートが有効になっている場合は `true`、そうでない場合は `false` になります。スクリーンリーダーなどの支援技術の使用が検出された場合、このプロパティは `true` になります。このプロパティを手動で `true` に設定すると、Chrome のアクセシビリティサポートが有効になり、開発者はアプリケーション設定でユーザーにアクセシビリティスイッチを公開できます。

詳細は、Chromium のアクセシビリティに関するドキュメントを参照してください。デフォルトでは無効になっています。

このAPIは、readyイベントが発行された後呼び出す必要があります。

注記: アクセシビリティツリーのレンダリングは、アプリのパフォーマンスに大きな影響を与える可能性があります。デフォルトで有効にするべきではありません。

app.applicationMenu

`Menu | null` 型のプロパティです。メニューが設定されている場合は Menu を返し、そうでない場合は `null` を返します。ユーザーは Menu を渡してこのプロパティを設定できます。

app.badgeCount Linux macOS

`Integer` 型のプロパティです。現在のアプリのバッジカウントを返します。カウントを `0` に設定すると、バッジは非表示になります。

macOS では、0 以外の整数に設定すると、Dock アイコンに表示されます。Linux では、このプロパティは Unity ランチャーでのみ機能します。

注記: Unityランチャーは動作に.desktopファイルが必要です。詳細については、Unity統合ドキュメントをご覧ください。

**注:** macOS では、このプロパティを有効にするには、アプリケーションに通知を表示する権限があることを確認する必要があります。

app.commandLine 読み取り専用

Chromium が使用するコマンドライン引数を閲覧および操作できる CommandLine オブジェクトです。

app.dock macOS 読み取り専用

macOS でユーザーの Dock にあるアプリアイコンで操作を実行できる Dock `| undefined` オブジェクトです。

app.isPackaged 読み取り専用

`boolean` 型のプロパティです。アプリがパッケージ化されている場合は `true`、そうでない場合は `false` を返します。多くのアプリでは、このプロパティを使用して開発環境と本番環境を区別できます。

app.name

`string` 型のプロパティです。アプリケーションの `package.json` ファイルの名前である、現在のアプリケーションの名前を示します。

通常、package.jsonnameフィールドは、npmモジュール仕様に従って短い小文字の名前です。通常はproductNameフィールドも指定する必要があります。これはアプリケーションの完全な大文字の名前で、Electronではnameよりも優先されます。

app.userAgentFallback

`string` 型です。Electron がグローバルなフォールバックとして使用するユーザーエージェント文字列です。

これは、`webContents` または `session` レベルでユーザーエージェントが設定されていない場合に使用されるユーザーエージェントです。アプリ全体で同じユーザーエージェントを使用することを保証するのに役立ちます。上書きした値が使用されるように、アプリの初期化でできるだけ早くカスタム値に設定してください。

app.runningUnderARM64Translation 読み取り専用 macOS Windows

`boolean` 型です。`true` の場合、アプリが現在 ARM64 トランスレーター(macOS の Rosetta トランスレーター環境 や Windows の WOW など)で実行されていることを示します。

このプロパティを使用して、ユーザーが誤って Rosetta または WOW で x64 バージョンを実行している場合に、arm64 バージョンのアプリケーションをダウンロードするように促すことができます。