特集:Windowsアプリの3大インストーラ比較

あなたのアプリにはどのインストーラが最適?

とっちゃん(高萩 俊行)
2008/08/05
Page1 Page2 Page3

■インストーラを作成するには?

 いまの時代、インストーラを作るにはどうすればよいのだろうか?

 ほとんどの場合、何らかの「インストーラ作成ツール」を用いる。インストーラ作成ツールでは、一般的に、インストールの内容や手順などに関する情報を設定もしくは記述する形式となっており、それを記述するための(コード・エディタやデザイナなどの)GUI(グラフィカル・ユーザー・インターフェイス)が提供されている。本稿ではそのインストーラ作成ツールによる開発方法の違いについて考察していくわけだが、その前に、実際にインストーラを作成する際に「これだけは意識・注意しておいてほしいポイント」があるので、これを紹介しておきたい。

●インストーラ開発のポイント

 まず、いつのタイミングからインストーラの作成に着手すればよいのだろうか? そのタイミングの判断は実に簡単である。それは、

「開発環境以外で動かしたい」

と思ったときだ。開発者が自身の開発マシンで使う専用ツールでもなければ、アプリにはインストールという作業が必要となるときが訪れるはずである。そのときまでにインストーラが出来上がっている必要がある。

 ではインストーラが必要となるその時点で、アプリはどこまで出来上がっていればいいのだろうか? これは、その時点でのアプリの実行に必要なものが常に100%そろっている(いい換えれば、アプリとしては一応動作する)状態でなければならないと筆者は考える。アプリの実行に必要なファイルはすべてインストールしなければならないのは当たり前だし、エンド・ユーザーが操作するためのUI(ユーザー・インターフェイス)がないと、たとえ(エンド・ユーザーが)開発者だとしても使いこなせないからだ。

 以上に留意して適切なタイミングでインストーラを開発してほしい。いったんインストーラ開発が完了すれば、その後はアプリの開発状況の節目に合わせてインストールの対象データを変化させていくという差分開発だけを行えばよい。

 ほかにもインストーラを作成するうえで忘れないでほしいことがいくつかある。

 インストーラ開発の主軸は、単に「ファイルを配置すること」ではなく、「アプリを実行するための構成を運用環境に配置すること」だ。そして状況にかかわらず、いかに安全確実にアプリをその運用環境で起動可能な状態にするかである。目先の処理に惑わされずに、本質の処理に留意してインストーラを開発してほしい。さもなければ、本番環境では正常に動かないインストーラになってしまう可能性もある。

 さらに、恐らくほとんどの開発者が意識していないであろうと思われるのは、エンド・ユーザーが最初に触れるアプリはインストーラである、ということだ。最初に触れるインストーラに悪い印象を持たれると、アプリ全体に対する印象まで悪くしてしまう可能性もある。

 以上のことさえ忘れずにいれば、おおむねインストーラの開発で大きな失敗はしないと思う。

■インストーラの作成を取り巻く環境

 さて、ここからはインストーラ作成ツールの紹介を、周辺情報を交えつつ行い、簡単にそれぞれの機能を比較してみたいと思う。

 今回取り上げるインストーラ作成ツールは、以下の3つだ。

1.InstallShield
2.Visual Studioセットアップ・プロジェクト
3.Windows Installer XML toolset(WiX)

 この3つを選択した理由は、これらが以下の3つの基準を満たしているからである。

・Windows Installer*3を実行エンジンとして利用するもの
・そのツールのヘルプ以外にも、入手可能な日本語情報が存在すること
・日本語でやりとり可能なユーザー・コミュニティがあること

*3 Windowsインストーラ。マイクロソフトが開発・提供しているWindows標準のインストーラ・エンジン。インストーラとなるファイルの拡張子が(基本的に)「.msi」のため、MSIセットアップとも呼ばれる。

【コラム】ClickOnceについて

 上記の3つには含まれていないインストーラ作成ツールの1つにClickOnceがある(参考:「ClickOnceの真実」)。このClickOnceはVisual Studio 2005以降で標準搭載されているインストーラの一種で手軽に作成できるという特徴があるが、本稿ではこれを対象としない。というのも、前述の3つの基準を満たしていないこともあるが、ClickOnceを(本稿が想定する)スタンドアロン・アプリのインストーラとして使用する場合、あまりにも制約事項が多すぎるためだ。

 もともとClickOnceは、Webアプリの表現力や操作性などを補うためにクライアントに実行モジュールを置き、そのマシン・パワーを余すことなく使うために用意された一種のWebフロント・エンドを配置するための技術なのだ。そのため、スタンドアロン・アプリとは趣が異なるところがある。

 例えば、ユーザーごとにアプリをインストールしてしまう(つまり、全ユーザーへのインストールができない)、COMコンポーネントなどは「必須コンポーネント」(=ブートストラッパー)というインストーラ・モジュールを別途用意しなければならない、拡張子の関連付けができないなどの機能的な制限がある。

 このような制限があるため、ClickOnce技術をスタンドアロン・アプリ用のインストーラとして使うには不向きといえる。

 まずはごく簡単に、各製品の概要と機能を紹介しておこう。

