NSIS をいじり中
インストーラの評価中。
InstallShield は使ったことがあるし、今も使っているけど、とにかくバグが多いし、わけわからない動作をするので、新しいプロジェクトではもう使いたくないと思った。
一応 InstallShield をフォローしておくと
- GUI でほぼできちゃう
- 日本語化されている
- 書籍も出ている
- 情報が多い
なんていうのがあって、凝ったものを作ろうと思わなければお勧めだと思う。凝ったものって何なの、って言うと
- ウィザードで作れる動作以外のもの
- 多言語対応
- 各種セキュリティ強化
である。
ウィザードはとても便利だけど、致命的にダメなのが、ライセンス画面を表示する前に、共有コンポーネントを勝手にインストールしちゃうこと。そしてインストールしっぱなしなこと。何なの、この動作・・・?
多言語対応をしようとすると、文字化け地獄に陥る。日本語が化けるというのはよくある話だけど、ラテン文字も化けるっていったいどういうこと!?
セキュリティというのは、簡単に言うと、リムーバブルディスクにインストールさせない、ネットワークドライブにインストールさせない、アプリ起動中にアンインストールさせない、などなど。どれも標準で対応できないので、作りこむ必要がある。
結局、スクリプトベースで、外部 DLL や外部 EXE を呼び出しまくりの、とほほな感じに仕上がってしまった。
あれ、フォローしてたはずなのになぜかまたダメ出ししているな・・・。うーん。簡単なインストーラなら本当に簡単にできるのが InstallShield のいいところなんだけどね。プロダクトを死ぬほど持っていて、頻繁にバージョンアップしているような会社さんには向いていると思う。
で、InstallShield とは決別して、別の何かを使おうと候補に挙がったのが NSIS と Inno Setup だ。
NSIS は使っているプロダクトを良く見るので、こっちの方が良いかな、と思って調査している最中。とりあえずやりたいことは
- 最初に言語選択させる
- 選択した言語の使用許諾契約書を表示
- インストールが進む
というものだ。まあ、できるっちゃできる。
これは NSIS に含まれるサンプル。最初に使用する言語を選択すると、それにあわせて使用許諾契約書が変わるサンプルだ。これをベースに肉付けすれば完成するかもしれないけど、見た目がダサいので、それは控えたい。
上の画像は Modern UI という比較的新しいテーマを使用したインストーラだ。今風な見た目だ。メッセージとボタンがちぐはぐ、タイトルがいきなりアンインストールになっているところなんかは NSIS のバグっぽい気がしてならない。
NSIS のスクリプトは、無理やり分類わけするとシェルスクリプトに近い。命令の順序とか独特な作法があるので、習得するのは時間がかかるけど、1 日でそれなりに理解できるようになる。ただし英語力が必要。
NSIS はこれぐらいにして、次は Inno Setup を調べてみよう。こちらは日本語情報が豊富なので、調べるのは楽そうだ。