2023-03-11  NSIS

NSIS 常駐プログラム対応

インストラー NSIS を使う

 自作ソフトウエアのインストーラーを作るのに NSIS を使います。
 PC 起動時に常駐するプログラムのインストーラーは 以下の2つ対応が必要です。
  スタートアップにリンクを作成する
  アンインストール時に常駐プログラムを終了してアンインストールする

NSIS plugin nProcess を使う

  • nsProcess.zip をダウンロード

    https://nsis.sourceforge.io/NsProcess_plugin/

    から Download v1.6 (NSIS UNICODE support)の
    nsProcess.zip(14KB) をダウンロードして nsProcess plugin をインストールします。

  • nsProcess.zip を解凍

    plugin/nsProcess.dll NSIS インストールフォルダ/plugins/x86-ansi
    plugin/nsProcessW.dll NSIS インストールフォルダ/plugins/x86-unicode
    コピーします。

  • 次に、unicode版dll を名前を変更します。

    NSIS インストールフォルダ/plugins/x86-unicode/nsProcessW.dll

    NSIS インストールフォルダ/plugins/x86-unicode/nsProcess.dll

これで NSIS plugin が準備できました。

nsi を常駐プログラムに対応する

  • インストール Section


      # スタートアップフォルダにアイコンを作成
    CreateShortcut "$$SMPROGRAMS¥clipsnippets.lnk" "$INSTDIR¥clipsnippets.exe" ""
  

を追加します。

  • アンインストール Section


    !include "LogicLib.nsh"

    # アンインストーラ
    Section "Uninstall"
      # アンインストーラを削除
      Delete "$INSTDIR¥Uninstall.exe"
      # 常駐プログラムを終了

      StrCpy $1 "clipsnippets.exe"
      nsProcess::_FindProcess "$1"
      Pop $R0
      ${If} $R0 = 0
        nsProcess::_KillProcess "$1"
        Pop $R0
        Sleep 500
      ${EndIf}

      Delete "$INSTDIR¥clipsnippets.exe"
      # サブディレクトリ毎ディレクトリを削除
      RMDir /r "$INSTDIR"
      # スタート メニューから削除
      Delete "$SMPROGRAMS¥clipsnippets.lnk"
      # スタートアップのショートカットを削除する
      Delete "$SMSTARTUP¥clipsnippets.lnk"
      # レジストリ キーを削除
      DeleteRegKey HKLM "Software¥Microsoft¥Windows¥CurrentVersion¥Uninstall¥clipsnippets"
    SectionEnd
  

 実行中のプログラムを終了してから アンインストールする様に修正します。

サンプルダウンロード

サンプル install.nsi 
ダウンロード 

最終更新日 2023-04-21
この記事を共有しませんか?
ブックマーク