Inno Setup で ネットワークインストーラを作成する方法

どうもこんにちは。

今回は、Inno Setup5 で ネットワークインストーラを作成する方法を皆さんに紹介したいと思います。

ネットワークインストーラを作成する方法

それでは本題に行きましょう。

準備

今回は、Inno Download Pluginを使っていこうと思います。

サイト(https://mitrichsoftware.wordpress.com/inno-setup-tools/inno-download-plugin/)によるとオープンソースでZlib licenseで公開されているそうです。

サイトに下のほうにあるDownloadからダウンロードしてインストールします。

↑の画像はクリックすると拡大します。

インストーラを作成する

サンプルプログラムを作ってみました

[Setup]
;アプリ名
AppName=MyApp
;ようこそ画面
DisableWelcomePage = no
;アプリ名+バージョン
AppVerName=MyApp
;作成するインストーラのファイル名
OutputBaseFilename=MyApp
;初期インストールディレクトリ
DefaultDirName={pf}\MyApp
;プログラムグループ設定
DisableProgramGroupPage = no
DefaultGroupName = MyApp
;進捗表示
ShowTasksTreeLines=yes

[Icons]
;スタートメニューにリンクを追加
Name: "{group}\MyApp"; Filename: "{app}\MyApp.exe"; WorkingDir: "{app}"

;ネットワークインストーラ用のファイル読み込み
#include <idp.iss>

[Languages]
;日本語用のファイル読み込み
Name: japanese; MessagesFile: compiler:Languages\Japanese.isl

[UninstallDelete]
;アンインストール時にMyApp.exeを削除する
Type: files; Name: "{app}\MyApp.exe"

;ここから下がネットワークインストール部分
[Code]
procedure InitializeWizard();
begin
    idpAddFile('http://127.0.0.1/MyApp.exe', ExpandConstant('{tmp}\MyApp.exe'));

    idpDownloadAfter(wpReady);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
    if CurStep = ssPostInstall then 
    begin
        FileCopy(ExpandConstant('{tmp}\MyApp.exe'), ExpandConstant('{app}\MyApp.exe'), false);
    end;
end;

翻訳について

自信はありませんが大体翻訳してみました。よろしければご利用ください。

使い方はインストーラのファイルに次の内容を張り付けるだけです。

[CustomMessages]
IDP_FormCaption           =追加ファイルをダウンロード中
IDP_FormDescription       =セットアップが追加ファイルをダウンロード中です。しばらくお待ちください。
IDP_TotalProgress         =Total progress
IDP_CurrentFile           =Current file
IDP_File                  =File:
IDP_Speed                 =Speed:
IDP_Status                =Status:
IDP_ElapsedTime           =経過時間:
IDP_RemainingTime         =残り時間:
IDP_DetailsButton         =詳細
IDP_HideButton            =隠す
IDP_RetryButton           =再試行
IDP_IgnoreButton          =無視
IDP_KBs                   =KB/s
IDP_MBs                   =MB/s
IDP_X_of_X                =%.2f of %.2f
IDP_KB                    =KB
IDP_MB                    =MB
IDP_GB                    =GB
IDP_Initializing          =初期化中...
IDP_GettingFileInformation=ファイル情報の取得中...
IDP_StartingDownload      =ダウンロードの開始...
IDP_Connecting            =接続中...
IDP_Downloading           =ダウンロード中
IDP_DownloadComplete      =ダウンロード完了
IDP_DownloadFailed        =ダウンロード失敗
IDP_CannotConnect         =接続失敗
IDP_CancellingDownload    =ダウンロードをキャンセル中...
IDP_Unknown               =Unknown
IDP_DownloadCancelled     =ダウンロードキャンセル
IDP_RetryNext             =接続を確認し、[再試行]をクリックしてファイルをもう一度ダウンロードしてください。または、[次へ]をクリックしてインストールを続行してください。
IDP_RetryCancel           =接続を確認して[再試行]をクリックしてファイルをもう一度ダウンロードするか、[キャンセル]をクリックしてセットアップを終了してください。
IDP_FilesNotDownloaded    =次のファイルはダウンロードされませんでした:
IDP_HTTPError_X           =HTTP error %d
IDP_400                   =Bad request (400)
IDP_401                   =Access denied (401)
IDP_404                   =File not found (404)
IDP_407                   =Proxy authentication required (407)
IDP_500                   =Server internal error (500)
IDP_502                   =Bad gateway (502)
IDP_503                   =Service temporaily unavailable (503)

終わりに

ネットワークインストーラって簡単に作れるんですね。

サイズの大きいファイルや通常インストールしないファイル(オフラインヘルプなど)をインストールするときに使えそうですね。

参考にしたサイト

https://stackoverflow.com/questions/6887428/inno-setup-install-file-from-internet