Vista用インストーラ

いろいろ調べたら、NSISのV2.22 以降では 属性 RequestExecutionLevel を指定することで、インストーラ自身が必要とする権限レベルを指定できることがわかりました。(http://nsis.sourceforge.net/Docs/Chapter4.html#4.8.1
そこで、Squeakland2005Jのインストーラに少しだけ手を加えて、Vista上で実験しました。

手順

(1) 必要なもの

(2) ビルド

  • squeakland05.nsi を編集し、適当な場所(General節など)に RequestExecutionLevel を指定
  • makensisw でインストーラをビルドする

RequestExecutionLevel user(一般ユーザ)

Squeakインストーラではあまり関係ないけど、一応実験としてやってみた。

  • インストーラを起動する際には特に警告ダイアログは出ない
  • c:\program files 以下にファイルを作ろうとしてエラーになる。

RequestExecutionLevel admin(管理者ユーザ)

(1) インストール
インストーラディジタル署名を入れていないので、起動する時には警告が出る。

ここで許可した後は、普通にインストールが実行される。
現状のインストーラスクリプトは、インストールを実行したユーザ自身のプロファイルにショートカットを作るようになっているため、次図のようなインストール結果になります。これは All usersのほうがいいかもしれません。

(2) ブラウザプラグイン
原因と修正方法の調査は後で行うことにして、淡々と結果だけ記録します。
※ここでは、インストールを実行したユーザ自身で実行しています。

IE7Squeakのプロジェクトを開くと、まずVMを起動することについての警告が表示される。

許可するとSqueakが起動されるが、ブラウザプラグイン(NPSqueak)が2回エラーダイアログを表示する。

  • Unable to establish communication channel
  • Failed to establish communication channel

ところが、2回ともOKを押した後、Squeakのプロジェクトが開かれてしまいました。

よく見ると、IE7のタイトルバーはブラウザプラグイン(NPSqueak)になっており、開いているURLもランチャーJSPになっています。ランチャーの処理は正しく行われておらず、プロジェクトが開けてたのは偶然のようです。

まとめ

今回の実験で、NSISでのインストーラ開発で対応できる範囲、ブラウザプラグインの修正が必要な事項が明確になり、(完璧ではありませんが)NSISでもSqueakインストーラVistaに対応させられるめどがついたと思います。