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

タイトル: エラー: disk spanning must be enabled in order to create an installation
SEOタイトル: Inno Setup「disk spanning must be enabled」エラーの原因と対処

この記事の要点
  • Inno Setup でインストーラ作成時に「disk spanning must be enabled」エラー
  • 原因: 出力ファイルが 2GB を超える → 単一インストーラに収まらない
  • 対処1: [Setup] セクションに DiskSpanning=yes を追加
  • 対処2: SolidCompression=no に変更、または DiskSliceSize 指定
  • 根本対策: 大容量データはインストーラ外で配布 (DLC / 別途ダウンロード)、または WiX Toolset / NSIS へ移行

エラー内容

Compiler error:
Internal error: disk spanning must be enabled in order to create an installation
that does not fit on a single disk.

(または)

Error on line N in C:\setup\setup.iss: Internal error:
The compiler has detected that the installer would exceed 2 GB in size.
Disk spanning must be enabled.

Inno Setup はインストーラ作成ツールとして広く使われていますが、単一の .exe ファイルとしての上限は約 2GBです。出力サイズがこれを超えると、上記コンパイラエラーで停止します。

原因

原因確認
圧縮後の合計が 2GB 超[Files] セクションのファイル合計サイズを確認
DiskSpanning が無効DiskSpanning ディレクティブの値
SolidCompression=yes との衝突SolidCompression は分割と相性が悪い
圧縮設定が緩いCompression=zip のような旧形式
巨大なメディアファイル動画 / 音声 / 画像が大量に含まれる

対処1: DiskSpanning を有効化

インストーラを複数の .bin ファイルに分割する設定です:

; setup.iss
[Setup]
AppName=MyApp
AppVersion=1.0
DefaultDirName={pf}\MyApp
OutputDir=C:\setup\output
OutputBaseFilename=MyAppInstaller

; 分割を有効化
DiskSpanning=yes

; 1 ディスクのサイズ (バイト)。デフォルトは CD サイズ (約 650MB)
DiskSliceSize=2000000000  ; 約 2GB ずつに分割

; ダミーファイルを 0 にしておく
DiskClusterSize=512

; 圧縮設定
Compression=lzma2/ultra64
SolidCompression=no       ; ★ 分割時は no 推奨

これで以下のような複数ファイルが出力されます:

MyAppInstaller.exe        ← メインインストーラ (起動側)
MyAppInstaller-1.bin      ← データファイル 1
MyAppInstaller-2.bin      ← データファイル 2
MyAppInstaller-3.bin      ← データファイル 3

配布時は全ファイルを同一フォルダに置く必要があります。

対処2: SolidCompression を無効化

SolidCompression は全ファイルを 1 つの塊として圧縮する設定で、圧縮率は高くなりますが分割と相性が悪く、上記エラーを引き起こすことがあります:

[Setup]
Compression=lzma2/max
SolidCompression=no   ; ★ 個別圧縮にする

対処3: 圧縮アルゴリズムを強化

圧縮率を上げて 2GB 以下に収めるアプローチも有効です:

圧縮設定圧縮率展開速度
Compression=zip/9高速
Compression=bzip/9中速
Compression=lzma2/normal中速
Compression=lzma2/ultra64★最大低速
[Setup]
Compression=lzma2/ultra64
LZMAUseSeparateProcess=yes  ; 別プロセス圧縮で速度改善
LZMANumBlockThreads=4        ; マルチスレッド圧縮

対処4: 大容量データを別途配布

動画・サンプルデータなど 1GB を超えるリソースはインストーラに同梱せず、初回起動時にダウンロードする設計にするのがモダンな手法です:

[Setup]
; 軽量インストーラ
Compression=lzma2/max
SolidCompression=yes

[Files]
Source: "bin\app.exe"; DestDir: "{app}"
Source: "bin\app.dll"; DestDir: "{app}"
; リソースファイルは含めない

[Run]
; インストール後にダウンローダを起動
Filename: "{app}\app.exe"; Parameters: "/download-resources"; \
  Description: "リソースをダウンロード"; Flags: postinstall

対処5: 別のインストーラに乗り換える

ツール特徴サイズ上限
Inno Setup軽量、スクリプト言語シンプル~2GB / DiskSpanning で分割可
NSIS軽量、ZIP ベース実質無制限 (32bit/64bit)
WiX ToolsetMSI 形式、業務向け制限ほぼ無し
Advanced Installer商用、GUI 操作大規模 OK、有料
InstallShield商用大規模向け、エンタープライズ大規模 OK

事前のサイズ見積もり

# PowerShell で配布ファイルの合計サイズ確認
$path = "C:\setup\files"
$size = (Get-ChildItem -Path $path -Recurse | Measure-Object -Property Length -Sum).Sum
"{0:N2} MB" -f ($size / 1MB)
"{0:N2} GB" -f ($size / 1GB)

# 圧縮後のおおよその予測 (LZMA2 で 30-60% 程度)
"圧縮後予測: {0:N2} MB" -f ($size * 0.5 / 1MB)

DiskSpanning 利用時の注意

  • 配布時は全 .bin ファイルが必要 — メイン .exe だけでは動かない
  • ZIP でまとめて配布するなら、ユーザに「全部解凍してから起動」と注意書きを
  • Web ダウンロードリンクは 1 ファイルにまとめる (圧縮 ZIP or自前ダウンローダ)
  • USB メモリ配布なら 4GB FAT32 制限に注意
  • DVD-R 配布なら DiskSliceSize=4700000000 (4.7GB) も検討

FAQ

Q: DiskSliceSize はどう決める?
A: 配布媒体に合わせます。CD なら 650000000、USB FAT32 なら 4000000000 (4GB)、DVD なら 4700000000。Web 配布なら 2GB 程度が一般的。

Q: DiskSpanning=yes にすると圧縮率が下がる?
A: 通常 SolidCompression と併用できないため、固体圧縮よりは圧縮率が落ちます。LZMA2/ultra で個別圧縮を強化してください。

Q: 2GB 制限はなぜ存在する?
A: Inno Setup の内部実装が 32bit 符号付き整数でファイルオフセットを管理しているため。完全な解決には WiX や NSIS など別ツールへの移行が必要です。