中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

【InnoSetup】の使い方を理解し設定する-インストーラー作成-

1.概要

アプリケーションが完成したら配布方法を考える必要があります。
実行ファイル単体で動作するようなものならば
そのまま圧縮して配布しても問題ないかもしれませんが
必要なファイルを指定のフォルダへ配置したい等
規模が大きくなるにつれてアプリケーションの動作環境が複雑になっていきます。
そんな時に、アプリケーションのインストーラーが
環境構築までやってくれたら非常に楽です。
これを実現するために、今回は【InnoSetup】を使ってみたいと思います。

2.【InnoSetup】とは

オープンソースで開発されているインストーラー作成ソフトです。
商用/非商用に関わらず無料で利用できます。

3.設定方法

とりあえずウィザードに従い設定をしてみようかと思います。
【InnoSetup】を起動すると【Welcome】ウィンドウが表示されるので
ここで【Create a new script file using the Script Wizard】
を選択し【OK】をクリックします。
f:id:tsu--kun:20190801132345p:plain


【Inno Setup Script Wizard】が表示されるので【Next>】をクリックします。
f:id:tsu--kun:20190801132401p:plain
ここから設定が開始されますので、順番に設定していきます。

Application Information

ここではアプリケーションの基本情報について設定します。
f:id:tsu--kun:20190801132922p:plain

Application name

アプリケーションの名前を設定します。

Application version

アプリケーションのバージョンを設定します。

Application publisher

アプリケーションの発行者を設定します。

Application website

アプリケーションのホームページがある場合、設定を行います。

Application Folder

ここではアプリケーションの保存先となるベースフォルダを設定します。
f:id:tsu--kun:20190801132942p:plain

Application destination base folder

デフォルトでは【Program Files folder】となっています。
実際には【C:\Program Files (x86)】がベースフォルダになります。
【(Custom)】に設定すると、下のテキストボックスに記入したパスがベースフォルダになります。

Application folder name

【Program Files folder】で設定したフォルダ配下に作成する
フォルダの名称を設定します。
このフォルダの下に実行ファイルが配置されます。

Allow user to change the application folder

チェックすると作成したインストーラー上で
本項目で設定した内容が変更可能になります。

The application dosn't need a folder

???

Application Files

ここではインストール時に必要なファイルを設定します。
f:id:tsu--kun:20190801133005p:plain

Application main executable file

実行ファイル(アプリケーション本体)を設定します。

Allow user to start the application after Setup has finished

セットアップが完了した時にアプリケーションの起動を許可するか設定します。

The application doesn't have a main executable file

???

Other application files

実行ファイルのほかに必要なファイルがあれば、ここで設定します。

Application Shortcuts

ここではどこに実行ファイルのショートカットを作成するか設定します。
f:id:tsu--kun:20190801133023p:plain

Create a shortcut to the main executable in the common Start Menu Programs folder

スタートメニューのプログラムフォルダにショートカットを作成します。

Allow user to create a desktop shortcut

ユーザーにデスクトップへのショートカットの作成を許可します。

Allow user to create a Quick Lanch shortcut on older version of Windows

???

Application Documentation

ここではインストール中に表示するドキュメントファイルを指定します。
f:id:tsu--kun:20190801133106p:plain

Licence file

ライセンス情報が記載されたファイルを指定します。

Information file shown before installation

インストール前に表示したい情報が記載されたファイルを指定します。

Information file shown after installation

インストール後に表示したい情報が記載されたファイルを指定します。

Setup Languages

ここではインストーラーの言語を設定します。
f:id:tsu--kun:20190801133122p:plain

【English】がデフォルトでチェックが入っています。

Compiler Setting

ここでは作成したインストーラーの出力先などを設定します。
f:id:tsu--kun:20190801151537p:plain

Custom compiler output folder

作成したインストーラーの出力フォルダを設定します。

Compiler output base file name

作成したインストーラーの名前を設定します。

Custom Setup icon file

作成したインストーラーのアイコンを設定します。

Setup password

インストーラーのパスワードを設定します。

Inno Setup Preprocessor

f:id:tsu--kun:20190801133224p:plain

Yes, use #define compiler directives

チェックすると【#define】でアプリケーション名などをissファイルに記述してくれます。
issファイルとは【InnoSetup】の設定ファイルです。

