S-JIS[2025-08-13/2025-08-14] 変更履歴

Inno Setup6の例

Inno Setup6のissファイルの例。


概要

Inno Setupでは、拡張子issのテキストファイルにインストーラーの設定を記述する。
issファイルはテキストファイルなのでコピー&ペーストできる。

Inno SetupのGUIでウィザードを使って、issファイルの雛形を作るのが便利。
既存のissファイルに対してウィザードで編集することは出来ないようだが、
別途新しいウィザードを起動してissファイルを作成し、必要なところだけコピーしてくることは出来る。


基本的な例

Rustで作ったexeファイル」のインストーラーを作成する例。

Rustプロジェクトの下にinstallerというディレクトリーを作り、そこにissファイルを置くことにする。


Rustプロジェクト/installer/example-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の指定が有効になる。


レジストリーに登録する例

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の登録を行う。

  1. Inno Setup(GUI)のメニューバーから「Tools」→「Configure Sign Tools」を選択し、「Configure Sign Tools」ダイアログを開く。
  2. 「Add」ボタンを押す。
  3. ツール名を(適当に決めて)入力する。(例:「MySign」)
  4. 署名を実行するコマンドを入力する。
    "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が実行されてデジタル署名が入れられる。


Inno Setupへ戻る / 技術メモへ戻る
メールの送信先:ひしだま