Inno Setup6のissファイルの例。
|
Inno Setupでは、拡張子issのテキストファイルにインストーラーの設定を記述する。
issファイルはテキストファイルなのでコピー&ペーストできる。
Inno SetupのGUIでウィザードを使って、issファイルの雛形を作るのが便利。
既存のissファイルに対してウィザードで編集することは出来ないようだが、
別途新しいウィザードを起動してissファイルを作成し、必要なところだけコピーしてくることは出来る。
「Rustで作ったexeファイル」のインストーラーを作成する例。
Rustプロジェクトの下にinstallerというディレクトリーを作り、そこにissファイルを置くことにする。
; サンプル #define MyAppName "Hishidama Dialog Example" #define MyAppVersion "0.1" #define MyAppPublisher "hishidama" #define MyAppURL "https://www.ne.jp/asahi/hishidama/home/tech/rust/windows/DialogBoxParam.html" #define MyAppExeName "dialog-example.exe"
行頭にセミコロンがあると、その行はコメント。(行の途中からのコメント構文は無い)
issファイルはUTF-8らしい。
#defineで定数を定義しておき、後で使うことが出来る。
Setupセクションでインストール対象の情報を定義する。
[Setup] AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL}
DefaultDirName={autopf}\My Example\dialog-example DisableDirPage=auto AlwaysShowDirOnReadyPage=no
DefaultDirNameはインストール先のディレクトリー。
「{autopf}
」は「C:\Program Files
」を表す。
DisableDirPageは、ユーザーがインストール先ディレクトリーを指定できるかどうかの指定。[2025-08-14]
noにすると、ユーザーがインストール先ディレクトリーを指定するページが表示される。(DefaultDirNameが上書きされる)
デフォルトはautoで、同じアプリケーションがインストール済みの場合はページを表示しない。(以前と同じ場所にインストールする)
このインストール先ディレクトリーは、issファイル上は「{app}
」で参照することが出来る。
AlwaysShowDirOnReadyPageをyesにすると、インストール準備完了ページにインストール先ディレクトリーが表示される。[2025-08-14]
デフォルトはno(表示しない)。
UninstallDisplayIcon={app}\{#MyAppExeName}
UninstallDisplayIconを定義すると、Windowsのコントロールパネルの「プログラムのアンインストールまたは変更」の一覧にアンインストーラーが表示される。
ArchitecturesAllowed=x64compatible ArchitecturesInstallIn64BitMode=x64compatible
DefaultGroupName={#MyAppName} DisableProgramGroupPage=yes
DefaultGroupNameはIconsセクションで使用される。(Windowsのスタートメニューにその名前が出る)
OutputDir=Output OutputBaseFilename=my-installer
OutputDirは、生成されるインストーラーの出力先ディレクトリー。
省略した場合は「Output」。
相対パスの場合、issファイルのあるディレクトリーからの相対パス。
(CLI(ISCC.exe)の場合、/Oオプションで指定可能)
OutputBaseFilenameは、生成されるインストーラーのファイル名(拡張子なし)。
省略した場合は「mysetup.exe」になる模様。
(CLI(ISCC.exe)の場合、/Fオプションで指定可能)
Compression=lzma2 SolidCompression=yes WizardStyle=modern
DisableWelcomePage=no
生成されたインストーラーを実行した際、ウェルカムページを表示しないかどうか。[2025-08-14]
デフォルトはyes(表示しない)。
LicenseFile=../LICENSE.txt
ライセンスファイルを指定する。[2025-08-14]
これを指定すると、生成されたインストーラーを実行した際、ライセンスファイルの内容を表示して同意を求めるページが表示される。
Languagesセクションで、インストーラーで表示される言語を指定する。
生成されたインストーラーを実行した際、一番最初に、使用する言語を選ぶダイアログが表示される。
以降、インストーラーの各ページには、選択された言語で説明が表示される。
[Languages] Name: "english"; MessagesFile: "compiler:Default.isl" Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
この候補に関しては、issファイルをウィザードで生成すると、途中で言語一覧が表示されるので、そこで選択する方が便利。
Filesセクションは、インストールするファイル(インストール先に配置するファイル)を指定する。
[Files] Source: "..\target\release\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Sourceはコンパイル時のコピー元ファイル。
相対パスを指定した場合、issファイルのあるディレクトリーからの相対パス。
今回の例ではissファイルは「Rustプロジェクト\installer
」の下にあるので、「..\target\release
」は「Rustプロジェクト\target\release
」を指す。
DestDirはインストール実行時のインストール先(ファイルのコピー先)のパス。
「{app}
」は、デフォルトまたはユーザーから指定されたインストール先ディレクトリー。
Iconsセクションを定義すると、Windowsのスタートメニューやデスクトップ等にショートカットを作成できる。[2025-08-14]
[Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Nameはショートカット名で、Filenameはリンク先のパス(つまりインストールしたexeファイル)。
ショートカット名に指定する定数で、どこにショートカットを作成するかを指定する。
(定数は、ショートカット作成先のパスを表している)
定数 | 作成する場所 | 備考 |
---|---|---|
{group} |
Windowsのスタートメニュー | DefaultGroupNameで指定された名前がスタートメニューのグループ名になる。 |
{userdesktop} {commondesktop} |
デスクトップ | userとcommonの違いは、commonは全ユーザーが対象らしい。 |
Filenameの後ろにセミコロンで区切って、オプションを追加することも出来る。
例えばParametersでexeファイルに渡す引数を指定する。WorkingDirで実行時のワーキングディレクトリーを指定する。
デスクトップにショートカットを作成するかどうかをユーザーに確認するには、Tasksと組み合わせて定義する。
[Icons] Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
Iconsの行にタスク名を追加する。
タスク名は何でもいいみたいだが、サンプルに合わせてdesktopiconとしておくのが良さそう。
Tasksセクションでタスクを定義する。
DescriptionやGroupDescriptionで表示するメッセージを指定する。
これにより、デスクトップにショートカットを作成するかどうかを確認するページが表示される。
以上により、確認ページでチェックを入れた場合のみ、Iconsの指定が有効になる。
{cm:XXX}
」についてRegistryセクションを定義すると、インストール時にWindowsのレジストリーに値が登録される。
また、アンインストール時にレジストリーから削除される。
ODBCドライバーをレジストリーに登録する例。
〜 #define MyAppExeName "example_odbc_driver.dll" 〜 [Files] Source: "〜\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion [Registry] Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBCINST.INI\Example Driver"; Flags: uninsdeletekeyifempty Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBCINST.INI\Example Driver"; ValueType: string; ValueName: "ConnectFunctions"; ValueData: "YYN"; Flags: uninsdeletevalue Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBCINST.INI\Example Driver"; ValueType: string; ValueName: "Driver"; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletevalue Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBCINST.INI\Example Driver"; ValueType: string; ValueName: "DriverODBCVer"; ValueData: "03.00"; Flags: uninsdeletevalue Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBCINST.INI\Example Driver"; ValueType: string; ValueName: "FileUsage"; ValueData: "0"; Flags: uninsdeletevalue Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBCINST.INI\Example Driver"; ValueType: string; ValueName: "Setup"; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletevalue Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBCINST.INI\Example Driver"; ValueType: dword; ValueName: "UsageCount"; ValueData: $00000001; Flags: uninsdeletevalue Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers"; ValueType: string; ValueName: "Example Driver"; ValueData: "Installed"; Flags: uninsdeletevalue 〜
FlagsのuninstXXXはアンインストール時に何を行うかのフラグ。
例えば
uninstdeletevalueはアンインストール時に値を削除する。
issファイルをウィザードで生成すると、途中でレジストリーを設定するページがあるので、
そこで拡張子regのファイル(レジストリーに登録するファイル)を指定してやると、
それを元にRegistryセクションを生成してくれる。
メニューバーの「Tools」→「Generate [Registry] Entries」で、そのウィザードだけ実行することも出来る。
生成されるインストーラーのexeファイルにデジタル署名を入れる例。
正式には認証局(CA)から証明書を購入する必要があるが、試す分には自己署名証明書(通称「オレオレ証明書」)で出来る。
デジタル署名を入れるためにWindows SDKのsigntool.exeを使用するので、Windows SDKをインストールしておく必要がある。
まず、自己署名証明書をPowerShellで作成する。
New-SelfSignedCertificate ` -Type CodeSigningCert ` -Subject "CN=Hishidama Self Cert" ` -CertStoreLocation "cert:\CurrentUser\My"
そして、Inno Setupにsigntool.exeの登録を行う。
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\signtool.exe" sign /fd sha256 /n "Hishidama Self Cert" /tr http://timestamp.digicert.com /td sha256 $f(「
$f
」はコンパイル時に対象のexeファイル名に置換される)最後に、issファイルのSetupセクションにSignToolを追加する。
〜 [Setup] SignTool=MySign
これでコンパイルすると、signtool.exeが実行されてデジタル署名が入れられる。