インストーラー作成ツール CreateInstall を使ってみた

CreateInstall とは、アプリケーションのインストーラーを作成するツールです。無料の Free 版、そして有料の Light 版、Full 版があります。

ホームページは http://www.createinstall.com/ です。

この記事では CreateInstall で基本的なインストーラーを作成する方法をご紹介します(既に CreateInstall のいずれかの版をダウンロードしてインストール済みという前提)。

この記事の執筆時点で CreateInstall の最新バージョンは 8.4.9 です。

目次

この記事で作成するインストーラーのダイアログ例

この記事では、CreateInstall で下記のようなインストーラーを作成してみます。(ダイアログ左下のテキストリンクは Light 版または Full 版で表示可能です。Free 版では CreateInstall というテキストが表示されます)

CreateInstallCreateInstall
CreateInstallCreateInstall
CreateInstallCreateInstall
CreateInstall 

CreateInstall の良いところ

インストーラー作成ツールはいろいろあっていくつか試してきたが、なかなかしっくりくるものがなかった。

  • あるものは高価で手がでない。
  • あるものはあらかじめ大量の説明文を読んでしっかり理解しておかないと面倒なことになる可能性がある(レジストリをおかしくする等)。
  • あるものは機能が足りない。
  • あるものは直感的に使えず分かりにくい。

そんな中、やっと出会えました。それが CreateInstall。これは良い。何が良いかというと

  • 無料版(CreateInstall Free)でも十分な機能を持つインストーラーを作成できる
  • 必要に応じて非常に細かい設定が可能(独自のプログラミング言語を実装している)
  • 有料版も手が出せないほど高価じゃない(Light 版が6千円ちょっと、Full 版が1万円ちょっとくらい。30日間の試用も可能。版の比較表はこちら。)
  • UI ダイアログから直感的にインストーラーを作成できる(分かりやすい)
  • プロジェクトファイルがテキストファイルなので、扱いやすい(ちょっとした修正ならテキストエディタで十分。自作スクリプトで自動修正もできる等)
  • CreateInstall に関する知識が浅い状態でも使える(よりシンプルなインストーラー作成ツール CreateInstall Assistant も同梱されている)
  • 動作に安定感がある
  • CreateInstall の UI は日本語にも対応(ヘルプファイル等は英語)
  • CreateInstall の ほぼすべての UI テキストを独自のテキストに変更可能
  • サポートが親切で回答が早い(やりとりは英語で可能。ロシアのチュメニに会社があるのでロシア語でもOKだと思う)

至れり尽くせりといった印象。

CreateInstall の変数の基礎知識

インストーラーの作成を始める前に CreateInstall で使われる変数の基本について知っておきましょう。

  • CreateInstall では、変数の明示的な宣言というものはありません。使いたい場所から使い始めることができます。
  • 変数名に使える文字は半角英数字とアンダースコア(_)です。
  • 変数にはローカル変数とグローバル変数があります。
    • グローバル変数はインストーラーが作成される前にその値で置き換えられます。グローバル変数の値を式以外の場所(テキストメッセージの中など)で取り出すには、変数を $ で挟みます。例えば、プロジェクトファイルのパスを示す $prjpath$ はグローバル変数です。プロジェクト自体の設定をするときに使うことが多い変数だと思います。
    • ローカル変数は作成したインストーラーが実行されるときにその値で置き換えられます。ローカル変数の値を式以外の場所(テキストメッセージの中など)で取り出すには、変数を # で挟みます。例えば、ユーザーのデスクトップのパスを示す #desktop# はローカル変数です。作成するインストーラーの設定をするときに使うことが多い変数だと思います。

CreateInstall の UI を日本語にする

まず CreateInstall の UI を日本語にしておきましょう。

スタートメニューから CreateInstall を起動します。

CreateInstall の最初の起動時には[New Project]ダイアログが表示されます。この設定はあとで他の設定とまとめてできるので、ここでは[Cancel]を選択します。(既に開かれているプロジェクトを新規プロジェクトで置き換えたいときは[OK]をクリック)

[Tools]>[Preferences...]を選択します。

