はじめに
Visual Studioのユーザー様の多くは、作成したソフトを配布する際にVisual Studioに付属のインストーラー作成ツールを利用していると思います。
一方、インストーラー作成の専用ツールである「InstallShield」を使うと、Visual Studio付属のツールでは作成できない独自のアクションやユーザーインターフェイスなど、様々なカスタマイズが可能になります。
そこで本稿では、InstallShieldとVisual Studioに付属しているインストーラー作成ツールを比較しつつ、InstallShieldを利用したインストーラー作成の基本と特徴的な機能を紹介します。
対象読者
- Visual Studioで開発を行っているユーザー
- インストーラー作成の自動化に興味のある開発者
- InstallShieldを利用している方
「インストーラー作成ツール」とは
Windowsアプリケーションのインストールには、一般的に「インストーラー」が利用されます。ファイルのコピー先や設定ファイルの編集など、細かい作業内容を知らずとも、ウィザードの指示に従うだけで自動的にアプリケーションを導入できるため、エンドユーザーの負担を減らし、確実なインストールを手助けします。
インストーラーは「アプリケーション導入時に、アプリケーションの動作に必要な環境設定をターゲットシステムに対して適切に行うプログラム」ですが、一般的に次のような機能が求められます。
- 指定したフォルダにアプリケーションおよびその関連ファイルを転送
- レジストリの登録
- ユーザーのシステム上へのアイコン(ショートカット)の登録
- インストール先環境の設定変更
- インストールプロセスのステータスのフィードバック
- セットアップのロールバック(インストール失敗時)
- アンインストーラー(削除)の作成
- インストールの進捗状況の表示
このように、さまざまな機能が要求されるインストーラーは、スクラッチで実装するには時間と手間がかかるため、インストーラーの作成には、通常「インストーラー作成ツール」が利用されています。
VS2010にバンドルされているインストーラー作成ツール
Windowsアプリケーションの統合開発環境の最新版「Microsoft Visual Studio 2010」では、世界的に有名なインストーラーソリューション「InstallShield」(インストール・シールド)の機能限定版「InstallShield Limited Edtion for Visual Studio 2010」が推奨MSIインストーラー開発ツールとしてバンドルされるようになりました。InstallShield開発元のフレクセラ・ソフトウェアとマイクロソフトとのパートナーシップによるもので、これは従来のVisual Studio Installer(VSI)に代わるものです。
このようにInstallShieldはVisual Studioとシームレスに統合されているため、アプリケーション開発と同一環境でインストーラーを作成できます。より複雑なインストール処理が必要になった場合には、高機能なInstallShield製品群(後述)へアップグレードすることも容易です。
次節では、このInstallShieldを例に、インストーラー作成の流れを紹介します。
InstallShieldは、Visual Studio Installerツールでは利用できなかった下記のようなさまざまな機能をサポートしています:
- ダイアログエディター:ダイアログのルック&フィールを自社のブランドに合う形に変更可能。またユーザーに追加のデータ入力を促すカスタムダイアログの作成も可能
- アップグレードおよびパッチのサポート:インストーラーを修正するためのパッチおよびアップグレードの作成が可能
- MSI検証:MSIがマイクロソフトのロゴガイドラインに沿っているかどうかを検証し、問題があれば容易に修正することが可能
- コンポーネントおよび機能の管理:製品を機能に分割することにより、エンドユーザーに、ヘルプライブラリやAdd-onなど、オプション類のインストールを選択させることが可能
- カスタムアクションをサポート:外部の機能を利用するカスタムアクションの利用が可能
- ランタイム言語:35の言語でダイアログ一式を提供しているため、翻訳作業の必要がなく、時間とコストの削減が可能
- データベースとIIS設定:MSIを拡張し、IISおよびデータベースとの連携が可能。SQL関連のタスクやIIS Webサイト、仮想ディレクトリ、Webサービスの拡張、およびアプリケーションプールを管理可能
インストーラー作成の基本
InstallShieldはグラフィカルな編集機能やウィザードを使用して、インストーラー作成を簡単に行えるツールです。ここでは、InstallShield Premier Editionを使ってインストーラー作成の基本を紹介します。
インストーラー作成の流れ
インストーラー作成の流れをまとめると、次のようになります。
- リソース配置の設計
- 環境に依存した処理の設計
- ユーザーインターフェースの設計
- メディアイメージの作成
- メディアの検証・テスト
アプリケーション実行に必要なリソース(ファイルやレジストリ)を配置。
「OSごとにインストールするモジュールが異なる」「あらかじめシステムに必要なアプリケーションが導入されているか判定したい」などの場合、環境に応じた処理を実行。
ユーザーに情報入力を求めたり、使用許諾への同意を行わせたりなど、ユーザーとの対話を行うためのダイアログデザイン・動作の設計。
メディアの配布方法(CD-ROM、ネットワークイメージ、Webなど)やメディア構成を検討し、メディアイメージを作成。
実際にでき上がったメディアをさまざまな環境で検証して、テスト・デバック。
GUI操作で行うインストーラーの設定
InstallShield 開発環境(IDE)の[インストールデザイナー]タブは、さまざまな設定を行うビューの集合で構成され、インストーラーの設定を行うことができます。
IDEの左側にあるビューリストで、画面を切り替えて設定を行います。下図の[セットアップのデザイン]ビューは、セットアップとそれに関連付けられたすべての機能、コンポーネント、および再配布可能ファイルを見ることができ、主にこのビューでインストーラー開発を行っていきます。
コンポーネントを展開したときに、表示されるそれぞれのビューで、レジストリの設定や、ショートカットの設定などを行うことができます。
また、[再配布可能ファイル]ビューでは、あらかじめメジャーなマージモジュールやInstallShield前提条件が用意されており、該当モジュールをチェックするだけで簡単にインストーラーに同梱することができます。
製品のインストールに必須となるランタイムやテクノロジーフレームワークなどをインストールする機能です。InstallShield 2011では、.NET Framework 4.0のインストールなどの最新のテクノロジーに対応しています。
インストーラーのビルド
プロジェクトの設定が終わったら、[メディア]-[リリース]ビューでリリースをビルドし、インストーラーを完成させます。
このように、ユーザーはMSIの構造について詳しい知識がなくても簡単にMSIを作成することができます。
より詳しいインストーラーの作成方法については、『InstallShieldコラム「初心者のためのInstallShield入門」 第3章』を参考にしてください。
InstallShieldの特徴的な機能
InstallShieldでは他のインストーラー作成ツールでは実現できない特徴的な機能があります。その一部をいくつか紹介します。
ダイアログの編集、カスタムダイアログの作成
InstallShiledではあらかじめ標準的なダイアログが用意されており、一般的な内容であれば、そのまま利用することができます。
一方、InstallShield Premier/Professional Editionでは、独自にダイアログを挿入したり、既存のダイアログを編集したりして、カスタムダイアログを作成することも可能です。
ダイアログの編集機能は、ボタンやテキストボックスなど、コントロールの配置を行うダイアログエディタと、ボタンをクリックした時の動作などを定義する[動作]ノードに分かれています。
アップグレードに対応したインストーラーの作成
InstallShieldでは、Windows Installerがサポートする3種類のアップグレードに対応したインストーラーの作成が可能です。
- スモールアップデート
- マイナーアップグレード
- メジャーアップグレード
アップグレードプロジェクトを作成する場合、Windows Installerの要件に従ってアップグレードのタイプを選択する必要があります。要件を満たさない場合、アップグレード時に不具合が発生することがありますが、InstallShieldでは要件を検証する機能があるため、アップグレードプロジェクトを作成しやすくなっています。
また、InstallShield では[パッチのデザイン]ビューを使用して差分のみを提供するパッチの作成もできます。例えば、Ver.1.1.0のパッチをVer.1.0.0とVer. 1.0.5のように複数のバージョンに対して適用できるようにすることも可能です。
多言語対応インストーラーの対応
InstallShieldでは、多言語に対応した単一のインストーラーを作成することができます。Premier Editionでは35か国語、Professional Editionでは英語と日本語(英語+1か国語)のインストーラー作成が可能です。
InstallShieldではWindows Installerベースのインストーラープロジェクトだけでなく、InstallShieldの独自のエンジンを使用したInstallScriptプロジェクトによるインストーラー開発も可能です。InstallScript言語を使用してコードを記述できるため、独自のカスタマイズ処理を実装できる特徴があります。
InstallShield 2011では、このInstallScriptのUnicode対応により、より柔軟性のあるインストーラー作成が行えるようになりました。
InstallShieldの種類と価格
InstallShield製品には、上位モデルの「Premier Edition」、スタンダードモデルの「Professional Edition」、エントリーモデルの「Express Edition」と、3つのエディションが用意されています。
エディション | 説明 | オンラインショップ価格 |
Express | InstallShieldの簡易版という位置づけです。MSI形式のインストーラーを簡単に作成することができます。 | 108,000円(税込113,400円) |
Professional | InstallShieldのスタンダードモデルです。ダイアログの編集、InstallScriptによるカスタム処理、インストーラー自体の詳細な設定など、さまざまなカスタマイズが可能な Edition となります。 | 360,000円(税込378,000円) |
Premier | Professionalの機能に加えまして、35カ国語対応のインストーラーを作成できます。 | 720,000円(税込756,000円) |
InstallShield 2011は、現在Premier、Professional、Expressのすべてのエディションで、無償で21日間試用できる評価版が提供されています。評価版から製品版へ移行することもできますので、実際に触って機能を試してみてください。
なお、InstallShieldのライセンスは、ノードロックライセンスと同時接続ライセンスという2つの形態で提供されています。どちらも機能上の違いはありません。
ライセンス種別 | 特徴 |
ノードロックライセンス(通常ライセンス) | 1台のパソコン・1ユーザーにつき、1ライセンスが必要(例えば、1台のパソコンで2ユーザーが利用する場合、2ライセンス必要) |
同時接続ライセンス | 購入したユーザー数まで同時使用できる。販売は3ユーザーから。チームでアプリケーション開発する場合やInstallShieldを利用するユーザーが不特定の場合に適している |
InstallShieldは、マイクロソフトのすべての新しいテクノロジーに迅速に対応しており、最新版の「InstallShield 2011」では次のような機能が利用できるようになっています。
- Windows Installer 5の機能を利用しWindows 7認定ロゴインストーラーを作成可能
- 32bitおよび64bit向けアプリケーションのインストーラーを、1つのインストーラープロジェクトでビルドすることが可能
- Visual Studio 2010のインターフェース内でインストーラーを作成し、ターゲットシステムに.NET Framework 4.0がインストールされているかのチェックが可能
- InstallShieldの優れたMicrosoft App-Vサポートにより、仮想パッケージとしてアプリケーションを配布することが可能
- Windows Server 2008 R2、SQLサーバー2008やIIS 7.0等のデータベースやWebサーバーに対する拡張設定も可能
- Windows Mobileのサポートにより、モバイルデバイスをターゲットにしたインストーラーの作成が可能
まとめ
InstallShieldでは、Visual Studio Installerツールで利用できなかった様々な機能を補うことができます。InstallShieldとVisual Studioの連携の詳細やインストーラー作成にまつわるノウハウ、最新のケーススタディはホワイトペーパーでも提供されているので、併せてご活用ください。
開発元のFlexera SoftwareのWebサイトよりダウンロードできます。英語でのご登録となりますが、下記にご案内するホワイトペーパーは全て日本語となります。
- Visual Studio インストール プロジェクトのInstallShield プロジェクトへの変更
- MSI シーケンスと標準アクション
- MSI アップデートとパッチのビルド
- MSI インストーラーにおける設計の問題とベストプラクティス
- ケーススタディ: NetApp社
InstallShieldとVisual Studioの連携についてご紹介しています。
MSIシーケンス、ビルトインアクション、標準アクションの概要をご紹介しています。
MSIアップデートやパッチを作成する方法をご紹介しています。
ビルド時や配布時に発生する一般的な問題の対応策をご紹介しています。
導入事例をご紹介しています。
また、短期間でインストーラー作成の基礎を学びたい方向けに、ネットワールドがハンズオンセミナーを実施しています。
インストーラーの基礎からMSIインストーラー作成体験を、インストラクターが実機を用いて分かりやすく説明するため、演習問題を通じて実際に体験することができます。