メインコンテンツへ飛ぶ

app

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

プロセス: Main

以下の例では最後のウインドウが閉じられたときにアプリケーションを終了する方法を示します。

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

イベント

app オブジェクトでは以下のイベントが発生します。

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

アプリケーションが基本的な起動処理を完了したときに発生します。 Windows と Linux上では、will-finish-launching イベントは ready イベントと同じです。macOS上では、このイベントはNSApplicationapplicationWillFinishLaunching 通知を表しています。 通常、ここでは、open-fileopen-url イベントのリスナーを設定したり、クラッシュレポーターや自動アップデーターを開始したりします。

ほとんどの場合、ready イベントハンドラーですべてのことを行うようにするべきです。

イベント: 'ready'

戻り値:

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

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

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

このイベントを購読せずに全てのウインドウを閉じた場合、既定の動作としてアプリは終了します。しかし、このイベントを購読している場合は、アプリを終了するかどうかを制御することができます。 ユーザが Cmd + Q を押下したり、開発者が app.quit() を呼び出したりした場合では、Electron はまず全てのウインドウを閉じようとして、その後に will-quit イベントを発生させます。しかし、この場合は window-all-closed イベントは発生しません。

イベント: 'before-quit'

戻り値:

  • event Event

アプリケーションがウィンドウを閉じ始める前に発生します。 event.preventDefault() を呼び出すことで、アプリケーションが終了する既定の動作を阻害できます。

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

注釈: Windows では、このイベントはシステムのシャットダウン/再起動やユーザーのログアウトでアプリケーションが閉じられようとしている場合には発生しません。

イベント: 'will-quit'

戻り値:

  • event Event

すべてのウィンドウが閉じられ、アプリが終了しようとしているときに発生します。 event.preventDefault() を呼び出すことで、アプリケーションが終了する既定の動作を阻害できます。

will-quitwindow-all-closed イベントの差異を確認するためには、window-all-closed イベントの説明もお読みください。

注釈: Windows では、このイベントはシステムのシャットダウン/再起動やユーザーのログアウトでアプリケーションが閉じられようとしている場合には発生しません。

イベント: 'quit'

戻り値:

  • event Event
  • exitCode Integer

アプリケーションが終了するときに発生します。

注釈: Windows では、このイベントはシステムのシャットダウン/再起動やユーザーのログアウトでアプリケーションが閉じられようとしている場合には発生しません。

イベント: 'open-file' macOS

戻り値:

  • event Event
  • path string

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

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

Windows では、ファイルパスを取得するために (メインプロセスの) process.argv をパースしなければなりません。

イベント: 'open-url' macOS

戻り値:

  • event Event
  • url string

ユーザがこのアプリケーションで URL を開こうとしたときに発生します。 アプリケーションの Info.plist ファイルで CFBundleURLTypes キーの中に URL スキームを定義し、NSPrincipalClassAtomApplication を設定しなければなりません。

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

イベント: 'activate' macOS

戻り値:

  • event Event
  • hasVisibleWindows boolean

アプリケーションがアクティブになったときに発生します。 アプリケーションが最初に起動される、既に実行中のときにアプリケーションを再起動しようとする、アプリケーションの Dock やタスクバーのアイコンをクリックするなど、いろいろなアクションがこのイベントの引き金となり得ます。

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

戻り値:

  • event Event

macOS のアプリケーションがアクティブになったときに発生します。 activateイベントとの違い: did-become-active が発生するのはアプリがアクティブになる度に発生します。Dock アイコンがクリックしたり、アプリが再起動したときだけではありません。

イベント: 'continue-activity' macOS

戻り値:

  • event Event
  • type string - アクティビティを識別する文字列。 NSUserActivity.activityType と対応しています。
  • userInfo unknown - 別のデバイスのアクティビティによって保存されたアプリ固有の情報が含まれています。
  • details Object
    • webpageURL string (任意) - 利用可能な場合、別デバイス上の操作でアクセスしたウェブページの URL を特定する文字列になります。

ハンドオフ 中に別のデバイスからのアクティビティを継続しようとしたときに発生します。 このイベントを処理する場合、event.preventDefault() を呼び出す必要があります。

ユーザのアクティビティはアクティビティ元のアプリと同一の開発者チームIDを持ち、アクティビティタイプをサポートするアプリでしか継続させることができません。 サポートされるアクティビティタイプは、アプリの Info.plistNSUserActivityTypes キーで指定されています。

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

戻り値:

ハンドオフ 中に別のデバイスからのアクティビティを継続しようとする前に発生します。 このイベントを処理する場合、event.preventDefault() を呼び出す必要があります。

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

