この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:6
ページ更新者:ぼうず
更新日時:2026-06-11 07:12:00

タイトル: Inno Setup(Windows インストーラ作成ツール)の概要と使い方
SEOタイトル: Inno Setup 入門(ISL スクリプト・セクション構造・Pascal Script・署名・NSIS との比較)

この記事の要点
  • Inno Setup は無料の Windows インストーラ作成ツール。OSS(modified BSD)
  • ISL(Inno Setup Script)言語でセットアップを宣言的に記述
  • 主要セクション: [Setup] / [Files] / [Icons] / [Run] / [Tasks]
  • Pascal Script で高度な分岐や前提条件チェックを記述可能
  • デジタル署名UACに対応。SmartScreen 警告対策に必須

Inno Setup とは

Inno Setup は Jordan Russell 氏が開発する Windows 用インストーラ作成ツールで、無料(modified BSD ライセンス)で商用利用可能です。1997 年から続く老舗で、多くのフリーソフトや業務アプリケーションのインストーラとして採用されています。

主な特徴

  • 軽量・高速。生成された Setup.exe は依存ランタイム不要で単体配布可能
  • Windows 7 SP1 以降の全 Windows に対応(Inno Setup 6 系)
  • 多言語対応(標準で 30 以上の言語パック)
  • カスタムページ・条件分岐・前提チェックを Pascal Script で記述可能
  • デジタル署名(Authenticode)と Windows SmartScreen に対応
  • サイレントインストール、コマンドライン引数、Update インストール対応

ダウンロードとインストール

  1. jrsoftware.org/isinfo.php から最新版をダウンロード
  2. Inno Setup 本体と Inno Setup QuickStart Pack(IDE 同梱)の 2 種類あり。後者推奨
  3. インストーラを実行 → Inno Setup Compiler が起動

最小スクリプト例

; setup.iss — 最小限の構成
[Setup]
AppName=My Application
AppVersion=1.0.0
AppPublisher=My Company Inc.
DefaultDirName={autopf}\MyApp
DefaultGroupName=My Application
OutputBaseFilename=MyApp-Setup-1.0.0
Compression=lzma2
SolidCompression=yes
WizardStyle=modern

[Files]
Source: "build\MyApp.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "build\*.dll";     DestDir: "{app}"; Flags: ignoreversion recursesubdirs
Source: "README.md";       DestDir: "{app}"; Flags: ignoreversion isreadme

[Icons]
Name: "{group}\My Application"; Filename: "{app}\MyApp.exe"
Name: "{commondesktop}\My Application"; Filename: "{app}\MyApp.exe"; Tasks: desktopicon

[Tasks]
Name: "desktopicon"; Description: "デスクトップにショートカット作成"; GroupDescription: "追加タスク:"

[Run]
Filename: "{app}\MyApp.exe"; Description: "今すぐ起動"; Flags: nowait postinstall skipifsilent

これを setup.iss として保存し、Inno Setup Compiler で「Compile」すると Output/MyApp-Setup-1.0.0.exe が出来上がります。

主要セクション

セクション役割
[Setup]インストーラ全体の設定。アプリ名、バージョン、既定インストール先など
[Files]インストールするファイル一覧
[Dirs]作成するディレクトリ
[Icons]スタートメニュー・デスクトップショートカット
[Tasks]ユーザに選択させるタスク(チェックボックス)
[Components]コンポーネント選択(カスタムインストール用)
[Registry]レジストリ書き込み
[Run]インストール直後に実行するコマンド
[UninstallRun]アンインストール時に実行
[Code]Pascal Script でロジック記述
[Languages]表示言語の追加

定数(Constants)

パスやレジストリ位置を表す定数が用意されています。クロスバージョン対応で必須です。

定数意味
{app}インストール先(DefaultDirName で指定)
{autopf}Program Files(32/64bit 自動判別)
{commondesktop}全ユーザ デスクトップ
{userdesktop}現ユーザ デスクトップ
{group}スタートメニューのフォルダ
{tmp}一時ディレクトリ
{src}セットアップが置かれているディレクトリ
{sys}System32 / SysWOW64
{commonappdata}ProgramData
{userappdata}AppData\Roaming

