InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2...

24
~ InstallShield 2015 ~ InstallShield 実践トレーニング Sample

Transcript of InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2...

Page 1: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

~ InstallShield 2015 ~

InstallShield 実践トレーニング

Sample

Page 2: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 1

目次

第 1 章 ターゲットシステムの環境に適したインストーラーを作成する ............................................................................. 3 1.1 Windows Installer での条件設定 ............................................................................................................................. 4

1.1.1 Windows Installer のプロパティ ....................................................................................................................... 4 1.1.2 条件の形式 ........................................................................................................................................................ 5

1.2 インストール要件とシステム検索 ........................................................................................................................... 6 1.2.1 インストール要件 .............................................................................................................................................. 6 1.2.2 システム検索 ..................................................................................................................................................... 6

1.3 多言語対応のインストーラー ................................................................................................................................ 10 1.3.1 多言語インストーラー .................................................................................................................................... 10 1.3.2 多言語インストーラーの作成 ........................................................................................................................... 11 1.3.3 ローカライズ ................................................................................................................................................... 14

1.4 64bit オペレーティングシステムをターゲットにする ........................................................................................... 18 1.4.1 32bit アプリケーションと 64bit アプリケーション ....................................................................................... 18 1.4.2 64bit アプリケーションのインストール .......................................................................................................... 18

第 2 章 インストール中に実行する カスタマイズ処理を実装する .................................................................................... 23 2.1 カスタムアクション ............................................................................................................................................... 24

2.1.1 インストールシーケンスとアクション ........................................................................................................... 24 2.1.2 様々なカスタムアクション ............................................................................................................................. 29

2.2 テキストベースのファイルの編集 ......................................................................................................................... 35 2.2.1 テキストファイルの変更 ................................................................................................................................. 35

第 3 章 ユーザーインターフェイスをカスタマイズする .................................................................................................... 39 3.1 ダイアログの編集 .................................................................................................................................................. 40

3.1.1 ダイアログのコントロールイベント ............................................................................................................... 40 3.1.2 コントロール条件 ............................................................................................................................................ 46 3.1.3 レイアウトの変更、コントロールの追加 ........................................................................................................ 47

3.2 ダイアログボックスの作成 .................................................................................................................................... 50 第 4 章 1 つのインストーラーで複数の パッケージやランタイムを配布する .................................................................. 57

4.1 再配布可能ファイルの配布/複数製品のインストール ............................................................................................ 58 4.1.1 InstallShield で提供されている機能 ............................................................................................................... 58

4.2 マージモジュール .................................................................................................................................................. 59 4.3 InstallShield 前提条件 ........................................................................................................................................... 61

4.3.1 InstallShield 前提条件 ..................................................................................................................................... 61 4.3.2 独自の前提条件の作成 .................................................................................................................................... 63

4.4 スイートインストーラー ....................................................................................................................................... 70 4.4.1 スイートインストーラー ................................................................................................................................. 70 4.4.2 スイートプロジェクトの作成 .......................................................................................................................... 73

第 5 章 アップデートと トラブルシューティング ............................................................................................................. 85 5.1 アップグレードの基本 ........................................................................................................................................... 86

5.1.1 アップグレードの種類 .................................................................................................................................... 86 5.2 アップデートのトラブルシューティング .............................................................................................................. 89

5.2.1 アップデート時のトラブル ............................................................................................................................. 89 5.2.2 ログファイルの取得と確認 ............................................................................................................................. 91

Sample

Page 3: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

2

Sample

Page 4: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 3

第1章 ターゲットシステムの環境に適した

インストーラーを作成する

Sample

Page 5: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 4

1.1 Windows Installer での条件設定

1.1.1 Windows Installer のプロパティ

InstallShield では、ターゲットシステムのインストール要件やコンポーネントのインストール要件などインストーラーに

様々な条件を指定できます。これらの条件は、Windows Installer のプロパティを使用して判定することができます。

Windows Installer は、インストーラーの実行時に OS の情報やインストールに関する情報をプロパティに格納します。

