目次
インストーラ
- InitializeSetup
- InitializeWizard
- DeinitializeSetup
- CurStepChanged
- CurInstallProgressChanged
- NextButtonClick
- BackButtonClick
- CancelButtonClick
- ShouldSkipPage
- CurPageChanged
- CheckPassword
- NeedRestart
- UpdateReadyMemo
- RegisterPreviousData
- CheckSerial
- GetCustomSetupExitCode
- PrepareToInstall
- RegisterExtraCloseApplicationsResources
アンインストーラ
- InitializeUninstall
- InitializeUninstallProgressForm
- DeinitializeUninstall
- CurUninstallStepChanged
- UninstallNeedRestart
解説
パスカル・スクリプトには適切なタイミングで呼び出せるイベント関数を含めることができます。
セットアップ・プログラム用には,
- function InitializeSetup(): Boolean;
セットアップ・プログラムが初期化している間に呼び出されます。
セットアップ・プログラムを中止させるにはFalseを,そうでなければTrueを返します
- procedure InitializeWizard();
起動時にウィザードないしウィザードのページを変更するには,このイベント関数を使用してください。
この目的のためInitializeSetupを使用することはできません。
なぜなら,この関数が呼び出された時点ではまだウィザードのフォームは存在していないからです。
- procedure DeinitializeSetup();
セットアップ・プログラムが終了する直前に呼び出されます。
ユーザーが何もインストールせずにセットアップ・プログラムを終了しても,この関数は呼び出されることに注意して下さい。
- procedure CurStepChanged( CurStep: TSetupStep );
独自のインストール前タスク・インストール後タスクを実行させるために,このイベント関数を使用できます。
このイベント関数は呼び出されるのは,実際のインストールが始まる直前(CurStep:=ssInstallの状態),実際のインストールが終わった直後(CurStep:=ssPostInstallの状態),インストールが成功してセットアップ・プログラムが終了する直前(CurStep:=ssDoneの状態)です。
- procedure CurInstallProgressChanged( CurProgress, MaxProgress: Integer );
セットアップがファイルの抽出、ショートカットの作成、INI エントリの作成、レジストリエントリの作成中にプログレスを監視するために,このイベント関数を使用できます。
- function NextButtonClick( CurPageID: Integer ): Boolean;
ユーザーが次へ(N) のボタンをクリックしたときに呼び出されます。
Trueを返せば,ウィザードは次のページへ移ります。
Falseを返せば,現在のページのままです(CurPageID:で指定します)。
注意:この関数はサイレント・インストール時にも呼び出されます(ユーザーがクリックできる[次へ]のボタンがない場合もです)。
セットアップ・プログラムは[次へ」のボタンがクリックされたのをシミュレートします。
サイレント・インストール時に,インストールが始まる前NextButtonClick関数がFalseを返した場合は,セットアップ・プログラムは自動的に終了(exit)します。
- function BackButtonClick( CurPageID: Integer ): Boolean;
ユーザーが戻る(B) のボタンをクリックしたときに呼び出されます。
Trueを返せば,ウィザードは前のページへ戻ります。
Falseを返せば,現在のページのままです(CurPageID:で指定します)。
- procedure CancelButtonClick( CurPageID: Integer; var Cancel, Confirm: Boolean );
ユーザーが[キャンセル]ボタンやウィンドウの[閉じる]ボタンをクリックした時に呼び出されます。
Cancelパラメータで,普通のキャンセル処理を行うかどうかを指定します。
デフォルトではTrueです。
Confirmパラメータで,「セットアップを終了しますか?」メッセージボックスを表示するかどうかを指定します。
普通,デフォルトはTrueです。
CancelをFalseに設定すると,Confirmの値は無視されます。
- function ShouldSkipPage( PageID: Integer ): Boolean;
PageIDで指定されるページを表示するかどうかを決めるために,ウィザードはこのイベント関数を呼び出します。
Trueを返せば,このページはスキップされます。
Falseを返せばこのページは表示されるでしょう。
注意:このイベント関数は,wpWelcome, wpPreparing, wpInstallingのページに対しては呼び出されません。
また,セットアップ・プログラムがスキップすることを既に決めたページに対しても呼び出されません(例:コンポーネントを含んでいないインストール配布物の wpSelectComponents ページ)。
- procedure CurPageChanged( CurPageID: Integer );
CurPageIDで指定された新しいウィザード・ページが表示された後で呼び出されます。
- function CheckPassword( Password: String ): Boolean;
セットアップ・プログラムがパスカル・スクリプトの中CheckPasswordイベント関数を見つけると,自動的に
Password ページを表示し,パスワードをチェックするためCheckPasswordを呼び出します。
パスワードを受け入れるにはTrueを,拒否するならFalseを返してください。
セットアップ・プログラム中に保存される[Code]セクション内に実際のパスワードを保存しておきたくなければ,ハッシュ値だけを比較すればよいでしょう。
自分でパスワードのMD5ハッシュ値を計算してGetMD5OfString
(Password)と比較すればよいのです。
こうすることで,パスワードの実際の値は安全です。
注意:CheckPasswordイベント関数を持っていて,ユーザーが "/PASSWORD=" と "/SILENT" コマンドライン引数を両方とも指定してセットアップ・プログラムを実行している場合InitializeSetupを含めて他の全てのイベント関数が呼び出される前にCheckPassword関数は呼び出されます。
重要: パスワードを使用するときには,暗号化が行われておらず,Inno Setupのソースコードがフリーで入手可能なので,経験のある人ならインストール物からパスワード保護を取り除くことはそれほど難しくないことを忘れないでください。
権限のない人をインストールから閉め出すためのただの"嫌がらせ"と思って,使用してください。
- function NeedRestart(): Boolean;
インストールが首尾よく終わったとき,ユーザーにシステムの再起動を促すようセットアップ・プログラムに指示するには,Trueを,そうでなければFalseを返します。
- function UpdateReadyMemo( Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String ): String;
セットアップ・プログラムがパスカル・スクリプトの中にUpdateReadyMemoイベント関数を見つけると,ウィザードのインストールの準備ができました ページがアクティブになったときに,自動的に呼び出されます。
ウィザードのインストールの準備ができました ページの設定メモに表示するテキストをNewLineパラメータで区切った1つの文字列として返すことをお勧めします。
Spaceパラメータにはスペースを含む文字列が含まれます。
セットアップ・プログラムは設定をインデントするためにこの文字列を使用します。
残りのパラメータはセットアップ・プログラムが設定セクションとして使用するはずだった(たぶん空の)文字列を含みます。
たとえば,MemoDirInfoパラメータは選択されたディレクトリ セクションを表す文字列を含みます。
- procedure RegisterPreviousData( PreviousDataKey: Integer );
カスタム・ウィザードページで入力されたユーザー設定を保存するには,パスカル・スクリプトの中に
RegisterPreviousDataイベント関数を置き,その中で設定毎にSetPreviousData(PreviousDataKey, ...)を呼び出してください。
- function CheckSerial( Serial: String ): Boolean;
セットアップ・プログラムがCheckSerialイベント関数をパスカル・スクリプトの中に見つけると,ウィザードのユーザー情報ページにシリアル番号のフィールドが自動的に現れます(もちろん,[Setup]セクションで
UserInfoPage=yesを設定して,ユーザー情報ページが表示されるようにしておかなければなりません!)。
入力されたシリアル番号を受け入れるならTrueを,拒否するならFalseを返してください。
重要: シリアル番号を使用するときには,暗号化が行われておらず,Inno Setupのソースコードがフリーで入手可能なので,経験のある人ならインストール物からシリアル番号保護を取り除くことはそれほど難しくないことを忘れないでください。
ユーザーに対する便宜的なものとして使用し,アプリケーション内で入力されたシリアル番号({userinfoserial}定数に保存されています)をもう一度チェックしてください。
- function GetCustomSetupExitCode: Integer;
セットアップ・プログラムにカスタム終了コードを返すよう指示するために,ゼロでない数字を返します。
この関数が呼ばれるのは,セットアップ・プログラムが最後まで首尾よく実行され,終了コードが0になるはずだった場合だけです。
セットアップ・プログラムの終了コードもご覧下さい。
- function PrepareToInstall: ( var NeedsRestart: Boolean ) String;
You can use this event function to detect and install missing prerequisites and/or to shutdown any application which is about to be updated.
Return a non empty string to instruct Setup to stop at the Preparing to Install wizard page, showing the returned string as the error message. Set NeedsRestart to True if a restart is needed. This function is only called if Setup didn't already determine it can't continue because one or more files specified in the [Files] and [InstallDelete] sections were queued (by some other installation) to be replaced or deleted on the next restart.
This event function is called before Setup checks for files being in-use if CloseApplications is set to yes.
- procedure RegisterExtraCloseApplicationsResources;
To register extra files which Setup should check for being in-use if CloseApplications is set to yes, place a RegisterExtraCloseApplicationsResources event function in the Pascal script and call RegisterExtraCloseApplicationsResource inside it, once per file.
アンインストーラ用
アンインストーラ用には,
- function InitializeUninstall(): Boolean;
アンインストーラを中断するにはFalseを,そうでなければTrueを返します。
- procedure InitializeUninstallProgressForm();
スタートアップ時のプログレスフォームを変更するにはこのイベント関数を使用してください。アンインストーラが実行されたとき、プログレスフォームはまだ存在していないので、代わりに InitializeUninstall イベント関数を使用することはできません。
- procedure DeinitializeUninstall();
- procedure CurUninstallStepChanged( CurUninstallStep: TUninstallStep );
- function UninstallNeedRestart(): Boolean;
アンインストールが首尾よく終わったとき,ユーザーにシステムの再起動を促すようアンインストーラに指示するには,Trueを,そうでなければFalseを返します。
定数
次に示すのは,これらの関数が使用する定数の一覧です:
- CurStep values
- ssInstall, ssPostInstall, ssDone
- CurUninstallStep values
- usAppMutexCheck, usUninstall, usPostUninstall, usDone
- 定義済みのウィザード・ページに対応する CurPageID の値
- wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpPreparing, wpInstalling, wpInfoAfter, wpFinished
これらの関数は1つとして,パスカル・スクリプト内に存在している必要はありません。