●1. InstallShield(IS)

 「インストーラの作成といえば、InstallShield(以下IS)」と呼べるほど圧倒的なシェアを持つインストーラ作成ツールで、非常に機能が充実しており(例えば実行可能ファイルの依存関係の調査機能や、インストーラ・パッケージの整合性検証機能など)、Windowsをプラットフォームとする、あらゆる種類のアプリケーション、ドライバ、サーバ・アプリのインストーラを手軽に作成できる。

 最新版のIS 2009では、(執筆時点で)最新のWindows Installerのバージョン「4.5」に対応している(ISの公式ページの記述によると、厳密には4.5のベータ版に対応となっているが、近い将来、4.5の正式版に対応するアップデータが提供されると思われる)。

InstallShield公式サイト

InstallShieldによるインストーラの開発例

 ISのメリットとしては、以下が考えられる。

・インストーラ作成の多くの場面でウィザード(Wizard)を利用する形式になっているため、比較的操作ミスに起因する不具合を含みにくい。

・設定用のインターフェイスがIS側で用意されていないWindows Installerの機能であっても、設定を直接編集できる機能があるため、Windows Installerが持つすべての機能が利用できる。

・オートメーション・インターフェイス(=外部からISを制御するためのプログラミング・インターフェイス)を持っているため、それを活用して定型的なインストーラ作成作業を自動化できる。

・『InstallShield公認ガイドブック』という書籍が出版されており、学びやすい。なお、この書籍の内容は、単にツールの使い方に終始しているわけではないため、ほかの開発ツールにも当てはまる部分が多々ある。

 デメリットは、以下のとおり。

・市販製品であるため製品を購入しなければならない。ネットワールド社の直販価格でプロフェッショナル版を新規購入する場合は「34万6500円」と、かなり高めの価格設定となっている。

●2. Visual Studioセットアップ・プロジェクト(VSセットアップ)

 Visual Studioセットアップ・プロジェクト(以下VSセットアップ)とは、Visual Studio .NET(2002)から正式にVisual Studioの1プロジェクトとして同梱されるようになったインストーラ作成用のプロジェクトである(ただし、Express Editionを除く)。

 Visual Studioさえあればすぐに利用できるという利便性から、最近では多くのソフトで利用されている。@ITでもいくつかの記事があるので(参考:「Visual Studio .NETで自作プログラムにセットアップ機能を付ける」)、実際に使ったことのある人も多いだろう。

Visual Studio公式サイト

Visual Studioセットアップ・プロジェクトによるインストーラの開発例

 VSセットアップのメリットを挙げよう。

・もともと「簡易インストーラ作成ツール」という役割を与えられているため、機能が単純化されており、ほかのツールに比べ圧倒的に簡単に作れる。特に、単純なインストール機能があればよいアプリや、Webアプリの配置(サーバへのインストール作業)など、カスタマイズの必要がないアプリには最適。

 逆に、上記の特長がデメリットにもなる。

・単純化されているがゆえに、機能制限も少なくない。特にカスタマイズ性がほとんどないという点は、対象となるアプリによっては致命的。

●3. Windows Installer XML toolset(WiX)

 Windows Installer XML toolset(WiX)は、2004年4月にマイクロソフト初のオープンソース・プロジェクトとして登場した(もともとはマイクロソフト社内の1プロジェクトとして開発が始まったものらしい)。上記のほかの2つのツールとは異なり、テキスト・ベースでの開発を主体とし、XMLベースの専用言語によりインストール手順をコーディングしていく開発スタイルを採る。

