NSIS をいじり中

インストーラの評価中。

InstallShield は使ったことがあるし、今も使っているけど、とにかくバグが多いし、わけわからない動作をするので、新しいプロジェクトではもう使いたくないと思った。

一応 InstallShield をフォローしておくと

  • GUI でほぼできちゃう
  • 日本語化されている
  • 書籍も出ている
  • 情報が多い

なんていうのがあって、凝ったものを作ろうと思わなければお勧めだと思う。凝ったものって何なの、って言うと

  • ウィザードで作れる動作以外のもの
  • 多言語対応
  • 各種セキュリティ強化

である。

ウィザードはとても便利だけど、致命的にダメなのが、ライセンス画面を表示する前に、共有コンポーネントを勝手にインストールしちゃうこと。そしてインストールしっぱなしなこと。何なの、この動作・・・?

多言語対応をしようとすると、文字化け地獄に陥る。日本語が化けるというのはよくある話だけど、ラテン文字も化けるっていったいどういうこと!?

セキュリティというのは、簡単に言うと、リムーバブルディスクにインストールさせない、ネットワークドライブにインストールさせない、アプリ起動中にアンインストールさせない、などなど。どれも標準で対応できないので、作りこむ必要がある。

結局、スクリプトベースで、外部 DLL や外部 EXE を呼び出しまくりの、とほほな感じに仕上がってしまった。

あれ、フォローしてたはずなのになぜかまたダメ出ししているな・・・。うーん。簡単なインストーラなら本当に簡単にできるのが InstallShield のいいところなんだけどね。プロダクトを死ぬほど持っていて、頻繁にバージョンアップしているような会社さんには向いていると思う。

で、InstallShield とは決別して、別の何かを使おうと候補に挙がったのが NSIS と Inno Setup だ。

NSIS は使っているプロダクトを良く見るので、こっちの方が良いかな、と思って調査している最中。とりあえずやりたいことは

  • 最初に言語選択させる
  • 選択した言語の使用許諾契約書を表示
  • インストールが進む

というものだ。まあ、できるっちゃできる。

これは NSIS に含まれるサンプル。最初に使用する言語を選択すると、それにあわせて使用許諾契約書が変わるサンプルだ。これをベースに肉付けすれば完成するかもしれないけど、見た目がダサいので、それは控えたい。

上の画像は Modern UI という比較的新しいテーマを使用したインストーラだ。今風な見た目だ。メッセージとボタンがちぐはぐ、タイトルがいきなりアンインストールになっているところなんかは NSIS のバグっぽい気がしてならない。

NSIS のスクリプトは、無理やり分類わけするとシェルスクリプトに近い。命令の順序とか独特な作法があるので、習得するのは時間がかかるけど、1 日でそれなりに理解できるようになる。ただし英語力が必要。

NSIS はこれぐらいにして、次は Inno Setup を調べてみよう。こちらは日本語情報が豊富なので、調べるのは楽そうだ。