戻り値:

  • event Event
  • type string - アクティビティを識別する文字列。 NSUserActivity.activityType と対応しています。
  • error string - エラーのローカライズされた説明としての文字列。

ハンドオフ 中に別のデバイスからのアクティビティを継続できなかったときに発生します。

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

戻り値:

  • event Event
  • type string - アクティビティを識別する文字列。 NSUserActivity.activityType と対応しています。
  • userInfo unknown - アクティビティによって保存されたアプリ固有の情報が含まれています。

ハンドオフ 中にこのデバイスからのアクティビティを他のデバイスで継続させることに成功した後で発生します。

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

戻り値:

  • event Event
  • type string - アクティビティを識別する文字列。 NSUserActivity.activityType と対応しています。
  • userInfo unknown - アクティビティによって保存されたアプリ固有の情報が含まれています。

ハンドオフ が別のデバイスでまさに継続されようとしているときに発生します。 送信される情報を更新する必要がある場合、event.preventDefault() をすぐに呼び出してください。そして、新しい userInfo ディクショナリを組み立てて、app.updateCurrentActivity() をタイミングよく呼び出してください。 さもなくば操作は失敗し、continue-activity-error が呼び出されます。

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

戻り値:

  • event Event

ユーザーが macOS ネイティブの新規タブボタンをクリックすると発生します。 新規タブボタンは現在の BrowserWindowtabbingIdentifier が設定されている場合にだけ表示されます。

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

戻り値:

browserWindow のフォーカスが外れたときに発生します。

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

戻り値:

browserWindow がフォーカスを得たときに発生します。

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

戻り値:

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

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

戻り値:

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

イベント: 'certificate-error'

戻り値:

  • event Event
  • webContents WebContents
  • url string
  • error string - エラーコード
  • certificate Certificate
  • callback Function
    • isTrusted boolean - 証明書を信頼できるものと見なすかどうか
  • isMainFrame boolean

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'