例)

オペレーティングシステムのプロパティ

VersionNT WindowsNT 系のオペレーティングシステムのバージョン

ServicePackLevel Windows サービスパックのバージョン

SystemLanguageID システムのデフォルト言語(ロケール)

MsiNTProductType Windows の製品タイプ

ユーザーのプロパティ

Privileged 昇格した権限で動作しているかどうか

UserLanguageID ユーザーのデフォルト言語

LogonUser ログオンしているユーザー名

必須のプロパティ

ProductCode 製品コード

ProductLanguage 製品の言語

ProductVersion 製品のバージョン

ProductName 製品名

【参考】

Property Reference

http://msdn.microsoft.com/ja-jp/library/aa370905(en-us,VS.85).aspx

Sample

Page 6: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 5

1.1.2 条件の形式

ほとんどの条件は MSI のプロパティ値と固定値を比較します。

条件は[プロパティ オペレータ 値]の形式で表されます。条件を組み立てる時にオペレータに比較演算子や論理演算子

を使うことができます。

比較演算子 論理演算子 ※大文字と小文字を区別しない

= 等しい not 右側の条件を満たさない

<> 等しくない and 左側と右側の条件を同時に満たす

> より大きい or 左側と右側の条件のうち少なくとも 1

つを満たす >= 等しいか、より大きい

< より小さい xor 左側と右側の条件のうちどちらか 1 つ

だけを満たす <= 等しいか、より小さい

例えば、プロパティ VersionNT プロパティ は、「(メジャー OS バージョン * 100)+ マイナー OS バージョン」の値が

定義されます。条件[VersionNT=603]はターゲットシステムが Windows 8.1、Windows 10 もしくは Windows Server 2012

R2 である場合に、真になります。

また、条件でプロパティ名だけを指定した場合(オペレータまたは値なしで)、条件は単純にプロパティの存在有無を判断し

ます。例えば、条件[VersionNT]はプロパティ VersionNT が値を持っている場合に真になります(インストールは Windows

NT ベースのシステム上で実行されます。)

1 つの条件内で論理式を組み合わせるため、論理演算子を使用できます。「VersionNT=603 And MsiNTProductType=1」は、

ターゲットシステムが Windows 8.1、Windows 10 の時、真になります。

プロパティはあらかじめ用意されているものだけでなく、自分で作成したプロパティ(MYPROPERTY など)も使用できま

す。

Sample

Page 7: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 6

1.2 インストール要件とシステム検索

1.2.1 インストール要件

InstallShield のプロジェクトアシスタントには、[インストール要件]のページがあります。特定のターゲットマシンでのみ

インストールが実行されるように、ひとつもしくは複数の OS を指定することができます。

ここで、設定したインストール条件は IDE の[一般情報]ビューで[インストール条件]に設定されます。条件が満たされ

なかったときに表示されるメッセージは、[インストール条件]で変更もできます。

インストール条件は MSI データベースの LaunchConditions テーブルに格納されます。

1.2.2 システム検索

InstallShield では、ターゲットシステムの環境を確認するシステム検索という機能があります。

システム検索を使用すると、実行時にターゲットシステム上のファイルを検索し、見つけた場合にはファイルのフルパスを

プロパティに格納できます。また、レジストリ、XML ファイル、Windows フォルダーの INI ファイルからのデータの読み

出しもできます。図は、ターゲットシステム上の Program Files フォルダーにある isdev.exe という実行ファイルを検索す

る設定例です。

Sample

Page 8: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 7

実践 システム検索を利用して以下のレジストリ値が 1.0 でない場合、インストールを中断します。

HKEY_LOCAL_MACHINE¥Software¥Networld¥AppSearch

値:Version データ:1.0

1) [動作とロジック]-[システム検索]ビューにて、右クリックから[追加]を選択し、システム検索ウィザードを

起動します

2) [ようこそパネル]を次へ進めると、[検索する対象を指定してください]パネルが表示されるので、「レジストリエ

