2004年07月22日

Inno Setupの使用例(3/3)

前回の続きです。
残るセクションの説明です。

[Tasks]

Taskセクションの説明です。

Name: "startupicon"; Description: "スタートアップにショートカットを作成"; GroupDescription: "スタートアップ"; Flags:

「スタートアップにショートカットを作成」という項目を追加しています。これは、インストール中に、利用者が「スタートアップにショートカットを作成」するかどうか選べるようになります。
但し、この一行を書いただけで本当にスタートアップにショートカットを作成できるわけではありません。利用者が「スタートアップにショートカットを作成」することを選んだときに実際にどのような処理を行うのかは、後述するIconセクションに記述されています。

[Files]

Filesセクションの説明です。インストールするファイルの設定が記述されています。

Source: "..\exe\Heimdallr.exe";   DestDir: "{app}";      Flags: ignoreversion
Source: "..\exe\Heimdallr.chm";   DestDir: "{app}";      Flags: ignoreversion
Source: "..\exe\init.xml";        DestDir: "{app}";      Flags: ignoreversion
Source: "..\exe\readme.txt";      DestDir: "{app}";      Flags: ignoreversion

ファイル名の前の「..\exe\」が付いているのは、 スクリプトファイルがあるフォルダからの相対パスを示しています。
フラグのignoreversionは、ファイルの日付やバージョン無視して上書きインストールすることを示しています。
デフォルトでは、exeファイルは、ファイルのバージョンを比較し、インストールするファイルの方がバージョンが高ければコピーするようです。
しかし、この動作は、テスト中などに、インストールしたけれどexeファイルが置き換わってなかったといったトラブルを招くことが多いので、余計なトラブルを招かないようにignoreversionフラグを付与しています。
exeファイル以外にignoreversionフラグが付与されているのも同じく「余計なトラブルを招かないように」必ず上書きインストールするようにするためです。

Source: "..\exe\UNLHA32.DLL";     DestDir: "{app}";
Source: "..\exe\UNLHA32.TXT";     DestDir: "{app}";

UNLHA関連のファイルは、私が作成したものではありません。よって、今後変更されたときは、ちゃんとバージョン番号も変更されているでしょう。
よって、バージョンが変化してなくても上書きしなければならない場合は無いだろう、ということで、ignoreversionフラグを付与していません。

Source: "..\exe\skin\*.xml";      DestDir: "{app}\skin"; Flags: ignoreversion
Source: "..\exe\skin\*.skn";      DestDir: "{app}\skin"; Flags: ignoreversion

skin関連のファイルは私が作成したものです。よって、「余計なトラブルを招かないように」必ず上書きインストールするようにしてます。

[Icons]

Iconセクションの説明です。スタートメニューに追加するショートカットの設定が記述されています。

Name: "{group}\Heimdallr"; Filename: "{app}\Heimdallr.exe";             WorkingDir: "{app}"
Name: "{group}\Heimdallrのアンインストール"; Filename: "{uninstallexe}"

スタートメニューのHeimdallrグループ(フォルダ)にHeimdallr起動用のアイコンとHeimdallrアンインストール用のアイコンを作成するようにしてます。

Name: "{userstartup}\Heimdallr"; Filename: "{app}\Heimdallr.exe";       WorkingDir: "{app}"; Tasks: startupicon

上記Taskセクションの「スタートアップにショートカットを作成」項目がチェックされている場合、スタートメニューのスタートアップにアイコンを作成するようにしてます。

[Languages]

Languagesセクションの説明です。言語に関する設定が記述されています。 何かしているように見えて、実は大したことをしていません。

Name: "jp"; MessagesFile: "compiler:Japanese.isl"
Name: "en"; MessagesFile: "compiler:Default.isl"

日本語環境では、Inno SetupのインストールフォルダにあるJapanese.islというファイルをメッセージファイルとして使用し、英語環境では、Default.islというファイルをメッセージファイルとして使用するようにしてます。
Japanese.islは、最初にインストールしたファイルです。ここで使われているわけです。
Languagesセクションでこのように設定しただけだと、インストーラー起動時に言語選択ダイアログが表示されます。しかし、Heimdallrでは、言語選択ダイアログはうっとおしいと思ったので、SetupセクションでShowLanguageDialog=noとすることにより言語選択ダイアログを表示しないようにしています。
ここまでの説明ですと、このスクリプトにより作成されるインストーラーは、英語環境で起動すると英語のガイダンスが表示されるように思われますが、実は英語ではない部分が残っています。上記「スタートアップにショートカットを作成」がそれです。他にもあります。
英語環境において英語のガイダンスが表示されるようにするには、より新しいバージョンのInno Setupが必要であるようです。しかし、Heimdallrでは、英語のガイダンスが本来は不要(Heimdallr自体が英語化されていない)であるため、ここでは英語のガイダンスについては割り切ることにしました。

[Registry]

Registryセクションの説明です。レジストリに対する操作の設定が記述されています。

Root: HKCU; Subkey: "Software\SutoSoft"; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: "Software\SutoSoft\Heimdallr"; Flags: uninsdeletekey

どちらも、アンインストール時にレジストリのキーを削除するための設定です。
アンインストール時には、まず、HKEY_CURRENT_USER\Software\SutoSoft\Heimdallrを削除します。
次に、その上位キーであるHKEY_CURRENT_USER\Software\SutoSoftが空になったかどうかを判定し、空になっていれば、HKEY_CURRENT_USER\Software\SutoSoftも削除します。

[Run]

Runセクションの説明です。

Filename: "{app}\readme.txt"; Description: "READMEを表示する"; Flags: postinstall shellexec skipifsilent unchecked

インストール完了時に、README.TXTを表示するための設定です。README表示に関しては、Filesセクションでreadmeフラグを使用しても実現できるのですが、 デフォルトでREADME表示のチェックボックスをOFFにするため、Runセクションで設定することにしました。

Filename: "{app}\Heimdallr.exe"; Description: "アプリケーションを起動する"; Flags: postinstall shellexec skipifsilent

インストール完了時に、Heimdallr本体を起動するための設定です。shellexecフラグがポイントです。このフラグが付いていないと、どうやらHeimdallrが終了するまで、インストーラーが終了しないようです。
ですので、インストーラーを起動してインストールを行い、最後にHeimdallrを起動し、さてインストーラーが不要になったので削除しようかと思い削除すると、インストーラーはまだ起動されたままですので、「削除できません」と無情なエラーメッセージが表示されます。
shellexecフラグを付けておくと、Heimdallrを起動した後インストーラーは終了しますので、このような問題はおきません。

長かったですが、Heimdallrのインストーラー作成用スクリプトの説明は以上です。

投稿者 MASATO : 2004年07月22日 08:05 | トラックバック
コメント
コメントする









名前、アドレスを登録しますか?