古いバージョンのElectronで作られたアプリのElectronライブラリを更新する

Electron製アプリのElectronのバージョンがだいぶ古くなったので更新してみる。

https://github.com/taku-o/myukkurivoice



Electronのバージョンを上げても、特に機能が増えたりしないのがツライところだが。

後になるほど、更新作業の量が増えたり、インターネット上の資料が参考にならなくなったりするので、

適度に更新していくべきではあるだろう。


まず現在使用中のバージョンを確認する!

バージョンを確かめるにはnpm outdatedコマンドで。

npm outdated -g
> Package            Current  Wanted  Latest  Location
> electron            1.4.12   1.7.9   1.7.9
> electron-packager    8.4.0   9.1.0   9.1.0
> electron-prebuilt   1.4.12  1.4.13  1.4.13
> node-gyp             3.4.0   3.6.2   3.6.2
> npm                 3.10.9   5.5.1   5.5.1



順番に更新していく

update nvm
cd ~/.nvm
git fetch
git pull origin master
source ~/.nvm/nvm.sh
nvm --version



update node

どのバージョンに更新すべきかは、electronの .node-version見れば良いのだろうか。

nvm ls-remote
nvm install v8.2.1
nvm use v8.2.1



update npm
npm update -g npm
npm outdated -g



electron

electronも入れ直しになる。

今回の作業にあたり、下調べしたらelectron-prebuiltとか無くなったらしい?

あと、インストールドキュメントではelectronをローカルにインストールするように書かれていたが、グローバルに入れてしまう。

npm install -g electron
npm install -g electron-packager



node modules

アプリで使用していたライブラリも、electronのremoteあたりの書き方が変わったりして

そのままでは動かなくなったりしている。

面倒だから全部installコマンドで更新してしまう。

npm install --save https://github.com/connors/photon
npm install --save angular
npm install --save angular-input-highlight
npm install --save electron-json-storage
npm install --save electron-config
npm install --save electron-log
npm install --save electron-localshortcut
npm install --save ref
npm install --save ffi
npm install --save intro.js
npm install --save temp
npm install --save wave-recorder
npm install --save tunajs



electron-localshortcutのパラメータ修正

electron-localshortcutというnode modulesを使用していたが、

過去に使用していたバージョンと、最新バージョンで、ファンクションのパラメータの渡し方が違っていた。

ソースコードを書き換える。

- var r = localShortcut.register('Command+Q', function() {
+ var r = localShortcut.register(mainWindow, 'Command+Q', function() {
    app.quit();
});



photonkitのアイコン置き換え

icon-docsというアイコンが表示されなくなってしまった。

原因追うの面倒だから、別のアイコンに置き換えて対応終わり。

これが遊びと仕事の違いである。てきとー。



npm rebuild

使っているModuleのバージョンと、使おうとしているModuleのバージョンが違うぞ、と怒られる。

表示メッセージを記録していなかったのは致命的なミスである。

Module version mismatch.とか、bindins.jsとか、その辺のメッセージが表示されていたと思う。

Electronのバージョンと、モジュールのバージョンを指定して、npm rebuildすると良い。

electron --version
> v1.7.9
npm rebuild --runtime=electron --target=1.7.9 --disturl=https://atom.io/download/atom-shell --abi=54



これで完了!

ひとまずこれで動作したが、しばらく様子見は必要かな。