プログラミングなんてわからないんですけど〜

元プログラマによるプライベートでのプログラミング日記。1/3のつもりだけどソフト関連はここがメイン

mastodonクライアントTheDeskをSurface Pro Xネイティブアプリにしてみる

Surface Pro Xを手に入れた経緯はこちらをご覧ください。

www.popnja.com

さて、そのSurface Pro XですがもちろんARMなCPUです。なんかよくわからんのですが、Win32なアプリはエミュレーションでx86版を動かすことができるということなので、今のところ多くのソフトを動かすことができます。
しかし、ネイティブアプリ使ってみたいじゃないですか。というわけで、TheDeskのビルドに挑戦してみました。

TheDeskは、mastodonクライアントのうちPCをターゲットにしたアプリです。

thedesk.top

まあ、普通に考えれば、Win32版のインストーラダウンロードして動かせばいいのです。動きます。でも面白くない(ぇ)。
で、ソースが公開されているのでビルドしてみます。ただし、今回いろいろ試行錯誤しているので、ビルドが成功する環境を再現できるかわかりません。
まず、ARM64ネイティブのnode.jsを動かしてみます。
このページから非公式版をたどってみました。
www.reddit.com

unofficial-builds.nodejs.org

node-v12.7.0-win-arm64.zipというファイルをダウンロードして展開します。展開したフォルダの中にある「install_tools.bat」を管理者権限で起動したコマンドプロンプトで実行すると、node.jsのネイティブビルドに必要な各種ファイルを順番にインストールしてくれます。ひとまずこれを実施しています。
これが終わったら、管理者権限ではなくても問題ないはずですがコマンドプロンプトで「nodevars.bat」を実行すると、環境変数に一時的にいろいろ設定して自分のホームフォルダに移動となります。

さあ、あとはビルドするだけと思ったのですが、この環境ではどこかのモジュールをうまく実行できてないのか失敗します。なので、win32版のnode.jsを次にインストールします。
nodejs.org

32ビット版windowsインストーラをダウンロードして実行してください。これでwin32のビルドができるようになります。
あとはTheDeskのGithubのレポジトリを見てビルドすれば・・・といいたいところですが、残念ながらARM64版のネイティブアプリをそのままでは作ることはできません。

github.com

gitはどうしたかなあ。インストールしたんかな?忘れました。必要に応じてインストールしてください。
まずは、一番最初のビルド前半部分です。

git clone https://github.com/cutls/TheDesk
cd TheDesk/app
npm install
npm install --only=dev
npm run construct

たぶんgitができれば後のところは普通に通るはずです。あ、ARM64版のNode.jsのnodevars.batは実行しちゃだめですよ。それ無しです。ここではx86のwin32版としてビルドします。

npm run build

これが通ればあと少しです。次にelectron-packagerをインストールします(多分必要)。

npm install electron-packager

ここからが本番。一度「app」フォルダから「TheDesk」フォルダに一段移動してから次のコマンドを実行します。

node app\node_modules\electron-packager\bin\electron-packager.js ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=arm64 --electron-version=8.0.0 --icon=.\app\build\thedesk.ico --overwrite

「--arch=arm64」が肝ですね。これを指定すれば、electronのARM版がダウンロードされパッケージされてexeファイルが作られます。

問題なく実行ファイルが作成されれば、「TheDesk-win32-arm64」というフォルダが「TheDesk」フォルダの下にできますので、そのフォルダに移動して「TheDesk.exe」を実行してください。
なお、初期設定がそのままうまくいくかわからないので、win32版で初期設定を済ませてからこっちの実行ファイルを動かすほうが楽です。

ネイティブアプリだと、「(32ビット)」の文字が消えます。
f:id:kaias1jp:20200518131145p:plain
f:id:kaias1jp:20200518131207p:plain

他のソース公開されているelectronアプリでも応用が利くかもしれないので、チャレンジしてみてください。