[Settings]で[Language]を[Japanese(日本語)]にして[OK]を選択します。

UI が日本語になりました。

基本的なインストーラーの作り方

プロジェクトファイルを保存するタイミングは人によると思いますが、私はいったんここで[保存]ボタンをクリックして保存しておきます。プロジェクト名は好きな名前にしてください。

[プロジェクト]タブの設定

[プロジェクト]タブを選択して、基本的な設定をしていきます。

[出力]ページの設定

[出力フォルダー]は、作成したインストーラーが出力されるフォルダーです。C:\MyApps\MyApp\Installer のように直接パスを指定することもできますが、私は $prjpath$ を指定しています。$prjpath$ とは、いま設定を行っているプロジェクトファイル(.ci)が置かれている場所です。

[セットアップの実行ファイル]も必要に応じて修正してください。


[製品の記述]ページの設定

[製品名]は(CreateInstall のヘルプによれば)インストール先のパス等に使用することが多いので、パスに使える文字のみを使用したほうが良いでしょう。ここに設定した値はあとで #progname# という変数で参照できます。

[アプリケーション名]は、インストーラーのダイアログ画面等で使用されます。ユーザーに知らせるアプリケーションの名称です。ここに設定した値はあとで #appname# という変数で参照できます。

[会社名]は必要に応じて設定します。ここに設定した値はあとで #compname# という変数で参照できます。

[セッティング]ページの設定

[セットアップの言語]を選択します。作成するインストーラーのダイアログで使用される言語です。私は[Japanese(日本語)]を選択しました。(複数言語にも対応可能)

[インストールパス]は作成したインストーラーがアプリケーションをインストールする場所です。このフィールドをクリックすると下図のように # のボタンが表示されます。このボタンをクリックすると変数を参照できます。クリックしてみてください。

# をクリックすると[変数を選択]ダイアログが表示されます。[フォルダー]タブを選択して progfiles を選択して OK を選択します。

MEMO

[変数を選択]ダイアログの左下の[ヘルプ]をクリックすると、表示されている変数に関する説明が表示されます。

[インストールパス]に #progfiles# と入力されます。#progfiles# はシステムに設定されているプログラムのインストール場所です。通常は C:\Program Files とか C:\Program Files (x86) などに置き換えられます。

[製品の記述]ページの設定」で[会社名]を入力しており、且つインストールパスに会社名を含めたい場合は、#progfiles# に続けて \ と #compname# を入力します。#compname# には[会社名]が代入されます。(バージョン 8.4.9 の時点では)#compname# を[変数を選択]ダイアログから選択できないようなので、直接手で入力するかこの記事からコピペしてください。[会社名]を入力していない場合、#compname# は空文字になるので、その場合は \ と #compname# を入力しないでください

続けて \ を入力し、# ボタンを押して、[変数を選択]ダイアログの[定義済]タブから progname を選択します。

#progname# には「[製品の記述]ページの設定」で指定した[製品名]が代入されます。

[ショートカットフォルダーの名前]には、Windows のスタートメニューに表示するフォルダ名を設定します。ここで設定した名前のフォルダがスタートメニューの最上位の階層に表示され、その下にアプリケーションのショートカット等が格納されます。[変数を選択]ダイアログの[定義済]タブから appname を入れておきましょう。

