前回は「WixEditを用いたインストーラ」 に示したようにWixEditを使用しましたが、今回はInno Setup(ver5.5.8)を使用してWindows用のインストーラを作成します。主に、Inno Setupで表示できるWizard Pagesとインストールした場合にパソコンに作成できるファイルについて説明します。
Inno Setupのダウンロード/インストール
Inno Setup をInno Setup Downloadsから、次に示すInno Setup Stable Release packageをダウンロードしてインストールします。インストーラの日本語化に必要はパッケージも含まれています。
インストールするとWelcomeダイアログが表示されますがCancelボタンを押し、スクリプトを入力する画面を表示します。表示されているツールバーを使用してインストーラを作成します。Compileボタンを押すと作成したスクリプトをコンパイルし、Runボタンを押すとコンパイルしたスクリプトを実行します。
簡単なスクリプトによるインストーラの作成
最初に、インストーラのファイルを作成するスクリプトを次のように作ります。インストーラのファイルはスクリプトと同じディレクトリにフォルダ名「Output」を作成し、その中に今回のスクリプトでは、ファイル名「InnSetupApp.exe」として作成します。
//インストーラーで配布するフォルダの定義 #define AppDir “C:\xxxxxxx” [Setup] // アプリ名 AppName = InnSetup // アプリ名+バージョン AppVerName = InnSetup 1.0 // アーカイブ名 OutputBaseFilename = InnSetupApp // 初期インストールディレクトリ DefaultDirName = {pf}\InnSetup [Languages] Name: “jp”; MessagesFile: “compiler:Languages\Japanese.isl” [Files] Source: “{#AppDir}\InnSetup.exe” ; DestDir: “{app}”; Flags: ignoreversion Source: “{#AppDir}\ja\InnSetup.resources.dll” ; DestDir: “{app}\ja”; Flags: ignoreversion
- 作成したソフトは「[Files]」でインストーラに組み込みます。「Source」に作成したプログラムのファイルを設定し、「DestDir」でインストーラで設定するフォルダを指定します。
- Wizard Pages「インストール先の指定」で表示されるディレクトリは「DefaultDirName」で設定したディレクトリが表示されます。
- OutputBaseFilenameで指定されたファイル名「InnSetupApp」が、インストールファイル名「InnSetupApp.exe」となります。
- {app}は、Wizard Pages「インストール先の指定」で設定したディレクトリを示し、{pf}はプログラムフォルダ「C:\Program Files」を示します。
- [Files]で指定している「{#AppDir}」は、#defineで定義された「AppDir」を示します。このスクリプトでは、インストーラに保存する実行ファイルのディレクトリを示します。
上記のスクリプトを実行すると、次の3つのWizard Pagesが順に表示されます。
インストール先の指定
インストール準備完了
セットアップウイザート完了
インストールが完了すると、インストーラで指定した「C:\Program Files\innSetup」に次のように実行ファイルとアンインストール用の実行ファイルが書き込まれます。
Wizard Pagesの追加
inno setupはスクリプトを追加すると様々なWizard Pagesが作成できます。
セットアップウイザートの開始
次のスクリプトを追加すると、次のセットアップウイザートの開始画面が表示されます。
DisableWelcomePage = no
使用許諾契約書の同意
次のスクリプトを追加すると、次の使用許諾契約書の同意画面が表示されます。使用許諾契約書のテンプレートファイルは、inno setupのインストールフォルダに保存されており、インストーラのスクリプトファイルと同じディレクトリに設置します。
LicenseFile = Tomosoftlicense.txt
追加タスクの選択
次のスクリプトを追加すると、次の追加タスクの選択画面が表示されます。
[Tasks] Name: “startupicon”; Description: “スタートアップにショートカットを作成”; Flags:unchecked Name: “association”; Description: “ファイル拡張子にInnSetupを関連付け”; Flags:checkedonce
プログラムグループの指定
次のスクリプトを追加すると、次のプログラムグループの指定画面が表示されます。
[Setup] //Select Start Menu Folder プログラムグループの指定 DisableProgramGroupPage = no DefaultGroupName = InnSetup [Icons] Name: “{group}\InnSetup Program”; Filename: “{app}\InnSetup.exe”; WorkingDir: “{app}” Name: “{group}\InnSetupのアンインストール”; Filename: “{uninstallexe}”
次のようにスタートメニューに登録されます。
セットアップウイザート完了
次のスクリプトを追加すると、セットアップ完了後に実行する項目を選択することができます。
[Run] Filename: “{app}\readme.txt”; Description: “READMEを表示する”; Flags: postinstall shellexec skipifsilent unchecked Filename: “{app}\InnSetup.exe”; Description: “アプリケーションを起動する”; Flags: postinstall shellexec skipifsilent
コントロールパネルへのアプリケーション登録
コントロールパネルのアプリケーション登録は、次のようなスクリプトを[Setup]に記述します。実際に登録されたアプリケーションは次のようになります。
// 配布元 AppPublisher=info@tomosoft.jp // アプリケーション配布元 Webサイトの URL AppPublisherURL=https://tomosoft.jp/design/ // アプリケーション バージョン AppVersion={#AppVer}
上記作成したスクリプトをまとめたもの
上記説明したWizard Pagesを作成するスクリプトをまとめたものを次に示します。
//インストーラーで配布するフォルダの定義 #define AppDir "C:xxxx" #define AppVer "1.08" [Setup] //Welcome DisableWelcomePage = no //License Agreement LicenseFile = Tomosoftlicense.txt // Password Password = sakura123 //Information InfoBeforeFile = infobefore.txt //User Information UserInfoPage = yes //Select Destination Location DisableDirPage = no //Select Components //Select Start Menu Folder プログラムグループの指定 DisableProgramGroupPage = no DefaultGroupName = InnSetup //Preparing to Install CloseApplications = yes //Select Tasks 追加タスクの選択 // アプリ名 AppName = InnSetup // アプリ名+バージョン AppVerName = InnSetup 1.0 // アーカイブ名 OutputBaseFilename = InnSetupApp // 初期インストールディレクトリ {pf} はプログラムファイルフォルダを指す定数です UsePreviousAppDir = no DefaultDirName = {pf}\InnSetup // 配布元 AppPublisher=info@tomosoft.jp // アプリケーション配布元 Webサイトの URL AppPublisherURL=https://tomosoft.jp/design/ // アプリケーション バージョン AppVersion={#AppVer} [Languages] Name: "jp"; MessagesFile: "compiler:Languages\Japanese.isl" Name: "en"; MessagesFile: "compiler:Default.isl" [Files] Source: "{#AppDir}\InnSetup.exe" ; DestDir: "{app}"; Flags: ignoreversion Source: "{#AppDir}\ja\InnSetup.resources.dll" ; DestDir: "{app}\ja"; Flags: ignoreversion [Components] Name: "main"; Description: "メインファイル"; Types: full compact custom; Flags: fixed Name: "help"; Description: "ヘルプファイル"; Types: full Name: "help\japanese"; Description: "日本語"; Types: full Name: "help\english"; Description: "英語"; Types: full [Icons] Name: "{group}\InnSetup Program"; Filename: "{app}\InnSetup.exe"; WorkingDir: "{app}" Name: "{group}\InnSetupのアンインストール"; Filename: "{uninstallexe}" [Tasks] Name: "startupicon"; Description: "スタートアップにショートカットを作成"; Flags:unchecked Name: "association"; Description: "ファイル拡張子にInnSetupを関連付け"; Flags:checkedonce [Run] Filename: "{app}\readme.txt"; Description: "READMEを表示する"; Flags: postinstall shellexec skipifsilent unchecked Filename: "{app}\InnSetup.exe"; Description: "アプリケーションを起動する"; Flags: postinstall shellexec skipifsilent [Code] function CheckSerial(Serial: String): Boolean; begin Result := true; SaveStringToFile('c:\Registration.txt', Serial, False); end;
このスクリプトには、すでに説明したWizard Pageの他に次のWizard Pageも含まれています。
多言語の選択メニューの表示
[Languages]に複数の使用言語を記述すると、次の言語の選択プルダウンメニューが表示されます。
パスワード入力画面
[Setup]に「Password = xxxx」を記述すると、次のパスワード入力画面が表示されます。ただし、このパスワードは暗号化されていないので、運用には十分に注意する必要があります。
ユーザー情報の入力画面
[Setup]にUserInfoPage = yesを記述し、[Code]でCheckSerial関数を記述すると、シリアル番号を含めたユーザ―情報の入力画面が表示されます。ただし、このシリアル番号は暗号化されていないので、運用には十分に注意する必要があります。
コンポーネントの選択画面
[Components]にインストールするコンポーネントを記述すると、インストールするコンポーネントを選択できます。