WiX公式サイト

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi">
  <Product Id="E2CF3F74-2ED2-47C1-A4F3-E7422D4B38EB" Name="サンプルアプリ" Version="1.0.0.0" Manufacturer="DigitalAdvantage" Codepage="932" Language="1041" >
    <Package Id="????????-????-????-????-????????????" Description="サンプルアプリ インストーラ" InstallerVersion="200" Compressed="yes" SummaryCodepage="932" Languages="1041" />
    <Media Id="1" Cabinet="Product.cab" EmbedCab="yes" />
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLLOCATION" Name="SampleApp">
          <Component Id="SampleApp" Guid="AA833C0D-842C-4954-9F38-FC37D118E328">
            <File Id="Sample.exe" Name="Sample.exe" KeyPath="yes" DiskId="1" Source="Sample.exe">
              <Shortcut Id="Sample.exe" Name="Sample" Icon="Sample.ico" IconIndex="0" Show="normal" Directory="SampleApp"/>
            </File>
          </Component>
        </Directory>
      </Directory>
      <Directory Id="ProgramMenuFolder" SourceName="ProgMenu">
        <Directory Id="Menu.Sample" Name="Sample" LongName="Sample Applications">
          <Directory Id="SampleApp" Name="SampleApp"/>
        </Directory>
      </Directory>
    </Directory>
    <Icon Id="Sample.ico" SourceFile="Sample.ico"/>
    <Feature Id="ProductFeature" Level="1" >
      <ComponentRef Id="SampleApp" />
    </Feature>
  </Product>
</Wix>
WiXによるインストーラの開発例

 WiXのメリットは以下のとおりだ。

・専用言語の文法は、Windows InstallerのデータベースをXMLの特性に合わせて設計し直したような形になっており、Windows Installerの知識さえあれば、かなり複雑な設定でも容易に記述できる。

・XMLベースといっても、分割コンパイルが可能になっており、プリプロセッサ機能もあり、「include」や「define」、「if/ifdef」などのプリプロセッサ命令文を使った条件コンパイルができる。特にバリエーションの多い製品のインストーラ作成には最適。

 このように、ほかの追従を許さない高度な柔軟性という特長を持っているが、これがデメリットともなる。

・テキスト・ベースであるため、取り組みづらい。

・「情報の少ないWindows Installerの知識が要求される」という難易度の高さから、導入が難しい。

 しかしながら、オープンソースであるがゆえに周りのサポートも厚く、かなりのボリュームだがプロジェクト公認の外部チュートリアル(英語)もある。このチュートリアルを一通り読みこなせば、ほとんどの機能は使えるようになるはずだ。また、筆者も簡単ではあるが、WiXの入門記事として「CodeZine:WiXではじめるWindows Installer作成入門」を最近公開した。これらの情報を活用すれば、導入に当たっての煩わしさは、数年前に比べてかなり軽減されている。

 また、WiX開発を支援するGUIツールもいくつか存在しており(WixEditSharp Developなど。詳しくは、「とっちゃん's Blog :WiXの編集ツール」を参照してほしい)、これを利用すれば「テキスト・ベースであるという取り組みづらさ」からは解放されるだろう。特に規模の小さいインストーラなどで使うと便利だろう。

GUIツール(WixEdit)を活用したWiX開発例

 WiXにはほかにも良いところがある。MSBuild(=.NETのビルド・エンジン)でのビルドが可能になっているため、Visual Studio Team System(以下VSTS)のTFS(Team Foundation Server:開発用チーム・サーバ)などで行われるデイリー・ビルドに組み入れることができる点だ。次期VSTS(コードネーム:Rosario)への導入が検討されているなど、WiXはインストーラ作成ツールの中でも最も明るい話題のあるインストーラ作成ツールだ。

●各インストーラのコミュニティについて

 国内のコミュニティもいくつか紹介しておこう。WiXとISの2つはどちらもML(メーリングリスト)なので、メールベースが主体ではあるが、Web上からも参照できるようになっているので気軽に利用できる。

WindowsInstaller/WiX/InstallShieldメーリングリスト
 日本のWiXコミュニティとしては恐らく唯一の存在。もともとは、筆者が知人と一緒にWiXやWindows Installerの話題を集中して扱えるところがほしいと立ち上げたものだが、インストーラ関係であれば特に話題に制限は設けていない。

InstallShield ユーザ ML
 名前の示すとおりISに特化したユーザー・コミュニティ。古くからあるMLでもあるため、多数のユーザーが登録している。

MSDNフォーラム:Visual Studio 共通 フォーラム
 VSセットアップについての専用コミュニティではないが、Visual Studioに付属しているドキュメント・エクスプローラ(=MSDNライブラリを見るためのヘルプ・モジュール)で質問することもできるので、活用している人は多いだろう。

 ここからは、以上の3つを簡単に機能比較してみたいと思う。


 INDEX
  Windowsアプリの3大インストーラ比較
  あなたのアプリにはどのインストーラが最適?
    1.なぜインストーラが必要なのか?
  2.インストーラを作成するには?/インストーラの作成を取り巻く環境
    3.InstallShield/VSセットアップ/WiXの機能比較
 


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH