Nullsoft Scriptable Install System

Nullsoft Scriptable Install System
NSISツールのメインメニュー
開発元 Nullsoft
最新版
3.10 / 2024年3月30日 (7か月前) (2024-03-30)
リポジトリ ウィキデータを編集
プログラミング
言語
C言語C++
対応OS Windows, POSIX
種別 プログラミングツールインストーラ構築ツール)
ライセンス zlib License
公式サイト nsis.sf.net
テンプレートを表示

Nullsoft Scriptable Install System (NSIS) は、スクリプト駆動型のWindowsインストールシステム。Winampの開発元であるNullsoftがオリジナルを開発した。InstallShieldのような商用プロプライエタリ製品の代替として広く採用されるようになってきている。

NSISはいくつかのフリーソフトウェアライセンスでリリースされており、主なライセンスとしてzlib Licenseを採用している。したがって、フリーソフトウェアである[1]

歴史

[編集]

NSISはWinampの配布のために開発された。Nullsoftが以前に開発したPiMP (Plugin Mini Packager) をベースにしており、SuperPiMP と呼ばれることもある。バージョン2.0a0以降SourceForgeにプロジェクトを移行し、Nullsoft以外の開発者がプロジェクトに普通に関与できるようになった。NSIS 2.0 が実際にリリースされたのはそれから約2年後である。

NSISバージョン1はいろんな意味でWindows Installerに似通っていたが、スクリプトが書きやすく、より多数の圧縮フォーマットをサポートしていた。NSISバージョン2は効率的なGUIで、LZMA圧縮、各種言語、使いやすいプラグインシステムをサポートしている。

POSIX

[編集]

バージョン2.01では、初めてPOSIXプラットフォームでのコンパイルが可能になった。これにより、Wineなどを使わなくともLinuxFreeBSDWindows用インストーラのクロスコンパイルが可能となっている。今のところ、x86だけをサポートしている。

コンセプト

[編集]

スクリプト

[編集]

NSISコンパイラプログラム makensis は、次の例のようなスクリプトをコンパイルしインストーラの実行ファイルを作成する。スクリプトの各行には1つのコマンドが書かれている。

# スクリプト例
Name "Example1"
OutFile "example1.exe"
InstallDir "$PROGRAMFILES\Example1"
Page Directory
Page InstFiles
Section
  SetOutPath $INSTDIR
  File ..\makensis.exe
SectionEnd

ユーザインタフェース

[編集]

バージョン2.0で新たに Modern UI (MUI) と呼ばれるGUIを導入した。MUIはウィザード風インタフェースを持っている。ウェルカムページ、完了ページ、言語選択ダイアログ、コンポーネントの説明エリア、従来よりも幅広いカスタマイズオプションなどをサポートしている。

# Modern UI のスクリプト例
!include MUI.nsh
Name "Example 2"
OutFile "Example2.exe"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "license.rtf"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "German"
!insertmacro MUI_LANGUAGE "French"
Section "Extract makensis"
  SetOutPath $INSTDIR
  File ..\makensis.exe
SectionEnd

プラグイン

[編集]

NSISは、インストーラとやり取りできるプラグインで拡張可能である。プラグインはC言語C++Delphiで書くことができ、インストール時の各種タスクを実行したり、インストーラのインタフェースを拡張したりする。プラグインはNSISのスクリプトから1行で呼び出すことができる。

NSISパッケージにはいくつかのプラグインも含まれており、スプラッシュスクリーンの表示、特別なページの表示、背景に画像を表示する、ウェブサイトからのファイルのダウンロード、何らかの計算を行うもの、ファイルへのパッチ適用などのプラグインがある。

その他のプラグインはオンラインで入手可能で、ZipDLLPythonプラグインなどがある。

特徴

[編集]

NSISを使っている主な製品

[編集]

GUI

[編集]

NSISプロジェクトはテキストファイルの編集だけで構成できるが、いくつかのサードパーティー製編集ソフトウェアもある。

  • EclipseNSIS - Eclipseプラットフォーム用モジュール。NSISスクリプトの編集、コンパイル、検証が可能。
  • HM NIS Edit

インストーラ用インタフェース

[編集]

Modern UIを拡張・置換する新たなインタフェースを開発するプロジェクト群が始まっている。ExperienceUIUltraModernUIといったインタフェースは、InstallShield風の見た目を採用している。InstallSpiderUIは見た目をより簡潔にしているが、機能的にはModern UIと同等である。

生成インストーラ

[編集]

生成したインストーラは1つのPortable Executableとなり、インストール対象ファイル群はそのインストーラにアーカイブされている。NSISインストーラ自体は34KBのオーバーヘッドであり[3]、スクリプトは実行ファイルのコードにコンパイルされている。スクリプトがコンパイルされるため、インストーラから元のスクリプトを簡単に取り出すことはできず、リバースエンジニアリングが必要になる。

アーカイブされたインストール対象ファイル群を取り出す場合は、7-ZipTotal Commander のプラグイン "InstallExplorer"、FAR Manager 用の同名の前身が使える可能性がある。

アーカイブには以下のようなフォルダがある。

  • $PLUGINSDIR : インストールルーチン用プラグイン群
  • $INSTDIR : インストール中に使うファイル群
  • $_OUTDIR : インストール対象ファイル群

Unicodeサポート

[編集]

NSISの公式リリースではUnicodeをサポートしていないが、Jim Park がUnicodeサポート版NSISを開発・保守している。

NSIS Media というマルウェア

[編集]

NSIS Mediaというマルウェア企業が広く知られている。NSIS MediaとNSISは名前が似ているだけで全く無関係である。このため、NSISを使ったインストーラには必ずマルウェアが含まれていると思っている人もいる[要出典]。インストーラが何であれ、インターネットからのダウンロードには常に注意が必要である。

一部のアンチウイルスソフトでは、(HTTPダウンロード機能を提供する)NSISdlなどのプラグインをトロイの木馬として認識することもあった[4]。これも間違いである。NSISはスクリプトシステムなのでマルウェアの開発にも使えるが、それがNSISの目的ではないし、そういう観点では大概のプログラミング言語にも同じことが言える。

関連項目

[編集]

参考文献

[編集]

外部リンク

[編集]