ントリ」を選択し、[次へ]ボタンをクリックします

※このパネルでファイルやフォルダーを検索するか、レジストリ値を読み出すかなど指定できます

TIPS

プロジェクトアシスタントの[インストール要件]ページでは、あらかじめいくつかのシステム検索設定を用

意してあり、チェックをつけるだけでこの機能を利用できます。

NOTE

[システム検索]ビューでの設定は AppSearch テーブルに書き込まれます。

実行時には AppSearch アクションが検索に関係するテーブルを読み込み、指定したファイルやレジストリや

INI ファイルの情報を指定したパブリックプロパティに格納します。このプロパティはレジストリ値を書き込む

のに使用したり、コンポーネントやアクションの条件として使用したりできます。

Sample

Page 9: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

【中 略】

Sample

Page 10: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 23

第2章 インストール中に実行する

カスタマイズ処理を実装する

Sample

Page 11: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 24

2.1 カスタムアクション

2.1.1 インストールシーケンスとアクション

◆シーケンスとアクション

Windows Installer は、あらかじめ定義されている標準アクションとユーザーが独自に定義したカスタムアクションでインス

トールロジックを制御しています。

標準アクションは、Windows プログラミングの Windows API のようなものです。標準アクションについては、Windows

Installer は動作を知っているので、標準アクションの名前をシーケンス内に指定するだけで済みます。

また、カスタムアクションは、Windows Installer がネイティブでサポートしていない処理を行うときに使用します。カスタ

ムアクションを作成すると、Windows Installer はそのカスタムアクションをインストール中に実行します。Windows Installer

のカスタムアクションはプログラムのユーザー定義関数のようなものです。

そして、これらのアクションを呼び出す順番を定義したメインプログラムのようなものをインストールシーケンスと呼びま

す。インストールシーケンスは、以下の 2 つのシーケンスにより構成されます。

ユーザーインターフェイスシーケンス

ターゲットシステムやユーザーからの情報取得、ダイアログボックスを表示するアクションを含む。ユーザーのコンピ

ューターへは一切変更を加えない。

実行シーケンス

ターゲットシステムに変更を加える。ユーザーインターフェイスは表示しない

NOTE

サイレントインストールを実行したときには、Windows Installer はユーザーインターフェイスシーケンスをス

キップします。ダイアログアクションでは、Windows Installer はダイアログを表示します。実行シーケンスで

はダイアログアクションを使えません。

Sample

Page 12: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 25

◆インストールシーケンス

InstallShield では、[カスタム アクションとシーケンス]ビューでインストールシーケンスを確認できます。

インストールシーケンスの[ユーザーインターフェイスシーケンス]と[実行シーケンス]は順番に並べたアクションの連

続で構成されます。

プロパティ 内容

シーケンス番号 シーケンスでアクションが実行されるタイミングを決定。シーケンス番号の小さい

順にアクションを実行

条件 アクションの条件を指定。インストール時に条件が成立したアクションのみ実行

コメント InstallShield のプロジェクトに保存されるだけで、インストール時には使用されな

また、シーケンスの最初の 3 つのアクションはマイナスのシーケンス番号です。マイナスのシーケンス番号は Windows

Installer では特別な意味を持っていて、通常のシーケンスでは実行されずインストールの終了時にインストールの戻り値に

依存して実行されます。

アクション名 シーケンス

番号

インストールの戻り値と実行されるアクション

SetupCompleteSuccess -1 戻り値が 1 のとき、このアクションを実行

インストールが成功したときに、戻り値 1 を返す

SetupInterrupted -2 戻り値が 2 のとき、このアクションを実行

インストールが中断されたときに、戻り値 2 を返す

SetupCompleteError -3 戻り値が 3 のとき、このアクションを実行

インストール中にエラーが発生し、インストールが終了し

たときに、戻り値 3 を返す

- -4 戻り値が 4 を戻すこともあり、そのときシーケンス番号

