schedule2021-08-28

electron-builderとnsisでインストーラにスタートアップのチェックボタンを付ける

electonのアプリをビルドするためにelectron-builderを利用しています。 Windows版のインストーラの作成はNSISというスクリプト型のインストールシステムで作ります。

インストーラにスタートアップのチェックボタンを付けて、チェックがあればアプリをスタートアップに登録するスクリプトを作りました。

前の記事のelectron-builderとnsisでWindowsアプリのインストーラの設定まとめ - suzu6.netにNSISについてまとめました。

electron-builderの設定

# Modern UIをインクルードする
!include MUI2.nsh

!ifndef BUILD_UNINSTALLER
  # ②チェックボタンがチェックされた時の関数
  Function AddToStartup
    # ③スタートアップにショートカットを作成
    CreateShortCut "$SMSTARTUP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe" ""
  FunctionEnd

  # ①インストーラの最終ページにチェックボタンをつける
  !define MUI_FINISHPAGE_SHOWREADME
  !define MUI_FINISHPAGE_SHOWREADME_TEXT "スタートアップに登録する"
  !define MUI_FINISHPAGE_SHOWREADME_FUNCTION AddToStartup
!endif
!macro customUnInstall
  # ④アンインストール時にスタートアップのショートカットを削除する
  Delete "$SMSTARTUP\${PRODUCT_NAME}.lnk"
!macroend

処理の説明です。

  1. インストーラの最終ページにチェックボタンをつける MUI_FINISHPAGEがインストーラの最後のfinishがあるページのことです。ここにチェックボタンを付けます。
  2. チェックボタンがチェックされた時の関数 MUI_FINISHPAGE_SHOWREADME_FUNCTIONで呼び出した関数を定義しています。
  3. スタートアップにショートカットを作成 CreateShortCutでショートカットを作成します。$SMSTARTUPがスタートアップのフォルダパス、$INSTDIRがインストール先のフォルダパスです。
  4. アンインストール時にスタートアップのショートカットを削除する

package.jsonbuild.productNameに設定したアプリ名をとることができます。 build.productNamebuild.nameとは違って日本語でアプリ名を定義できます。

参考