戻り値:

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

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 Event
  • webContents WebContents
  • authenticationResponseDetails Object
    • url URL
  • authInfo Object
    • isProxy boolean
    • scheme string
    • host string
    • port Integer
    • realm string
  • callback Function
    • username string (任意)
    • password string (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 情報の更新がある場合に発生します。

イベント: 'gpu-process-crashed' 非推奨

戻り値:

  • event Event
  • killed boolean

GPU プロセスがクラッシュしたり、強制終了されたりしたときに発生します。

非推奨: このイベントは child-process-gone イベント によって引き継がれます。このイベントには、子プロセスが失われた理由についての詳細情報が含まれています。 これはクラッシュした場合に限りません。 移植する場合は、Boolean 型の killed だと reason === 'killed' をチェックするように置き換えればできます。

イベント: 'renderer-process-crashed' Deprecated

戻り値:

webContents のレンダラープロセスがクラッシュ、または強制終了されたときに発行されます。

非推奨: このイベントは render-process-gone イベント によって引き継がれます。このイベントには、子プロセスが失われた理由についての詳細情報が含まれています。 これはクラッシュした場合に限りません。 移植する場合は、Boolean 型の killed だと reason === 'killed' をチェックするように置き換えればできます。

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

戻り値:

  • event Event
  • webContents WebContents
  • details Object
    • reason string - レンダープロセスがなくなった理由。 取りうる値:
      • clean-exit - 終了コードが0でプロセスが終了した
      • abnormal-exit - ゼロでない終了コードでプロセスを終了しました。
      • killed - プロセスへSIGTERMシグナルが送信されたか、その他の方法で殺されました。
      • crashed - プロセスがクラッシュした
      • oom - プロセスがメモリ不足になった
      • launch-failed - プロセスが正常に起動されなかった
      • integrity-failure - Windows コードの整合性チェックに失敗しました
    • exitCode Integer - プロセスの終了コードです。reasonlaunch-failed でなければ、exitCode はプラットフォーム固有の起動失敗のエラーコードになります。

renderer processが予期せず消えたときに発生します。 プロセスがクラッシュした場合やまたは殺された場合、これは正常です。

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

戻り値:

  • event Event
  • details Object
    • type string - プロセスの種別。 以下の値のいずれかです。
      • Utility
      • Zygote
      • Sandbox helper
      • GPU
      • Pepper Plugin
      • Pepper Plugin Broker
      • Unknown
    • reason string - 子プロセスがなくなった理由。 取りうる値:
      • clean-exit - 終了コードが0でプロセスが終了した
      • abnormal-exit - ゼロでない終了コードでプロセスを終了しました。
      • killed - プロセスへSIGTERMシグナルが送信されたか、その他の方法で殺されました。
      • crashed - プロセスがクラッシュした
      • oom - プロセスがメモリ不足になった
      • launch-failed - プロセスが正常に起動されなかった
      • integrity-failure - Windows コードの整合性チェックに失敗しました
    • exitCode number - プロセスの終了コード (例: posix の場合は waitpid からのステータス、Windowsの場合は GetExitCodeProcess) 。
    • serviceName string (任意) - そのプロセスのローカライズされていない名前。
    • name string (任意) - そのプロセスの名前。 ユーティリティの例: Audio Service, Content Decryption Module Service, Network Service, Video Captureなど

子 processが予期せず消えたときに発生します。 プロセスがクラッシュした場合やまたは殺された場合、これは正常です。 レンダラープロセスを含みません。

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

戻り値:

  • event 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 Event
  • argv string[] - 2 つ目のインスタンスのコマンドライン引数の配列
  • workingDirectory string - 2 つ目のインスタンスの作業ディレクトリ
  • additionalData unknown - 2 つ目のインスタンスから渡される追加データの JSON オブジェクト

このイベントは、2 つ目のインスタンスが実行され app.requestSingleInstanceLock() が実行されたとき、アプリケーションの1つ目のインスタンス内で発火されます。

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

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

このイベントは appready イベントが発生した後で実行されることが保証されます。

注意: Chromium が --original-process-start-time などのコマンドライン引数を追加することがあります。

メソッド

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

注: いくつかのメソッドは特定のオペレーティングシステムでのみ利用可能で、そのように注記がつけられています。

app.quit()

すべてのウインドウを閉じようとします。 before-quit イベントが最初に発生します。 すべてのウインドウを閉じることに成功した場合、will-quit イベントが発生し、既定ではアプリケーションは終了します。

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

app.exit([exitCode])

  • exitCode Integer (optional)

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

Returns Promise<void> - Electron が初期化されるときに実行される Promise。 app.isReady() を確認してアプリの準備がまだできていないときに ready イベントに登録するための、便利な代替手段として使用できます。

app.focus([options])

  • options Object (任意)
    • steal boolean macOS - 他のアプリがアクティブな状態でも、レシーバのアプリをアクティブにします。

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

できるだけ慎重に steal オプションを使用してください。

app.hide() macOS

最小化することなくアプリケーションのすべてのウインドウを非表示にします。

app.isHidden() macOS

Returns boolean - true if the application—including all of its windows—is hidden (e.g. with Command-H), false otherwise.

app.show() macOS

非表示にされたアプリケーションのウインドウを表示します。 自動的にフォーカスしません。

app.setAppLogsPath([path])

  • path string (任意) - ログのカスタムパス。 絶対パスでなければなりません。

アプリがロギングするディレクトリを設定または作成します。これは app.getPath()app.setPath(pathName, newPath) で操作できます。

path 引数なしで app.setAppLogsPath() を呼び出すと、このディレクトリは、macOS では ~/Library/Logs/アプリ名 に、LinuxWindows では userData ディレクトリ内に設定されます。

app.getAppPath()

戻り値 string - 現在のアプリケーションのディレクトリ。

app.getPath(name)

  • name string - 以下のパスを名前で要求することができます。
    • home ユーザのホームディレクトリ。
    • appData - 既定のユーザ毎のアプリケーションデータディレクトリ。
      • Windowsの場合、%APPDATA%
      • Linuxの場合、$XDG_CONFIG_HOME もしくは ~/.config
      • macOSの場合、~/Library/Application Support
    • userData The directory for storing your app's configuration files, which by default is the appData directory appended with your app's name. By convention files storing user data should be written to this directory, and it is not recommended to write large files here because some environments may backup this directory to cloud storage.
    • sessionData The directory for storing data generated by Session, such as localStorage, cookies, disk cache, downloaded dictionaries, network state, devtools files. By default this points to userData. Chromium may write very large disk cache here, so if your app does not rely on browser storage like localStorage or cookies to save user data, it is recommended to set this directory to other locations to avoid polluting the userData directory.
    • 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 string
  • 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 string

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 フォルダを同梱する必要があります。

注意: Windows では、ready のイベントが発生した後に呼び出してください。

app.getLocaleCountryCode()

戻り値 string - 2 文字の ISO 3166 国名コードで、ユーザーの OS のロケールを示します。 この値はネイティブの OS API から取得します。

注意: ロケールの国コードを取得できなかった場合、これは空文字列を返します。

app.addRecentDocument(path) macOS Windows

  • path string

path を最近使ったドキュメントのリストに追加します。

このリストは OS が管理します。 Windows の場合はタスクバーからリストにアクセスでき、macOS の場合は Dock メニューからリストにアクセスできます。

app.clearRecentDocuments() macOS Windows

最近使ったドキュメントのリストをクリアします。

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

  • protocol string - :// を除くプロトコルの名前。 例えば、アプリで electron:// リンクを処理したい場合、引数を electron にしてこのメソッドを呼び出してください。
  • path string (任意) Windows - Electron 実行形式へのパス。 省略値は process.execPath です。
  • args string[] (任意) Windows - 実行形式に渡す引数。 省略値は空の配列です。

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

このメソッドは現在の実行形式をプロトコル (または URI スキーム) の既定のハンドラーとして設定します。 これにより、アプリをオペレーティングシステムと密接に統合できます。 登録すると、プロトコル:// によるすべてのリンクは現在の実行形式で開かれるようになります。 プロトコルを含むリンク全体が、アプリケーションに引数として渡されます。

注: 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 string - :// を除くプロトコルの名前。
  • path string (任意) Windows - 省略値は process.execPath
  • args string[] (任意) Windows - 省略値は空の配列

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

このメソッドは、現在の実行ファイルがプロトコル (または URI スキーム) のデフォルトハンドラであるかどうかをチェックします。 その場合、既定のハンドラーからアプリを削除します。

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

  • protocol string - :// を除くプロトコルの名前。
  • path string (任意) Windows - 省略値は process.execPath
  • args string[] (任意) Windows - 省略値は空の配列

戻り値 boolean - 現在の実行形式がプロトコル (または URI スキーム) の既定のハンドラーかどうか。

注: macOSの場合、このメソッドは、アプリがプロトコルの既定のハンドラーとして登録されていたかをチェックするのに使えます。 macOSのマシン上の ~/Library/Preferences/com.apple.LaunchServices.plist を確認することでもこれを検証することができます。 詳細は Apple社のドキュメント を参照するようにしてください。

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

app.getApplicationNameForProtocol(url)

  • url string - 確認するプロトコル名が付いた URL。 類似の他メソッドとは異なり、少なくとも :// までを含む URL 全体を受け付けます (例: https://)。

戻り値 string - そのプロトコルを処理するアプリケーションの名前。ハンドラーがない場合は空の文字列です。 たとえば、Electron がその URL のデフォルトハンドラーである場合、Windows と Mac では Electron になります。 ただし、厳密な形式に依存しないでください。変更されている可能性があります。 Linux では、.desktop 接尾子を付けた別の形式が必要でしょう。

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

app.getApplicationInfoForProtocol(url) macOS Windows

  • url string - 確認するプロトコル名が付いた URL。 類似の他メソッドとは異なり、少なくとも :// までを含む URL 全体を受け付けます (例: https://)。

戻り値 Promise<Object> - 以下を含むオブジェクトで実行されます。

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

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

app.setUserTasks(tasks) Windows

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

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

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

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

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

app.getJumpListSettings() Windows

戻り値 Object:

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

app.setJumpList(categories) Windows

戻り値 string

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

  • ok - 正常。
  • error - 1つ以上のエラーが発生しました。何が原因かを把握するためには、実行時ログを有効にします。
  • invalidSeparatorError - ジャンプリストのカスタムカテゴリに区切りを追加しようとしました。 区切りは標準の タスク カテゴリでしか使用できません。
  • fileTypeRegistrationError - アプリが処理できると登録されていないファイルタイプのファイルリンクをジャンプリストに追加しようとしました。
  • customCategoryAccessDeniedError - ユーザープライバシーもしくはグループポリシー設定のため、ジャンプリストにカスタムカテゴリを追加できません。

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

注: JumpListCategory オブジェクトに type プロパティも name プロパティも設定されなかった場合、typetasks と見做されます。 name プロパティは設定されている一方で type プロパティが省略された場合、typecustom と見做されます。

注: ユーザはカスタムカテゴリからアイテムを削除できますが、Windows では次の app.setJumpList(categories) の呼び出しが成功した でないと、削除されたアイテムをカスタムカテゴリに追加し直すことができません。 それより早くカスタムカテゴリに削除されたアイテムを再度追加しようとすると、ジャンプリストからカスタムカテゴリ全体が外れてしまいます。 削除されたアイテムのリストは、app.getJumpListSettings() を使って取得できます。

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

カスタムジャンプリストを作成する非常に簡単な例は以下の通りです。

const { app } = require('electron')

app.setJumpList([
{
type: 'custom',
name: '最近開いたプロジェクト',
items: [
{ type: 'file', path: 'C:\\Projects\\project1.proj' },
{ type: 'file', path: 'C:\\Projects\\project2.proj' }
]
},
{ // 名前があるため `type` は "custom" になります
name: 'ツール',
items: [
{
type: 'task',
title: 'ツール A',
program: process.execPath,
args: '--run-tool-a',
icon: process.execPath,
iconIndex: 0,
description: 'ツール A を実行する'
},
{
type: 'task',
title: 'ツール B',
program: process.execPath,
args: '--run-tool-b',
icon: process.execPath,
iconIndex: 0,
description: 'ツール B を実行する'
}
]
},
{ type: 'frequent' },
{ // 名前がないため `type` は "tasks" になります
items: [
{
type: 'task',
title: '新規プロジェクト',
program: process.execPath,
args: '--new-project',
description: '新規プロジェクトを作成します。'
},
{ type: 'separator' },
{
type: 'task',
title: 'プロジェクトの復元',
program: process.execPath,
args: '--recover-project',
description: 'プロジェクトを復元します。'
}
]
}
])

app.requestSingleInstanceLock([additionalData])

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

戻り値 boolean

このメソッドの戻り値は、アプリケーションのこのインスタンスのロックが成功したかどうかを表します。 ロック状態にできなかった場合、アプリケーションの他のインスタンスが既にロックされており、ただちに終了すると想定できます。

つまり、 このメソッドは、プロセスがアプリケーションの 1 つ目のインスタンスで、アプリがロード処理を続行する必要がある場合に true を返します。 既にロック状態にしたものとは別のインスタンスにパラメータを送信したためプロセスが直ちに終了する必要がある場合は、false を返します。

macOSの場合、ユーザがFinderでアプリの2番目のインスタンスを開こうとしたとき、システムは自動的にシングルインスタンスになるようにし、open-fileopen-url イベントが発生します。 ただし、ユーザがアプリをコマンドラインで開始する場合、シングルインスタンスを強制するシステムの仕組みが迂回されるため、シングルインスタンスであることを保証するには、このメソッドを使う必要があります。

以下は、2つ目のインスタンスが開始されたときに1つ目のインスタンスのウインドウをアクティブにする例です。

const { app } = 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()
}
})

// myWindow を作成したり、アプリの残りをロードしたり、...
app.whenReady().then(() => {
myWindow = createWindow()
})
}

app.hasSingleInstanceLock()

戻り値 boolean

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

app.releaseSingleInstanceLock()

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

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

  • type string - アクティビティを一意に識別します。 NSUserActivity.activityType と対応しています。
  • userInfo any - 別のデバイスで使用するために保存されたアプリ固有の情報。
  • webpageURL string (任意) - 継続されたデバイスに適切なアプリがインストールされていない場合にブラウザで読み込もうとしたウェブページ。 スキームは http もしくは https でなければなりません。

NSUserActivity を作成し、現在のアクティビティとして設定します。 そのアクティビティは後に別のデバイスでの ハンドオフ に適用されます。

app.getCurrentActivityType() macOS

戻り値 string - 現在実行されているアクティビティのタイプ。

app.invalidateCurrentActivity() macOS

現在の ハンドオフ ユーザアクティビティを無効にします。

app.resignCurrentActivity() macOS

現在の ハンドオフ ユーザーアクティビティを、無効にせずに不活性化します。

app.updateCurrentActivity(type, userInfo) macOS

  • type string - アクティビティを一意に識別します。 NSUserActivity.activityType と対応しています。
  • userInfo any - 別のデバイスで使用するために保存されたアプリ固有の情報。

タイプが type と一致した場合、現在のアクティビティを更新し、現在の userInfo ディスクショナリに userInfo のエントリを統合します。

app.setAppUserModelId(id) Windows

  • id string

アプリケーションユーザモデル IDid に変更します。

app.setActivationPolicy(policy) macOS

  • policy string - 'regular', 'accessory', 'formited' のいずれか。

アプリのアクティベーションポリシーを設定します。

アクティベーションポリシーの種類は以下のとおりです。

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

app.importCertificate(options, callback) Linux

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

プラットフォームの証明書ストアにPACS#12形式で証明書をインポートします。 インポート操作の resultcallback が呼び出されます。0 という値は成功を意味しますが、その他の値はChromium の net_error_list の通り、失敗を意味します。

app.configureHostResolver(options)

  • options Object
    • enableBuiltInResolver boolean (任意) - getaddrinfo ではなく組み込みのホストリゾルバを使用するかどうか。 有効にすると、組み込みリゾルバはシステムの DNS 設定を使用し、単体で DNS ルックアップを実行しようとします。 macOS ではデフォルトで有効、Windows と Linux ではデフォルトで無効になっています。
    • secureDnsMode string (任意) - "off"、"automatic"、"secure" のいずれかにできます。 DNS-over-HTTP モードを設定します。 "off" の場合、DoH ルックアップは行われません。 "automatic" の場合、DoH が利用可能であれば DoH ルックアップが最初に実行され、安全でない DNS 検索がフォールバックとして実行されます。 "secure" の場合、DoH ルックアップのみが行われます。 既定値は "automatic" です。
    • secureDnsServers string[] (任意) - DNS-over-HTTP サーバのテンプレートのリスト。 テンプレートのフォーマットについては、RFC8484 § 3 をご参照ください。 ほとんどのサーバーは POST メソッドをサポートしており、そういったサーバーのテンプレートは単なる URI です。 なお、一部のDNSプロバイダ では、このリストに DoH サーバーが提供されていなくても、DoH が明示的に無効化されていない限りリゾルバを自動的に DoH へアップグレードします。
    • enableAdditionalDnsQueryTypes boolean (任意) - 安全でない DNS 経由でリクエストが行われた場合に、従来の A および AAAA のクエリに加えて HTTPS (DNS タイプ 65) などの追加の DNS クエリタイプを許可するかどうかを制御します。 追加タイプを常に許可するセキュア DNS には影響しません。 省略値は true です。

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

  1. DNS-over-HTTPS、DNS プロバイダがサポートしている 場合
  2. 組み込みリゾルバ (macOS のみデフォルトで有効)
  3. システムのリゾルバ (getaddrinfo など)