[セッティング]ページの設定はこれで終わりです。(「[製品の記述]ページの設定」で[会社名]を入力してない場合は、[インストールパス]に \ と #compname# を設定しないでください)

[ダイアログセッティング]ページの設定

下図の赤枠部分は、作成するインストーラーのダイアログで使用されるフォントの設定です。日本語フォントを設定したいときは[ダイアログのフォント]で[カスタムフォント]を選択し、[カスタムフォント]フィールドにフォント名を直接入力します。(バージョン 8.4.9 より前のバージョンでは、一部のフォント名(MS P明朝やMS Pゴシック等)を指定すると、作成されたインストーラーが起動しなくなる不具合があります)。

[アンインストール]ページの設定

変更する必要はないと思いますが、[アンインストーラを含める]にチェックが入っていることを確認しましょう。

[アップデート]ページの設定

変更する必要はないと思いますが、今回は[アップデータを含める]にチェックが入っていないことを確認しましょう(この記事では解説しないため)。

[セットアップビルダー]ページの設定

作成するインストーラーをビルドするときの設定です。ビルドの進行状況を示すダイアログを(ビルド終了時に)自動的に閉じる場合は、[終了時に自動的に閉じる]にチェックを入れます。ビルドの進行状況をじっくり確認したい場合はチェックを外しておきます。

[インストールスクリプト]タブの設定

[インストールスクリプト]タブを選択して、作成するインストーラーがインストールを実行する手順を設定します。

[インストール]の設定

中央のペインで[インストール]を選択して、右側のペインで[管理者権限は不要]にチェックが入っていないことを確認します(通常は管理者権限が必要だと思います)。

灰色の項目について

[インストールスクリプト]タブまたは[アンインストールスクリプト]タブを選択したとき、中央のペインで灰色になっている項目があるかもしれません。それは無効にされている項目です。その項目の上で右クリックして有効/無効を切り替えることができます。

[インストールファイル]の設定

中央のペインで[インストールファイル]を選択して、右側のペインでインストールするソースファイルを指定します。赤枠の[新規]ボタンをクリックしてください。

[新規]ダイアログが表示されるので、ソースファイルを指定します。下図のように、ワイルドカード、ファイルの選択、フォルダーの選択、再帰的な検索等が可能です。

私は *.exe と *.dll を2行で設定しました。

アンインストーラの設定

[ショートカット-生成]には既にアンインストーラが設定されています。[ショートカット-生成]を選択して[管理者として実行]にチェックを入れましょう。

MEMO

ここにチェックが無いと、アンインストーラのショートカットがスタートメニューから消えてしまうことがあるようでした。

ここにチェックを入れてからそういうことが無くなったようです。現象の再現性に不安定なところがあるため確信がありませんが、しばらく検証してみます。

注意

その後の調査によると、Windows 10 において、アンインストーラーやその他のファイル(本体の exe 以外)がスタートメニューに表示されないのは Microsoft の意向だと思われます。

【Windows 10】スタートメニューにアンインストーラーなどのショートカットが表示されない理由」を参照してください。


[ショートカット]の設定

[ショートカット[リスト]]を選択して赤枠の[新規]ボタンをクリックし、[新規]ダイアログの[ショートカットの名前]フィールドをクリックします。

# ボタンをクリックします。

[変数を選択]ダイアログの[定義済]タブで appname を選択します。

#appname# には「[製品の記述]ページの設定」で指定した[アプリケーション名]が代入されます。

[ファイル名]には、そのショートカットと結び付けるファイル名を指定します。ここではインストールするアプリケーションの実行ファイル名を入力します(私は EeoTemplate.exe と入力しました)。

OK を選択してダイアログを閉じると下図のようになります。必要に応じていくつでもショートカットを設定できます。

注意

この記事では説明しませんが、本来、CreateInstall はスタートメニューの2階層以上の深さにもショートカットを作成することが可能です。たとえば

[スタートメニュー]>[1階層目]>[2階層目]>アプリのショートカット

または

[スタートメニュー]>[1階層目]>[2階層目]>[3階層目]アプリのショートカット

というようなショートカットにすることもできます。

ところが Windows 10 では、OS の制限で、ショートカットが1階層目または2階層目にしか表示されないようです。スタートメニューの2階層目より深い階層にショートカットを作成したとしても、[スタートメニュー]の2階層目に表示されてしまいます。

スタートメニューだけでなく、デスクトップにもショートカットを作成しましょう。下図のように、[ショートカットフォルダー]を[DESKTOP]にした設定を追加すれば OK です。

お疲れ様でした! これで一通りの設定は終わりです!

インストーラーをビルドして実行してみる

さっそくインストーラーを作成して実行してみましょう。

[セットアップをビルド]ボタンをクリックしてください。

インストーラーのビルドが始まり、進行状況が表示されます。

作成されたインストーラーが起動します。「[製品の記述]ページの設定」で指定した[アプリケーション名](#appname#)が赤線のところで使われています。[次へ]をクリックしてください。

MEMO

この記事では説明しませんが、インストーラーのダイアログに表示するテキストは自由に変更できます。

インストール先のフォルダーを指定する画面になります。「[製品の記述]ページの設定」で指定した[アプリケーション名](#appname#)が赤線のところで使われています。[次へ]をクリックするとインストールが始まります。

インストールの進行状況が表示されます。

インストールが完了しました。[完了]ボタンをクリックしてダイアログを閉じましょう。

スタートメニューを確認してみましょう。ちゃんとショートカットが作成されてますね。

注意

Windows 10 において、アンインストーラーやその他のファイル(本体の exe 以外)がスタートメニューに表示されないことがあります。その後の調査によると、それは Microsoft の意向だと思われます。

【Windows 10】スタートメニューにアンインストーラーなどのショートカットが表示されない理由」を参照してください。

スタートメニューからインストールしたアプリケーションを選択して、起動することを確認しましょう。確認できたら、次はアンインストーラを試すので、終了しておいてください。

もちろん Windows の[設定](コントロールパネル)の[アプリと機能]のほうにもアンインストーラが設定されています。こちらはタイトルが「[製品の記述]ページの設定」で指定した[製品名](変数 #progname#)になってますね。

アンインストーラを実行してみる

アンインストーラを実行すると下記のようなダイアログが表示されます。[次へ]をクリックするとアンインストールが始まります。

CreateInstall

 

[完了]ボタンをクリックして、インストールしたアプリケーションがアンインストールされていることを確認してください。


さらに機能を追加してみる

さらに機能を拡張してみましょう。

インストールが完了したら自動的にアプリを起動させたい

インストールが完了したら自動的にアプリが起動するようにしてみましょう。

  1. [インストールスクリプト]タブを選択し、
  2. 左側ペインで[アプリケーション]フォルダを開いて[アプリケーションの起動]を選択し、
  3. その右のペインで[ダイアログ-完了]を選択し、
  4. [追加]ボタンをクリック

します。

灰色の項目について

[インストールスクリプト]タブまたは[アンインストールスクリプト]タブを選択したとき、左側のペインで灰色になっている項目があるかもしれません。それは現在使用している版の CreateInstall では使用が制限されている項目です。(版の比較表はこちら

[ダイアログ-完了]の下に[アプリケーションの起動]が追加されたら、右側ペインの[ファイル名]にアプリの実行ファイル名を入力します。

[セットアップをビルド]ボタンをクリックして、テストしてみましょう。

変数を定義する

これまでの手順で、実行ファイル名を数か所に手入力してきました。これはあまりスマートなやり方ではないので、変数を定義して、変数に実行ファイル名を代入して使いましょう。

[インストールスクリプト]タブの任意の位置で変数を定義するには、

  1. 左側ペインで[変数]フォルダを開いて[値を設定]を選択し、
  2. その右側のペインで変数を定義したい場所の上(今回は[背景])を選択し、
  3. [追加]ボタンをクリック

します。

MEMO

[インストールスクリプト]タブの一番上の[インストール]フォルダを選択して[追加]ボタンを押すと、インストールスクリプトの一番下に挿入されてしまうので注意してください。マウスでドラッグすれば挿入された場所を変更できます。

[背景]の下に[値を設定]が追加されたら、右側のペインの[新規]ボタンをクリックして[新規]ダイアログの[変数名]に appExeName と入力し、[値]に実行ファイル名(私の場合は EeoTemplate.exe)を入力します。

[新規]ダイアログの OK をクリックして閉じると、下図のようになります。これで "EeoTemplate.exe" という値を持つ変数 appExeName を定義できました。

[ショートカット[リスト]]でハードコードしていた実行ファイル名を変数に置き換えます。[ショートカット[リスト]]を選択し、修正対象の行をダブルクリックするか[編集]ボタンをクリックします。

[編集]ダイアログの[ファイル名]に入力されているテキストを削除して # をクリックし、[変数を選択]ダイアログの[スクリプト]タブで appExeName を選択して OK をクリックします。[編集]ダイアログの[ファイル名]に #appExeName# と設定されたら[編集]ダイアログの OK をクリックして閉じます。

必要に応じて他の行も修正します。

[アプリケーションの起動]でハードコードしていた実行ファイル名も変数に置き換えます。

変数の設定が終わったら、[セットアップをビルド]ボタンをクリックして、テストしてみましょう。

自動的にアプリを起動するかをオプションにしたい

インストールが完了したら自動的にアプリを起動するかどうかをオプションにしてみましょう。

この記事の「変数を使用してみる」と「インストールが完了したら自動的にアプリを起動させたい」の設定が済んでいるものとします。

前述の「変数を使用してみる」のところで追加した[値を設定]を選択して、その右側のペインで新しい変数「executeApp」を追加します。値は 1(True)にしておきましょう(オプションのチェックボックスにデフォルトでチェックを入れる場合)。

次に[ダイアログ-完了]を選択します。その右側のペインで[チェックボックス追加]の[新規]ボタンをクリックして、[新規]ダイアログの[変数名]にさきほど追加した変数 executeApp を設定し([変数を選択]ダイアログの[スクリプト]タブから選択できます)、[テキスト]にはチェックボックスのタイトルを入力します(私は「アプリケーションを起動する(&R)」と入力しました)。

[新規]ダイアログの OK をクリックして閉じるとこうなります。ユーザーがインストーラーの[完了]ダイアログでこのチェックボックスにチェックを入れると、変数 executeApp に 1(True)が設定されるというわけです。

次に[アプリケーションの起動]を選択します。右側のペインに[If 条件]があります。ここに設定した条件が True のときに[アプリケーションの起動]が実行され、False であれば実行されません。ここに #executeApp# を設定します([変数を選択]ダイアログの[スクリプト]タブから選択できます)。

ビルドして実行してみましょう。インストーラーの[完了]ダイアログに[アプリケーションを起動する]チェックボックスが表示されるようになりました。チェックが入っている場合のみ、このダイアログを閉じた後でアプリケーションが起動します。

CreateInstall

デスクトップにショートカットを作成するかをオプションにしたい

デスクトップにショートカットを作成するかどうかをオプションにしてみましょう。

この記事の「変数を使用してみる」と「[ショートカット]の設定」が済んでいるものとします。

変数を使用してみる」のところで追加した[値を設定]を選択して新しい変数「createShortcutOnDesktop」を追加します。値は 1(True)にしておきましょう(オプションのチェックボックスにデフォルトでチェックを入れる場合)。

次に[ダイアログ-セットアップのパス]を選択します。右側のペインの[チェックボックスの追加]で[新規]ボタンをクリックして、[新規]ダイアログの[変数名]に createShortcutDesktop を設定し([変数を選択]ダイアログの[スクリプト]タブから選択できます)、その下の[テキスト]にはチェックボックスのタイトルを入力します(私は「ショートカットをデスクトップに作成する(&D)」と入力しました)。

[新規]ダイアログの OK をクリックして閉じるとこうなります。

次に、[ショートカット[リスト]]を選択し、デスクトップに作成するショートカットの行をダブルクリックするか[編集]ボタンをクリックして[編集]ダイアログを開き、[If 条件]に createShortcutOnDesktop と設定します([変数を選択]ダイアログの[スクリプト]タブから選択できます)。createShortcutOnDesktop が 1(True)の場合に、デスクトップにショートカットが作成されることになるわけです。

ビルドしてテストしてみましょう。インストーラーの[セットアップのパス]の画面に[ショートカットをデスクトップに作成する]チェックボックスが表示されるようになりました。ここにチェックが入っているときのみ、デスクトップにショートカットが作成されます。

ファイルのコピーを開始する前に確認画面を表示したい

インストールでファイルのコピーが始まる直前に、下記のような確認画面が表示されるようにしてみましょう。

CreateInstall

この記事の「デスクトップにショートカットを作成するかをオプションにしたい」の設定が済んでいるものとします。

  1. 左ペインの[ダイアログ]フォルダを開いて、[ダイアログ-インストールの準備ができました]を選択します。
  2. その右側のペインで[ダイアログ-セットアップのパス]を選択します。
  3. [追加]ボタンをクリックします。

[ダイアログ-セットアップのパス]の下に[ダイアログ-インストールの準備ができました]が追加されたら、右側のペインの[追加設定]で[新規]ボタンをクリックして、[新規]ダイアログの

  • [変数名]に createShortcutOnDesktopYesNoStr と入力し、
  • [値]に「はい」と入力し、
  • [If 条件]に createShortcutOnDesktop を設定([変数を選択]ダイアログの[スクリプト]タブから選択できます)

します。

さきほど設定した[ショートカットをデスクトップに作成する]チェックボックスにチェックが入っていると createShortcutOnDesktop の値が 1(True)になるので、その場合は createShortcutOnDesktopYesNoStr に「はい」が設定されるわけです。

[新規]ダイアログの OK ボタンをクリックして閉じたら、再び[新規]ボタンをクリックして[新規]ダイアログの

  • [変数名]に createShortcutOnDesktopYesNoStr と設定し、
  • [値]に「いいえ」と入力し、
  • [If 条件]に !createShortcutOnDesktop を設定

します。さきほどと違って、[If 条件]の値の先頭に否定を示す ! があることに注意してください。[新規]ダイアログの OK ボタンをクリックして閉じると下図のようになります。

次に、上のほうにあるテキストボックスでダイアログに表示するテキストを入力します。たとえば「#lpathdest#:#setuppath#    デスクトップにショートカットを作成する:#createShortcutOnDesktopYesNoStr#」のように入力します。

  • #lpathdest# はあらかじめ定義されている「コピー先のフォルダー」というテキストです。
  • #setuppath# は現在のインストール先フォルダです。
  • #createShortcutOnDesktopYesNoStr# には「はい」または「いいえ」が代入されます。

設定が終わったら、ビルドしてテストしてみましょう。

インストールしようとしているアプリが実行中なら警告を表示したい(Light/Full 版のみ)

注意

この機能の実現には Light 版または Full 版が必要です。

ユーザーがインストール(またはアンインストール)しようとしているアプリが既に実行されているとき、そのままインストール(またはアンインストール)を続行してもうまくいきません。インストーラー(またはアンインストーラ)がフリーズしてしまうこともあります。

インストール(またはアンインストール)しようとしているアプリが実行中のときは、そのことをユーザーに警告するようにしてみましょう。

この記事の「変数を使用してみる」の設定が済んでいるものとします。

 

左側のペインで[プログラミング]フォルダを開いて[While文]を選択し、その右側のペインで[ダイアログ-ようこそ]を選択し、[追加]ボタンをクリックします。

[ダイアログ-ようこそ]の下に[While文]が追加されたら、右側のペインで[新規]ボタンをクリックし、[新規]ダイアログの[変数名]に noprocess と入力し、[比較タイプ]で[空 / ゼロ]を選択します。

While の閉じ括弧

CreateInstall のスクリプト作成画面では、While の明示的な閉じ括弧のようなものは存在しません。画面を見れば階層構造が明確なので(どのコードが While の中にあるのか明確なので)、書く必要がないということなのでしょう。

OK をクリックして[新規]ダイアログを閉じると下図のようになります。これは変数 noprocess の値が空かゼロ(False)である限り(つまりプロセスが存在する場合) While 文をループするという意味になります。noprocess の初期値は空または 0(False)なので、必ず一度は While 文を実行することになります。

左側のペインで[システム]フォルダを開いて[チェック]を選択し、その右側のペインで[While文]の[空]を選択し、[追加]ボタンをクリックします。

[While文]の中に[チェック]が追加されたら、右側のペインで

  • [チェック対象]で[プロセス]を選択し、
  • [名前]に #appExeName# を設定し([変数を選択]ダイアログの[スクリプト]タブから 選択できます)、
  • [条件が偽のとき]にチェックを入れ、
  • [値を格納する変数]に noprocess を設定([変数を選択]ダイアログの[スクリプト]タブから 選択できます)

します。これは #appExeName#(アプリの実行ファイル)のプロセスが見つからないとき(偽のとき)、noprocess に 1(True)が格納されるという意味になります。

左側のペインで[メッセージとサウンド]フォルダを開いて[メッセージ]を選択し、その右側のペインで[チェック]を選択し、[追加]ボタンをクリックします。

[チェック]の下に[メッセージ]が追加されたら、右側のペインで

  • [タイプ]で[警告]を選択し、
  • [テキスト]に「#progname# が実行されています。継続するには #progname# を閉じてください。」というエラーメッセージを設定し、
  • [ボタン]で[再試行(リトライ) + キャンセル]を選択し、
  • [値を格納する変数]に closeProcessRes と入力し、
  • [If 条件]に !noprocess と設定(頭に否定を示す ! があることに注意)

してください。

これは noprocess が False であるとき(つまりプロセスが存在しているとき)エラーメッセージを表示し、そのエラーメッセージのダイアログでユーザーが選択したボタン(再試行(リトライ)またはキャンセル)の値を closeProcessRes 変数に格納するという意味になります。エラーメッセージの #progname# には「[製品の記述]ページの設定」で入力した[製品名]が代入されます。

左側のペインで[プログラミング]フォルダを開いて[If 文]を選択し、その右側のペインで[メッセージ]を選択し、[追加]ボタンをクリックします。

[メッセージ]の下に[If 文]が追加されたら、右側のペインで[新規]ボタンをクリックし、[新規]ダイアログで[変数名]に closeProcessRes を設定し([変数を選択]ダイアログの[スクリプト]タブから 選択できます)、[値]に 2 を入力します。

If の閉じ括弧

CreateInstall のスクリプト作成画面では、If の明示的な閉じ括弧のようなものは存在しません。画面を見れば階層構造が明確なので(どのコードが If の中にあるのか明確なので)、書く必要がないということなのでしょう。

[新規]ダイアログの OK ボタンをクリックして閉じると下図のようになります。これは closeProcessRes の値が 2 であるとき If 文を実行するという意味になります(前述の[再試行(リトライ) + キャンセル]のボタンのうち、ユーザーが再試行(リトライ)をクリックした場合は 1 が返り、キャンセルをクリックした場合は 2 が返ります)。

ボタンが返す値

ボタンが返す値は次の通りです。OK = 1、キャンセル = 2、中止 = 3、再試行(リトライ)= 4、無視 = 5、はい = 6、いいえ = 7、再実行 = 10、継続 = 11

左側のペインで[プログラミング]フォルダを開いて[終了 / リブート]を選択し、その右側のペインで[If 文]の下の[空]を選択し、[追加]ボタンをクリックします。

[If 文]の中に[終了 / リブート]が追加されます。右側のペインはデフォルトで下図のようになっていると思うので、その場合は変更不要です。

次に[ダイアログ-セットアップのパス]を選択し、右側のペインの[追加設定]の[新規]ボタンをクリックして[変数名]に noprocess を設定し([変数を選択]ダイアログの[スクリプト]タブから 選択できます)、値に 0 と入力します。これは、ユーザーが[セットアップのパス]のダイアログまで進んでから[戻る]ボタンを押して[ようこそ]ダイアログに戻った場合に備えるためです。

ユーザーがインストールダイアログの[セットアップのパス]まで進んだということは noprocess の値が 1(True)になっているので、それを初期値の  0(False)に戻しておくわけです。

[新規]ダイアログの OK ボタンを押して閉じます。

[インストールスクリプト]タブの設定が終わったので、今度は[アンインストールスクリプト]タブの修正を行いますが、その前に[インストールスクリプト]タブの[値を設定]の上で右クリックしてコピーしておきます。

[アンインストールスクリプト]タブをクリックして[ダイアログ-確認]を選択します。

[ダイアログ-確認]の上で右クリックしてペーストします。

[ダイアログ-確認]の下に[値を設定]が追加されます。[アンインストールスクリプト]タブで使用する変数は appExeName のみなので、右側のペインで他の変数を選択して削除します。

[インストールスクリプト]タブに戻って、[While文]の上で右クリックしてコピーします。

また[アンインストールスクリプト]に切りかえて、[値を設定]の上で右クリックしてペーストします。

[値を設定]の下に[インストールスクリプト]タブで作成したのと同じ[While文]が追加されます。

[セットアップをビルド]ボタンをクリックしてビルドが終わったら、インストール(またはアンインストール)しようとするアプリケーションをあらかじめ実行してから、インストーラー(またはアンインストーラ)を実行してみましょう。インストーラー(またはアンインストーラ)の2番目のダイアログに進もうとすると、下図のような警告が表示されるはずです。

ライセンス契約書を表示する

下図のようなライセンス契約書を表示するようにしてみましょう。

あらかじめ表示する文章を .rtf または .txt ファイルで作成しておいてください。

[インストールスクリプト]タブのスクリプトにはデフォルトで[ダイアログ-ライセンス]が挿入されていると思います(無い場合は、左ペインの[ダイアログ]フォルダの中にあるので、そこから挿入してください)。

文字が薄い灰色になっていたら(無効状態になっていたら)、その上で右クリックして有効にします。

右のペインで[ライセンスファイル]を指定して、ダイアログに表示する[ボタン]を選択します。

MEMO

インストールしようとしているアプリが実行中なら警告を表示したい」で[ダイアログ-セットアップのパス]の[追加設定]に noprocess = 0 を追加した場合、そして下図のように[ダイアログ-ライセンス]を[ダイアログ-セットアップのパス]の直前で使用する場合は、[ダイアログ-セットアップのパス]の[追加設定]の noprocess の行を選択して右クリックしてカットし、[ダイアログ-ライセンス]の[追加設定]のところにペーストしておきましょう。

 ↓

以上です。ビルドしてテストしてください。

コード署名の設定

インストーラーにコード署名をするには、まず、署名用のバッチファイル(.bat)を作成します。書名対象ファイルのフルパスを第一引数で受け取るように作成してください。

たとえばバッチファイルの中で set targetFileFullname=%1 と記述すればバッチファイルの第一引数の値が targetFileFullname に格納されます。その値をバッチファイルの中で参照するには %targetFileFullname% と記述します。

バッチファイルの作成が完了したら、CreateInstall のプロジェクトファイルを開いて、[プロジェクト]タブ >[セットアップビルダー]を選択し、[コード署名用のアプリケーション]のところに作成したバッチファイルをフルパスで指定します。私の場合、プロジェクトファイルと同じフォルダに CodeSignInstaller.bat を作成したので、「$prjpath$\CodeSignInstaller.bat」と入力しました。

[インストールファイルの署名用のパラメータ]には、バッチファイルに与える引数を指定します。"<exefilename>" と記述すると、バッチファイルの第一引数にインストーラーのフルパスが渡されます。

同様に、[アンインストーラーファイルの署名用のパラメータ]に "<exefilename>" と記述すればアンインストーラーのフルパスが、[アップデータファイルの署名用のパラメータ]に "<exefilename>" と記述すればアップデータのフルパスが、バッチファイルの第一引数に渡されます。

なお、バッチファイルの最後に「timeout 5」などと記述しておくと、バッチファイルが終了するまで5秒間待機するので(署名後のコマンドウィンドウが開いたままになるので)、デバッグ等に役立ちます。

MEMO

ちなみに CreateInstall のヘルプファイルでは、ksoftware.net のフリーソフト「kSign」を使用して署名する方法も紹介されています。

スタートメニュー(スタートスクリーン)に関する Microsoft のガイドラインについて

Windows 10 では、スタートメニュー(スタートスクリーン)に関する Microsoft のガイドラインが厳しくなっているようです(以前はガイドラインに沿っていなくても放置されていたけれど、最近 Microsoft が強硬手段に出ているようです)。

【Windows 10】スタートメニューにアンインストーラーなどのショートカットが表示されない理由」を参照してください。

コメントの投稿

avatar
  購読する  
通知を受け取る対象