Electron + node.jsで作成したアプリで永続化する(Windows)

Electron + node.jsで作成したアプリで永続化する(Windows)

Windowsアプリの設定をどこかに永続化したい場合、electron-storeをインストールして永続化することが出来ます。

例えばWindowsの終了時の縦横のサイズを次回起動時覚えておきたい、という場合です。

このような情報を永続化する場合にはelectron-storeをインストールします。

npm i --save electron-store

メインプロセス(main.js)の先頭で以下2行を書いておきます。

const Store = require('electron-store')
const store = new Store()

永続化

永続化するには

store.set('キー',保存したい値)

とします。これで、store.pathにconfig.jsonファイルが作成され、JSON形式で保存されます。

config.jsonの場所は、C:\Users\<ユーザ名>\AppData\Roaming\<プロジェクト名>\config.jsonです。

永続化した値を取得

永続化した値を取得するには

store.get('キー',デフォルト値)

とします。キーに一致する値がない場合、第二引数のデフォルト値となります。

enableRemoteModule: true

Electron v10以降で永続化する場合、BrowserWindowにenableRemoteModule: trueを設定しておかないと永続化することが出来ません。

BrowserWindowインスタンスのcloseでウィンドウズ終了時に高さと幅を保存し、ウィンドウズのインスタンス生成時に高さと幅をstoreから取得するようにすればウィンドウサイズを記憶できるようになります。

const Store = require('electron-store')
const store = new Store()
function createWindow () {
  const win = new BrowserWindow({
    width: store.get('width',800), // 永続化されていたらその値を、されていなければデフォルト値
    height: store.get('height',600), // 永続化されていたらその値を、されていなければデフォルト値
    center: true,
    resizable: true,
    webPreferences: {
      nodeIntegration: true,
      enableRemoteModule: true, // 永続化
    }
  })
  win.on('close',()=> {
    store.set('width', win.getSize()[0]) // widthを永続化
    store.set('height', win.getSize()[1]) // heightを永続化
  })
}

次回は通知について実装してみたいと思います。

コメント

タイトルとURLをコピーしました