Ubuntu Weekly Recipe

第409回 Windows用のインストーラーを作成する

この記事を読むのに必要な時間:およそ 3 分

今回はNSISを利用し,Windows用のインストーラーを作成します(注:この連載ではUbuntuを扱っています)。

NSISとは

NSISは,Winampで有名なNullsoftが開発している,スクリプトベースのWindows用インストーラー作成ソフトです。簡単に済ませたい場合はとことん簡単にできますし,手間をかければ凝ったこともできるので,いろいろなソフトウェアで使われています。

今回は,普通のインストーラーとレジストリを変更するだけのツールを作成してみます。

正直なところNullsoftの現状はよくわからないのですが,NSISはオリジナルメンバーによって現在も細々と開発が継続しており,執筆段階での最新版 (2.50/3.0b3) が2015年12月26日にリリースされています。

UbuntuとNSIS

NSISはオープンソースライセンスで提供されています。そして,NSISそのものはWindowsでなくても動作します。実はUbuntuのリポジトリにもありますので,簡単にインストールできます。そして,実行してWindows用インストーラーを作成することもできます。しかし,言うまでもありませんがテストというかインストーラーを実行することはできません。もちろんWineがインストールされていればインストーラーの実行自体は可能です。

それ以前にUbuntuでNSISを使用するメリットを明確に説明せよと言われると,正直すごく困ってしまいます。あえて言えばapt一発でダウンロードできること,他のコマンドと組み合わせ,例えばインストールするファイルをwgetやcurlで取得してそれを展開するといったことを簡単に書けるというメリットはありますが,Cygwinを使用すればWindowsでも同様になるはずなので(未検証),メリットと言えるほどのものはありません。

サンプルスクリプトその1:画像インストーラー

まず簡単なサンプルとして,画像ファイルをWindows XPだと「マイ ピクチャ」フォルダー,Windows 7/10だと「ピクチャ」フォルダーにインストールするインストーラーを作成してみます。

以下のコードをファイル名"image-installer.nsi",文字コードをSHIFT_JISで保存してください(そのまま保存すればSHIFT_JISになっています)。geditでもSHIFT_JISでの保存は可能です。改行コードはLFでもCR+LFでもどちらでも構いません。

次のコマンドを実行して,インストーラーを作成します。

makensis image-installer.nsi

今回のコードはサンプルスクリプトに多少の手を加えたものです。コメントも多いのでわかりやすいと思いますが,ポイントとなる部分をいくつか解説します。

  !include "MUI2.nsh"

ここではModern UI 2.0を使用しています。これは日本語にも対応しています。今回は紹介しませんがいろいろカスタマイズもできるので,よほどの理由がない限りはこのフォントを使用するのがいいでしょう。

  ;Name and file
  Name "画像インストーラー"
  OutFile "image-install.exe"

  ;Default installation folder
  InstallDir "$PICTURES"

インストーラーの名前と実行ファイル名とインストールフォルダーを指定しています。インストールフォルダーは前述のとおりWindowsのバージョンにより異なっているため,このような定数を使用しています。他の定数に関しては,マニュアルに記載がありますので参考にしてください。

  !define MUI_ABORTWARNING
  ;!define MUI_ICON "penguin.ico"
  ;!define MUI_UNICON "penguin.ico"

サンプルスクリプトではコメントアウトにしていますが,このように書けば独自のアイコンを使用できます。なお,ico形式へのエクスポートはGIMPでも可能です。エクスポート時に拡張子を"ico"にしてください。

なお,実際に作成したインストーラーは,このアイコンに差し替えています。

;Pages

  !insertmacro MUI_PAGE_WELCOME
  !insertmacro MUI_PAGE_DIRECTORY
  !insertmacro MUI_PAGE_INSTFILES
  !insertmacro MUI_PAGE_FINISH

  !insertmacro MUI_UNPAGE_WELCOME
  !insertmacro MUI_UNPAGE_CONFIRM
  !insertmacro MUI_UNPAGE_INSTFILES
  !insertmacro MUI_UNPAGE_FINISH  

インストール/アンインストール時に行うことを指定しています。上からようこそ画面,フォルダーの指定,実際のインストール(ファイルのコピー)/アンインストール,完了しました画面の4つを行います。今回はインストールフォルダーを指定する意味はないので,削ってもいいかもしれません。

;Languages
 
  !insertmacro MUI_LANGUAGE "Japanese"

インストーラーの言語は日本語にしたいので,このように指定しています。

;--------------------------------
;Installer Sections

Section

  SetOutPath "$INSTDIR"
  
  ;ADD YOUR OWN FILES HERE...
  ;https://openclipart.org/detail/159703/penguin-|-pinguino
  File Twitter-Penwin.svg
  
  ;Store installation folder
  WriteRegStr HKCU "Software\image-installer" "" $INSTDIR
  
  ;Create uninstaller
  WriteUninstaller "$INSTDIR\Uninstall.exe"

SectionEnd

重要なのは"File"行で,実際にインストールするファイルを指定しています。この指定方法だと,"image-installer.nsi"と同じフォルダーに置く必要があります。

;Uninstaller Section

Section "Uninstall"

  ;ADD YOUR OWN FILES HERE...
  Delete "$INSTDIR\Uninstall.exe"
  Delete "$INSTDIR\Twitter-Penwin.svg"

  DeleteRegKey /ifempty HKCU "Software\imaage-installer"

SectionEnd

アンインストールで重要なのは"Delete"行で,アンインストールするファイルを一つひとつ指定しています。今回はアンインストール実行プログラムも画像ファイルと同じ場所に置いてるので,ややダサいです。しかし,ユーザー権限でインストールしている以上,やむを得ない部分でもあります。

コメントも含めて100行にも満たないスクリプトですが,Wineでインストールしてみると,以下のように本格的なインストーラーとなります。なお,Wineは気が効いており,画像ファイルは"XDG_PICTURES_DIR"にインストールされます。すなわち日本語でインストールした場合は"$HOME/画像"フォルダーにインストールされます。

図1 ようこそ画面

画像

図2 インストールフォルダーの指定。右上がアイコン画像に差し替わっている

画像

図3 完了しました画面

画像

著者プロフィール

あわしろいくや

Ubuntu Japanese Teamメンバーで,主として日本語入力関連を担当する。特定非営利活動法人OpenOffice.org日本ユーザー会。LibreOffice日本語チーム。ほか,原稿執筆も少々。

コメント

コメントの記入