Vista用インストーラ
いろいろ調べたら、NSISのV2.22 以降では 属性 RequestExecutionLevel を指定することで、インストーラ自身が必要とする権限レベルを指定できることがわかりました。(http://nsis.sourceforge.net/Docs/Chapter4.html#4.8.1)
そこで、Squeakland2005Jのインストーラに少しだけ手を加えて、Vista上で実験しました。
手順
(1) 必要なもの
- インストーラをビルドするためのファイル一式。( http://metatoys.org/pub/sqland2005j/ )
- NSIS V2.22以降
(2) ビルド
- squeakland05.nsi を編集し、適当な場所(General節など)に RequestExecutionLevel を指定
- makensisw でインストーラをビルドする
RequestExecutionLevel user(一般ユーザ)
Squeakのインストーラではあまり関係ないけど、一応実験としてやってみた。
- インストーラを起動する際には特に警告ダイアログは出ない
- c:\program files 以下にファイルを作ろうとしてエラーになる。
RequestExecutionLevel admin(管理者ユーザ)
(1) インストール
インストーラにディジタル署名を入れていないので、起動する時には警告が出る。
ここで許可した後は、普通にインストールが実行される。
現状のインストーラスクリプトは、インストールを実行したユーザ自身のプロファイルにショートカットを作るようになっているため、次図のようなインストール結果になります。これは All usersのほうがいいかもしれません。
(2) ブラウザプラグイン
原因と修正方法の調査は後で行うことにして、淡々と結果だけ記録します。
※ここでは、インストールを実行したユーザ自身で実行しています。
IE7でSqueakのプロジェクトを開くと、まずVMを起動することについての警告が表示される。
許可するとSqueakが起動されるが、ブラウザプラグイン(NPSqueak)が2回エラーダイアログを表示する。
- Unable to establish communication channel
- Failed to establish communication channel
ところが、2回ともOKを押した後、Squeakのプロジェクトが開かれてしまいました。
よく見ると、IE7のタイトルバーはブラウザプラグイン(NPSqueak)になっており、開いているURLもランチャーJSPになっています。ランチャーの処理は正しく行われておらず、プロジェクトが開けてたのは偶然のようです。