Pascal Script([Code] セクション)

条件分岐や前提チェックは Pascal Script で書きます。コンパイル時とランタイムの両方の関数を呼び出せます。

[Code]
function InitializeSetup(): Boolean;
var
  Version: Cardinal;
begin
  Result := True;
  // .NET 6 ランタイムが必要なら確認
  if not RegQueryDWordValue(HKLM, 'SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedhost', 'Version', Version) then
  begin
    MsgBox('.NET 6 Runtime が必要です。インストールしてから再度実行してください。',
      mbError, MB_OK);
    Result := False;
  end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then
  begin
    // インストール後の設定ファイル展開など
    SaveStringToFile(ExpandConstant('{app}\config.ini'),
      '[Settings]' + #13#10 + 'Version=1.0', False);
  end;
end;

サイレントインストール / コマンドライン引数

# 完全サイレント(GUI 一切なし)
MyApp-Setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART

# 進捗のみ表示
MyApp-Setup.exe /SILENT

# インストール先を指定
MyApp-Setup.exe /DIR="C:\Apps\MyApp"

# 特定タスクのみ実行
MyApp-Setup.exe /TASKS="desktopicon"

# ログを出力
MyApp-Setup.exe /LOG="install.log"

# アンインストール
"C:\Program Files\MyApp\unins000.exe" /SILENT

デジタル署名と SmartScreen 対策

未署名インストーラは Windows SmartScreen が「不明な発行元」として警告します。署名すれば警告が緩和(EV 証明書ならゼロ)になります。

[Setup]
SignTool=signtool sign /f "cert.pfx" /p "password" /tr http://timestamp.digicert.com /td sha256 /fd sha256 $f
SignedUninstaller=yes

# 実行時に Setup.exe / Uninstaller の両方が署名される

署名はコードサイニング証明書(DigiCert / Sectigo / SSL.com など)を購入する必要があります。OSS なら SignPath などの無料サービスもあります。

UAC(管理者権限)

  • PrivilegesRequired: admin(既定)/ poweruser / lowest
  • admin 必須ならスタート時に UAC ダイアログが表示される
  • 非管理者でもインストールしたい場合は PrivilegesRequiredOverridesAllowed=dialog を併用

カスタムページの追加

ライセンス・情報ページ以外にも、シリアル入力やサーバ URL 設定など独自のページを Pascal Script で追加できます。

[Code]
var
  ServerPage: TInputQueryWizardPage;

procedure InitializeWizard();
begin
  ServerPage := CreateInputQueryPage(wpWelcome,
    'サーバ設定', '接続先サーバを入力してください',
    'インストール後の動作に使用します。');
  ServerPage.Add('サーバ URL:', False);
  ServerPage.Values[0] := 'https://api.example.com';
end;

競合ツールとの比較

ツール特徴
Inno Setup無料・OSS、ISL スクリプト、Pascal で拡張、軽量
NSIS (Nullsoft Scriptable Install System)無料・OSS、独自スクリプト、より柔軟だが学習コスト高
WiX Toolset無料・OSS、XML で記述、MSI 生成、エンタープライズ向け
InstallShield商用、UI 重視、企業導入
Advanced Installer商用、GUI 編集、MSIX / EXE 両対応
MSIX / msix-packaging-toolMicrosoft 標準、Store 配布向け

Inno Setup を選ぶ理由

  • 無料でありながら商用利用可
  • 軽量・高速で依存ランタイム不要
  • 少ない記述量で美しいインストーラが作れる
  • OSS でカスタマイズの自由度が高い
  • 長年のコミュニティ蓄積による豊富なサンプル

FAQ

Q: MSI を作りたい
A: Inno Setup は EXE 形式のみ。MSI なら WiX Toolset / Advanced Installer を使ってください。

Q: アップデート時に古い設定ファイルを残したい
A: [Files] セクションで Flags: onlyifdoesntexist を付けると既存ファイルは上書きしません。

Q: 64bit アプリ用の Inno Setup スクリプト
A: [Setup]ArchitecturesAllowed=x64 arm64ArchitecturesInstallIn64BitMode=x64 arm64 を追加。{autopf} 等の定数が自動で 64bit パスを返します。