-4 のアクション(この例には存在しない)を実行

インストールが一時停止したときに、戻り値 4 を返す

Sample

Page 13: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

【中 略】

Sample

Page 14: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 39

第3章 ユーザーインターフェイスを

カスタマイズする

Sample

Page 15: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 40

3.1 ダイアログの編集

InstallShield では標準で多くのダイアログボックスが用意されており、[ユーザーインターフェイス]-[ダイアログ]ビュ

ーで編集を行うことができます。[ダイアログ]ビューには、[動作]ノードと[言語]ノードの 2 つのノードがあり、[動作]

ノードではダイアログのインターフェイス動作を編集し、[言語]ノードではレイアウトの編集を行います。

3.1.1 ダイアログのコントロールイベント

ダイアログの[動作]ノードでは、そのダイアログに含まれるコントロール(名前とタイプ)が表示されます。特定のコン

トロールを選択すると、[イベント]設定にダイアログのコントロールイベントが表示されます。

Sample

Page 16: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 41

中央ペインでコントロールを選択すると、右ペインの[イベント]でコントロールに関連付けされているコントロールイベ

ントを参照することができます。

コントロールイベントの設定

イベントの設定では、「イベントの種類」「条件」「イベントの引数」を指定します。イベントの引数は、選択するイベントに

よって設定できる項目が異なります。

また、イベントの[条件]フィールドではイベントを実行する条件を指定します。コンポーネントやカスタムアクションの

条件と違って、コントロールイベントの[条件]を空白にすると、イベントは実行されません。コントロールイベントが常

に実行されるように指定するには、条件に[1]を入力します。特定の条件を満たすときだけ実行するには、「SHOWMSG=1」

のようにプロパティを使用して条件を設定することができます。

なお、コントロールイベントは MSI データベースの ControlEvent テーブルに書き込まれます。

実際に、よく使われるコントロールイベントは次の 4 つになります。

イベント 内容

NewDialog 現在のダイアログを閉じ、[ダイアログ名]フィールドに指定されているダイアログを表示。

通常、ダイアログの順番を制御する[戻る]および[次へ]ボタンに関連付けされる

SpawnDialog 現在の子ダイアログの[ダイアログ名]フィールドに表示されているモーダルダイアログを

表示。通常、モーダルダイアログの[インストールを中断してもよろしいですか?]を表示

する[キャンセル]ボタンがあるダイアログに使用される。現在のダイアログは開いたまま

で、このダイアログを表示する

DoAction [アクション]フィールドに表示されているカスタムアクションを起動。このコントロール

イベントを使うことで、シーケンステーブルに、このイベントを挿入せずにカスタムアクシ

ョンを起動可能

SetProperty [プロパティ]フィールドに表示された値にプロパティの値を設定。コントロールイベント

でプロパティの値をクリアするには、アクションの引数を{}(中括弧内にスペースを入れず)

に設定。

イベントの種類 条件

イベントの引数

イベントの種類 条件

イベントの引数

Sample

Page 17: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

【中 略】

Sample

Page 18: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 57

第4章 1 つのインストーラーで複数の

パッケージやランタイムを配布する

Sample

Page 19: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 58

4.1 再配布可能ファイルの配布/複数製品のインストール

4.1.1 InstallShield で提供されている機能

InstallShield は、Visual C++ ランタイムや .NET Framework など一般的によく利用されるサードパーティー製の再配布可

能ファイルを含んでいて、それらを簡単にインストールに組み込むことができます。製品と共に再配布可能ファイルをイン

ストールしたり、複数製品やテクノロジーフレームワークをインストールしたりするために、さまざまな機能を提供してい

ます。

以前は別製品やランタイムをインストールするための専用の機能がなかったために、カスタムアクションや InstallScript 関

数の LaunchAppAndWait 関数などからインストーラーを呼び出す処理を実装するケースが多くありました。しかし、一度

に一つの .msi ファイルしか実行できないという Windows Installer の制限もあり、希望の動作が実現できないケースも少