ここまでで設定は完了です

f:id:tsu--kun:20190801133237p:plain
【finish】をクリックすると下図のように表示されます。
f:id:tsu--kun:20190801133250p:plain
この設定でコンパイルを開始するかどうかを問われていますので
【いいえ(N)】をクリックします。

4.issファイルの中身

ウィザードが完了すると設定した内容が
下記のとおりのスクリプトとして出力されます。
取り合えず空白はなしで、何かしら値を入れてみました。

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{FDCDCE09-8F92-4F62-8158-8DA03C0614A2}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
LicenseFile=C:\test\ライセンス.txt
InfoBeforeFile=C:\test\before.txt
InfoAfterFile=C:\test\after.txt
OutputDir=C:\test\output
OutputBaseFilename=setup
SetupIconFile=C:\test\Microsoft_icon-icons.com_56595.ico
Password=test
Compression=lzma
SolidCompression=yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\test\追加ファイル.txt"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\test\追加フォルダ\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

5.ビルド

設定が完了したのでインストーラーを作成します。
作成方法はGUIから行います。
windowメニューの
【Build】→【Compile】
をクリックすると、ビルドが開始されます。
出力先は【Compiler Setting】で設定した内容になります。
ここでは

OutputDir=C:\test\output
OutputBaseFilename=setup
SetupIconFile=C:\test\Microsoft_icon-icons.com_56595.ico

と設定してあるので
【C:\test\output\setup.exe】
が出力され、実行ファイルのアイコンも下図のとおり設定されています。

f:id:tsu--kun:20190801161837p:plain

6.インストール

インストーラーが出来たので早速インストールしてみます。
【setup.exe】を実行するとインストールが開始します。

言語の選択

言語選択画面が表示されます。
f:id:tsu--kun:20190801163028p:plain
これは【Setup Languages】でチェックした言語になります。

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"

利用する言語を選択し、【OK】をクリックします。

使用許諾契約書の同意

次にライセンスについての内容が表示されます。
f:id:tsu--kun:20190801163444p:plain
これは【Application Documentation】で設定したファイルになります。

LicenseFile=C:\test\ライセンス.txt

同意するを選択し、【次へ(N)】をクリックします。

パスワード

次にパスワード入力画面が表示されます。
f:id:tsu--kun:20190801163748p:plain
これは【Compiler Setting】で設定した内容になります。

Password=test

パスワードを入力し、【次へ(N)】をクリックします。

インストール前の情報

次にインストールする前の情報が表示されます。
f:id:tsu--kun:20190801164041p:plain
これは【Application Documentation】で設定したファイルになります。

InfoBeforeFile=C:\test\before.txt

内容を確認し、【次へ(N)】をクリックします。

インストール先の指定

次にアプリケーションのインストール先を指定する画面が表示されます。
f:id:tsu--kun:20190801164238p:plain
これは【Application Folder】で設定した内容になります。

[Files]
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\test\追加ファイル.txt"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\test\追加フォルダ\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

内容を確認し、【次へ(N)】をクリックします。

追加タスクの選択

次にインストール時に実行するタスク画面が表示されます。
f:id:tsu--kun:20190801164641p:plain
これは【Application Shortcuts】で設定した内容になります。

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

内容を確認し、【次へ(N)】をクリックします。

インストール準備完了

これで準備が完了になります。
f:id:tsu--kun:20190801164909p:plain
特にやることもないので【インストール(I)】をクリックします。

インストール後の情報

インストールが完了すると、インストールした後の情報が表示されます。
f:id:tsu--kun:20190801165058p:plain
これは【Application Documentation】で設定したファイルになります。

InfoAfterFile=C:\test\after.txt

内容を確認し、【次へ(N)】をクリックします。

インストール完了

これでインストールが完了しました。
f:id:tsu--kun:20190801165202p:plain

7.インストール結果の確認

実際に配置されているかエクスプローラーから確認してみます。
f:id:tsu--kun:20190801170617p:plain

問題なくインストール出来ていることが確認出来ました。

8.まとめ

今回はウィザードをとおして【InnoSetup】を使って
インストーラーを作成してみました。
ここでやったことは機能のごく一部で
【issファイル】に直接スクリプトを記述することで
もっと高度な使い方が実現できます。
その情報については、また次回まとめてみたいと思います。