★ The Tsuchinoko News 2 (つちのこ通信2) ★

重要な話から、どうでもいいことまで。ほとんど役に立たないことを書き連ねています。

【PC】いまいち使えない「ClickOnce」

筆者は中小企業向けの業務アプリケーションを開発する仕事に従事している。先日まで Windows Vista のあやふやさと、.NETへの移行に尻込みをしていて Visual Studio Ver6.0 と Windows XP がメインな者であったが、意外に Windows 7 が良いのでと一念発起し、現在は主に Windows 7 上で Visual Studio 2010 を動かして仕事をしている。

.NETの不可解さに怯えたのは10年ほど前だが、着手しはじめてみると 構造化がキチンと出来るようになっていたり APIなしでの各種便利処理や、以前なら一工夫も二工夫もして、汚らしいスパゲッティソースコードでようやく実現していたような機能が、あっさりと書けたり、デバッグやテストなどがカンタンになったりセットアップ(配布用)の作成もかなりいろいろと出来るようになっていたりして、開発効率そのものもあがったりして、大変喜んでいる。

f:id:tsuchinoko118:20140921054400p:plain
あなたのワークバランス大丈夫? ワークバランス診断アプリ BSC for Android
Windows Phone 7.5 SDKを搭載すれば、最新携帯(スマホ)用のプログラムが、Android(Javaとは名乗れないJava)に比べて、おそろしくカンタンに作れてしまったり、明らかに 携帯(スマホ)とPCの融合を目指している Windows 8 も発表されたことだし、ますます将来が楽しみで、わくわくしすぎて職場の窓から飛び降りてしまいそうだ。

そんな中、超期待していた機能の一つ「ClickOnce」にようやく触ってみる時がやって来た。


ClickOnce」とは、作ったプログラムを、みなさんのパソコンに配布(バラまく)にあたって Web上に配置し、そこからインストールしてもらおう、という機能で、不具合修正やバージョンアップなども自動更新してくださる、大変ありがたい機能。実際に、遠く離れた場所にお住まいのユーザー様に、ひとつひとつ 例えばCDーROMか何かで配布していては、コストも手間も増大するし、ユーザー様にとっても、ひどくわずらわしい。
ネットでダウンロードして、自分で入れてくださいというのも、どうも無責任っぽい。
できることなら、自動で「最新版」をチェックし、自動的に「アップデート」し、自動的に「更新」をしてくれれば、作り手も使い手も大変ありがたい。

そういうことを、カンタンに実現してくれるのが「ClickOnce」というもので、Visual Studio 2010 というより .NEt Framework の Ver2あたりから付いている機能だ。
内容を額面通りに受け取れば、あらゆるところでネットに接続している昨今、「普通のインストーラー」よりも「ClickOnce」の方が普及していてもおかしくないのだが、現実の世の中ではそうなっていない。

そこに一抹の不安を感じながらも、あれやこれやと「ClickOnce」を触ってみると、たしかにひどくカンタンだ(笑)

最近では UACというセキュリティ機能があり、発行元がどうのこうのと、不安を煽る仕様もあって、「配布」そのものも手続きが面倒になっているが「Click Once」に、デジタル証明書(コードサイニング証明書)を指定すれば、本当に自動的に期待通りのことをしてくれる。
ここまでは、大変すばらしい、と感じた。

ところが、実際に使っていこうということになると、このカンタンさが仇となって、かえって使えないものになっていることに気づく。

一番驚いたのは、インストールされたプログラムが、通常なら「C:\Program Files」にありそうなのに、そこにプログラム本体がいないのだ。

いったい、どこに。
ショートカットから探しても見つからず、どうやら「C:\Document and Setting」の中の隠しフォルダの中に鎮座していらっしゃることがわかった。

”通常は「C:\Program Files」だ”というのは暗黙の了解どころか、最近では、そこ意外に置くなという風潮にもなり、実際マイクロソフトもそう指導している。にも関わらず「ClickOnce」は、違うところに置く。

このことは、例えば設定ファイルやデータファイルを置いたり、様々な条件で起動条件や動作条件を変えたりするとき、非常に困る。がんばれば出来ないことはないし、マニフェストというセキュリティ用のファイルを書き換えたりすれば出来ることも多々ある。

しかし、それでは「カンタンに」ではない。

カンタンにではない場合、ミス(失敗)も増えてくるので、筆者的には好ましくない。
それが、また、マイクロソフト社のいう礼儀に沿っていないような仕様であることも、これまた好ましくない。

と、好ましくないことだらけになってしまった。



とにかく配布さえすればいいのであれば、この「ClickOnce」は大変便利だ。
しかし、あたらしい「インストーラー」という考え方では、まだまだ、使い物にならないものだ、と。

このことはマイクロソフト社も「ClickOnce と Windows インストーラの使い分け」で、あいかわらずのよくわからない言い回しで、こっそり案内しているようだ。(ようだ・・というのは、まったく別のものなので、どちらかがどちらかに取って代わるというものではなく、一旦 ClickOnceを選択すると インストーラーには移行さえできない、みたいな言い方。つまるところ、セットアップするのなら ClickOnce は使うな、みたいな(笑))

そこで、期待を打ち砕かれた筆者だったが、筆者の思うことのできる「ClickOnceもどき」を作ることにした。
今日、完成した。筆者専用なので、筆者の思うことができるというだけで、汎用的に誰もが使える便利なものではない。

普通のインストーラーでのインストールの後、ClickOnceのような動きをする小さなプログラムを動作させ、自動更新などを行う「自動アップデーター」だ。

ClickOnce」そのものは、使えないことがわかったが、その代わり、どういう風なものを作れば良いのかが明確になり、「ClickOnceもどき」をつくるに至ることができたので、決して「期待が打ち砕かれただけ」というわけではない。七転び八起き。転んでもタダで起きない。捨てる神あれば拾う神あり。なんのこっちゃ。

ただし、筆者専用なので、誰もが汎用的に使えるものではないことや、Windowsに怒られないように UAC対策としての「デジタル証明書」(コードサイニング証明書)を組み込んだりしなくてはいけないのだが、このあたりが、全部手作業なので、まだまだ改善が必要だ。(おそらく PostBuild後のマクロに 書き込んでしまえばいいのかも知れないが)

それにしても、毎日毎日、新しい課題と新しい仕組み、新しい考え方、たくさんあって大変面白い。今日も明日も Windows 7Visual Studio 2010 にハマっている筆者である。