なくありませんでした。

前提条件や MSI 連鎖パッケージ、スイートインストーラーなどの新しい機能では、このような問題を回避することができま

す。

それぞれの機能にはメリット/デメリットがあるので、どの機能が最も適しているかを検討して、使用することをおすすめ

します。

Sample

Page 20: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 59

4.2 マージモジュール

InstallShield には多数のマージモジュールが付属しており、既存のマージモジュールを簡単にインストーラープロジェクト

にマージできます。また、独自のマージモジュールを作成して、他の開発グループに配布することもできます。

下の図はマージモジュールをダイレクト編集モードで開いたものです。

マージモジュールには機能はなく、コンポーネントの構成やカスタムアクションの設定だけが行われているため、マージモ

ジュールだけでインストールを行うことはできません。InstallShield では、[再配布可能ファイル]ビューで機能との関連付

けをして、インストールを行います。

Sample

Page 21: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 60

[再配布可能ファイル]ビューでは、インストーラーに取り込むことのできるサードパーティー製のマージモジュールやセ

ットアップ前提条件を含んでいます。マージモジュールは、[タイプ]が[マージモジュール]となっているものです。

[アプリケーション データ]ビューグループ下の [再配布可能ファイル]ビューで、マージモジュールをプロジェクトの

機能に追加することができます。

マージモジュールをプロジェクトに追加するには、マージモジュールのリストから希望のものを選択し、モジュールを接続

したい機能を選択します。

いくつかのマージモジュールは依存関係を持っています。依存関係のあるマージモジュールは、ビルド時にプロジェクトに

追加されます。

NOTE

[ツール]メニュー[オプション]-[マージモジュール]タブの[マージ モジュールの場所]で InstallShield

がマージモジュールの検索を行うフォルダーを指定することができます。ここで指定したフォルダーに存在して

いるマージモジュールが[再配布可能ファイル]ビューに表示されます。

NOTE

システム上にダウンロードされていない再配布可能ファイルについては、[場所]列に[ダウンロードの必要あ

り]と表示されます。マージモジュールをインストールするには、ローカルにマージモジュールをダウンロード

しておく必要があります。

Sample

Page 22: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

InstallShield 実践トレーニング 61

4.3 InstallShield 前提条件

4.3.1 InstallShield 前提条件

製品が必要とする別製品やランタイムをインストールするために、InstallShield 前提条件を使用することができます。

セットアップ前提条件は、インストールされている製品のすべての構成に対してインストールする必要がある場合、自身の

インストールで使用する機能を提供するベース アプリケーションやテクノロジーフレームワークのインストールに適して

います。プロジェクトに InstallShield 前提条件を追加すると、デフォルトではセットアップ前提条件タイプとして追加され

ます。

また、機能前提条件は、エンドユーザーがインストールする機能を選択したときインストールされます。機能前提条件は、

インストールされている製品の一部の構成に対してのみインストールする必要がある場合、自身のインストールには不要な

アプリケーションまたはコンポーネントに適しています。

InstallShield は基本的なセットアップ前提条件のセットとして、Internet Explorer や.NET Framework の各バージョンを含

んでいます。セットアップ前提条件をプロジェクトに含めるには、[再配布可能ファイル]ビューで対象のチェックボックス

にチェックします。

Sample

Page 23: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

【中 略】

Sample

Page 24: InstallShield 実践トレーニング Sample...InstallShield 実践トレーニング 6 1.2 インストール要件とシステム検索 1.2.1 インストール要件 InstallShield

Copyright (C) 2015 Networld Corporation

InstallShield ® は、Flexera Software 社の商標または登録商標です。

その他すべての会社名および製品名はそれぞれの所有者の商標です。

本テキストの一部または全てを無断で複写転載することは禁止されています。

本テキストの内容は将来予告なく変更されることがあります。

1 版 2015 年 11 月

株式会社ネットワールド

〒101-0051 東京都千代田区神田神保町 2-11-15 住友商事神保町ビル

Sample