@kotyのブログ

PythonとかAWSとか勉強会のこととかを、田舎者SEがつづります。記事のライセンスは"CC BY"でお願いします。

デスクトップアプリケーションインストール考

この記事はXAML Advent Calendar 2014http://qiita.com/advent-calendar/2014/xaml 17日目の記事です。昨日はideaki19さんのWinRT C#/XAML お手軽に実装できる引っ張って更新コントロールの紹介 - ideaki's blogでした。

↓↓このネタでいこうとも思ったのですが、

こちらでお茶を濁そうと思います。

はじめに

XAMLといえばWPFWPFアプリ*1を作ったらどうしますか?当然そのアプリを使いますよね。 使うにあたってはアプリを配布しインストールする必要があります。というわけで*2、デスクトップアプリケーションについてまわるインストール方法の選択肢について、本エントリーでは書こうと思います。*3

WPFをインストールする方法は大きく以下かと思います。

  • 利用者がbinをコピーしてインストール
  • 開発者がbinをzipに固めて配布し、利用者が解凍してインストール
  • XBAPを作成してwebアプリケーションの一部として配布し、利用者がインストーラを(結果的に)起動してインストール
  • 開発者がClickOnce配布サイトを作成して媒体を配布し、利用者が配布サイトからインストール
  • 開発者がインストーラ(setup.msi/setup.exe)を作成して配布し、利用者がインストーラを起動してインストール それぞれ長短や用途を見てみましょう。

利用者がbinをコピーしてインストール

開発者自身が使う俺得ツールであればコレでもいいかもしれませんね。もしかしたらVisualStudioでF5を押して済む場合もあるかもしれません。

開発者がbinをzipに固めて配布し、利用者が解凍してインストール

開発ツール等、利用者がパソコンの知識をある程度持っている場合はこれでもいいかもしれません。

開発者がClickOnce配布サイトを作成して媒体を配布し、利用者が配布サイトからインストール

ClickOnceは、デスクトップアプリケーションを配置するための技術です。 配置方法は大きく分けて二つあります。*4

利用者がパソコンに詳しくない場合、zipを解凍してくださいというわけにもいきませんし、意図しない場所に配置されてしまう危険もあるでしょう。インストール手順が簡便である必要があるわけです。その場合、媒体のダウンロードとインストールを一気通貫でできるClickOnceは良い選択肢かもしれません。

また、バージョンアップが容易にできるのがClickOnceの大きな利点です。ユーザーは特にすることなく起動時に自動でアプリケーションのバージョンアップが行われます。

短所として、インストール時にレジストリ登録できない等、後に述べるsetup.mxi/setup.exeによるインストールと比較するとできることに制限があります。参照:連載 ClickOnceの真実:第3回 Visual Studio 2005でClickOnceを極めよう (2/2) - @IT

また、媒体を配置しておくwebサーバーにIIS以外ではMIMEの設定が必要です。昨今のレンタルサーバでは.htaccessの設定くらいはできるんでしょうからあまり問題にならないですかね。参考

とっかかりのサイト

ClickOnce 情報のサイト - いっしきまさひこBLOG

ClickOnceググると一番に出てきますね。こちらに情報がよくまとまっていました。

XBAPを作成してwebアプリケーションの一部として配布し、利用者がインストーラを(結果的に)起動してインストール

XBAPはWPFアプリケーションをwebブラウザに埋め込むための技術です。内部的にはClickOnceが使われています。C/Sの頃使っていた帳票コンポーネント等をwebアプリケーションに移植した後も引き続き使いたいといった場合に一部の画面で使うことになるかもしれません。

もはやデスクトップアプリではなくwebアプリであり、ここで比較するには向かないので割愛。

とっかかりのサイト

WPF XAML ブラウザー アプリケーションの概要

開発者がインストーラ(setup.msi/setup.exe)を作成して配布し、利用者がインストーラを起動してインストール

よく目にするsetup.msiやsetup.exeによるインストールですね。

WiXというツールでsetup.msiをそこそこ簡単に作れます。作成にあたってはxmlインストーラの設定を記述します。GUIがあれば最高なんですがxmlをポチポチと書く必要があり、ある程度勉強する必要はあります。

実際にはsetup.msiだけで済まず、少なくともアプリケーションをバージョンアップするためにはsetup.msiをラップするBootstrapperと呼ばれるものが必要です。それがsetup.exeというわけです。*5Bootstrapperの作り方はアプリケーションによって千差万別です。自分はC++プロジェクトを作ってみましたが、、、

とっかかりのサイト

WiX チュートリアル (日本語訳) — Windows Installer XML ツールセット入門

こちらで概要はつかめると思います。

まとめると

というわけで強引に表にまとめるとこんな感じになるかと思います。

インストール方法 インストールの簡単さ バージョンアップの簡単さ インストール機構作成の簡単さ インストール機構の柔軟性
binをコピー
zipに固める
XBAP
ClickOnce
setup.msi

おわりに

浅くてすんません。。。最近必要があって調べたのですが、主にエンプラ分野で使われているためなのかインストール関連の情報はインタネットにはあまりなく四苦八苦しています。web全盛の昨今インストール不要なものが多いですがまだまだwindowsデスクトップアプリケーションが必要とされる場面はあるでしょう。たぶん。。。

*1:といったら良いのか、システムと言ったら良いのか

*2:WPFに限らずですが

*3:XAMLWPF→インストール という三段論法。強引ですんません

*4:セキュリティについてもいろいろあるけど、デスクトップアプリケーションとして考えるとFullTrustにならざるを得ないでしょう。ここでは割愛。参考:連載 ClickOnceの真実:第7回 ClickOnceが持つセキュリティ機構とは? (1/4) - @IT

*5:最近知った。元ネタ:WiX チュートリアル (日本語訳) — Lesson 4 アップグレードとモジュラー化の「どういう理由かは知りませんが、スモール・アップデートとマイナー・アップグレードは、、、のくだり」