これは、暗号化されていない DNS の使用を制限する (secureDnsMode: "secure") か、DNS-over-HTTPS を無効にする (secureDnsMode: "off") ように設定できます。 また、組み込みリゾルバの有効化または無効化もできます。

安全でない DNS を無効にするには、 secureDnsMode"secure" を指定します。 その場合、ユーザーの DNS 設定に DoH をサポートするプロバイダが無い場合に備えて、使用する DNS-over-HTTPS サーバのリストを提供しなければなりません。

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/ から取得したグラフィックス機能のステータス。

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

app.getGPUInfo(infoType)

  • infoType string - basiccomplete にできます。

戻り値 Promise<unknown>

infoTypecomplete に等しい場合、Promise は Chromium の GPUInfo オブジェクト 内におけるすべてのGPU情報を含んだ Object で解決されます。 これには chrome://gpu ページ上で表示されるバージョンとドライバ情報が含まれます。

infoTypebasic に等しい場合、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'
}

vendorIddriverId のような基本的な情報だけ必要であれば、basic を用いることが好ましいです。

app.setBadgeCount([count]) Linux macOS

  • count Integer (任意) - 値が指定されている場合は、指定された値のバッジを設定します。そうでない場合、macOS では無地の白点 (通知数不明などの意味) を表示します。 Linux で値を指定しない場合、バッジは表示されません。

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

現在のアプリのカウンターバッジを設定します。 カウントを 0 に設定すると、バッジを非表示にします。

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

注意: Unity ランチャーは動作にあたって .desktop ファイルを必要とします。 詳しい情報は、Unity 統合ドキュメント をご覧ください。

app.getBadgeCount() Linux macOS

戻り値 Integer - カウンターバッジに表示されている現在の値。

app.isUnityRunning() Linux

戻り値 boolean - 現在のデスクトップ環境がUnityランチャーであるかどうか。

app.getLoginItemSettings([options]) macOS Windows

  • options Object (任意)
    • path string (任意) Windows - 比較対象となる実行パス。 省略値は process.execPath です。
    • args string[] (任意) Windows - 比較するコマンドライン引数。 省略値は空の配列です。

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

戻り値 Object:

  • openAtLogin boolean - アプリがログイン時に開くように設定されている場合、true
  • openAsHidden boolean macOS - アプリがログイン時に隠して開くように設定されている場合 true です。 この設定は MAS ビルド では利用できません。
  • wasOpenedAtLogin boolean macOS - アプリがログイン時に自動的に開かれた場合 true です。 この設定は MAS ビルド では利用できません。
  • wasOpenedAsHidden boolean macOS - アプリが非表示のログイン項目として開かれていた場合 true です。 これは、アプリが起動時に何もウインドウを開いてはいけないことを示します。 この設定は MAS ビルド では利用できません。
  • restoreState boolean macOS - 以前のセッションから状態を復元する必要があるログイン項目としてアプリを開いた場合 true です。 アプリが最後に閉じたとき開いていたウインドウをアプリが復元する必要があることを示します。 この設定は MAS ビルド では利用できません。
  • executableWillLaunchAtLogin boolean Windows - true アプリはログイン時に開くように設定されており、その実行キーが無効化されていない場合。 openAtLoginargs オプションを無視する点が異なっています。与えられた実行ファイルがログイン時なんらかの引数が与えれた場合にこのプロパティは 真 になります。
  • launchItems Object[] Windows
    • name string Windows - レジストリエントリの名前の値。
    • path string Windows - レジストリエントリに対応するアプリの実行可能ファイル。
    • args string[] (任意) Windows - 実行ファイルに渡すコマンドライン引数。
    • scope string Windows - user または machine のどちらか。 レジストリエントリが HKEY_CURRENT USER または HKEY_LOCAL_MACHINE の下にあるかどうかを示します。
    • enabled boolean Windows - 次の場合trueになります。アプリレジストリキーが承認されているため、タスクマネージャと Windows 設定で enabled として表示されている場合。

app.setLoginItemSettings(settings) macOS Windows

  • settings Object
    • openAtLogin boolean (任意) - アプリをログイン時に開く場合は true、ログイン項目からアプリを外す場合は false にします。 省略値は false
    • openAsHidden boolean (任意) macOS - アプリを非表示で開く場合 true にします。 省略値は false です。 ユーザはこの設定をシステム環境設定から変更することができるので、現在の値を取得するために app.getLoginItemSettings().wasOpenedAsHidden をアプリが開かれたときに確認するようにしてください。 この設定は MAS ビルド では利用できません。
    • path string (任意) Windows - ログイン時に起動する実行形式。 省略値は process.execPath です。
    • args string[] (任意) Windows - 実行ファイルに渡すコマンドライン引数。 省略値は空の配列です。 パスはテンプレート文字列にするようにしましょう。
    • enabled boolean (任意) Windows - true の場合、スタートアップが承認したレジストリキーを変更し、 タスクマネージャと Windows 設定で アプリを有効/無効にします。 省略値は true です。
    • name string (任意) Windows - レジストリに書きこむ値の名前。 デフォルトはアプリの AppUserModelId() です。 アプリのログイン項目設定を設定します。

Windows 上で Electron の autoUpdaterSquirrel を使って動かす場合、起動パスを Update.exe に設定し、渡す引数にアプリケーション名を指定してください。 以下がその例です。

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"`
]
})

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

アプリの About パネルを表示します。 このオプションは app.setAboutPanelOptions(options)で上書きできます。

app.setAboutPanelOptions(options)

  • options Object
    • applicationName string (任意) - アプリの名前。
    • applicationVersion string (任意) - アプリのバージョン。
    • copyright string (任意) - 著作権情報。
    • version string (任意) macOS - アプリのビルドバージョン番号。
    • credits string (任意) macOS Windows - クレジット情報。
    • authors string[] (任意) Linux - アプリの作者のリスト。
    • website string (任意) Linux - アプリのウェブサイト。
    • iconPath string (任意) Linux Windows - JPEGまたはPNGフォーッマットの、アプリのアイコンへのパス。 Linux で、アスペクト比を保ったまま 64×64 ピクセルで表示されます。

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

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

戻り値 Function - セキュリティスコープ付きファイルへのアクセスが終了すれば、この関数の呼び出しを しなければなりません。 ブックマークへのアクセスを忘れた場合は、カーネルリソースがリークします。アプリが再起動されるまで、サンドボックスの外部にアクセスする権限は失われます。

// ファイルアクセス開始
const stopAccessingSecurityScopedResource = app.startAccessingSecurityScopedResource(data)
// サンドボックス外のファイルにアクセスできるようになりました 🎉

// ファイルへのアクセスが終わったらアクセス停止を忘れずに。
stopAccessingSecurityScopedResource()

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

app.enableSandbox()

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

このメソッドはアプリが ready になる前だけでしか呼び出すことができません。

app.isInApplicationsFolder() macOS

戻り値 boolean - アプリケーションが現在、システムのアプリケーションフォルダから実行されているかどうか。 app.moveToApplicationsFolder() と組み合わせて使ってください。

app.moveToApplicationsFolder([options]) macOS

  • options Object (任意)
    • conflictHandler Function\<boolean> (任意) - 移動失敗時の潜在的な競合のハンドラー。
      • conflictType string - ハンドラーが遭遇した移動で起こった競合の種類。existsexistsAndRunning になります。exists は同じ名前のアプリがアプリケーションディレクトリに存在し、existsAndRunning は存在し且つ現在実行されていることを意味します。

戻り値 boolean - 移動が成功したかどうか。 移動が成功した場合、アプリケーションは終了し、再起動されることに注意してください。

デフォルトでは確認ダイアログは表示されません。 ユーザに操作の確認をさせたい場合は、dialog API で実現できます。

注意: このメソッドはユーザ以外が移動の失敗を引き起こした場合にもエラーを送出します。 例えば、ユーザが承認ダイアログをキャンセルした場合、このメソッドは false を返します。 コピーの実行に失敗した場合、このメソッドはエラーをスローします。 エラーのメッセージは意味の分かるものにする必要があり、何が間違っているのかを正確に知らせるようにしてください。

既定では、移動するアプリと同じ名前のアプリがアプリケーションディレクトリに存在し実行されて いない 場合、既存のアプリはゴミ箱に移動され、新たなアプリがその場所に移動します。 実行されている 場合、既存の実行中のアプリはフォーカスを引き継ぎ、新たなアプリは自動的に終了します。 この挙動は、オプションの競合ハンドラを提供することで変更できます。この場合、ハンドラによって返されるブール値によって、移動の競合がデフォルトの動作で解決されるかどうかを決定します。 つまり、false を返すとそれ以上のアクションは行われなくなります。true を返すとデフォルトの動作になり、メソッドが続行されます。

以下がその例です。

app.moveToApplicationsFolder({
conflictHandler: (conflictType) => {
if (conflictType === 'exists') {
return dialog.showMessageBoxSync({
type: 'question',
buttons: ['移動を中止', '移動を続行'],
defaultId: 0,
message: 'この名前のアプリはすでに存在します'
}) === 1
}
}
})

そのユーザーディレクトリにアプリが既に存在する場合、ユーザーが '移動を続行' を選択すると、関数は既定の動作を続行し、既存のアプリは破棄され、新たなアプリはその場所に移動します。

app.isSecureKeyboardEntryEnabled() macOS

戻り値 boolean - キーボード入力のセキュリティを保護 が有効になっているかどうか。

この API は既定で false を返します。

app.setSecureKeyboardEntryEnabled(enabled) macOS

  • enabled boolean - キーボード入力のセキュリティを保護 を有効にするかどうか

アプリケーションの キーボード入力のセキュリティを保護 の有効化を設定します。

この API を利用すると、パスワードなどの重要な情報や機密情報を他のプロセスの傍受から防げます。

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

注意: キーボード入力のセキュリティを保護 は必要なときにのみ有効にし、不要なときには無効にしてください。

プロパティ

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 では、ゼロ以外の整数を設定すると、ドックアイコンに表示されます。 Linux では Unity ランチャーでのみ動作します。

注意: Unity ランチャーは動作にあたって .desktop ファイルを必要とします。 詳しい情報は、Unity 統合ドキュメント をご覧ください。

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

app.commandLine 読み出し専用

CommandLine オブジェクトです。Chromium が使用するコマンドライン引数の読み取りと操作ができます。

app.dock macOS Readonly

Dock | undefined 型のオブジェクトです。macOS のユーザーの Dock 内のアプリアイコンにおけるアクションを実行できます。

app.isPackaged 読み出し専用

アプリがパッケージされている場合はtrue、それ以外は false を返す boolean プロパティ。 多くのアプリケーションでは、このプロパティを用いて開発版の環境と製品版の環境を区別できます。

app.name

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

通常、package.jsonname フィールドは、npm のモジュール仕様に基づいて小文字だけの短い名前が設定されます。 通常、すべて大文字で始まるアプリケーションの名前となる productName フィールドも指定してください。Electronによって、name よりも優先されます。

app.userAgentFallback

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

これは、webContents または session レベルでユーザーエージェントが設定されていない場合に使用されるユーザーエージェントです。 アプリ全体が同じユーザーエージェントを持っていることを確認するのに役立ちます。 オーバーライドされた値が確実に使用されるように、アプリの初期化のできるだけ早い段階でカスタム値に設定してください。

app.runningUnderRosettaTranslation macOS Readonly Deprecated

boolean 型で、true の場合アプリが Rosetta 変換環境 下で動作していることを示します。

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

非推奨: このプロパティは runningUnderARM64Translation プロパティに置き換えられます。こちらは macOS と Windows の両方でアプリを ARM64 に変換したかどうかを検出します。

app.runningUnderARM64Translation Readonly macOS Windows

boolean 型で、trueの場合はアプリが現在 ARM64 変換機 (macOS の Rosetta 変換環境 や Windows の WOW など) で動作していることを示します。

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