2011年11月30日水曜日

WiXによるWindowsインストーラ作成方法1

やはり、アクセス解析・Web最適化に携わっているとキャリアの中でどうしてもWindowsインストーラを作らねばならない瞬間に出くわすのでないかと私は思っている。
とはいえ、Windowsインストーラとはもはやある種のプログラミングであり、そうおいそれとマーケターの方々が作成できるものとは思えない。かくいう私も作ったことがないに等しい。

というわけで、いろいろググってみるとどうやらWindowsインストーラを作るためのツールは世の中に3つ存在するらしい。
  1. Install Shield
  2. Visual Studioセットアッププロジェクト
  3. Windows Install XML(WiX) toolset
うーん昔どれでもないインストーラ作成ツールを使った気がするけど・・まあいいや。
とにかく3つしかない。
そして、1と2は有料なので私のような貧乏人は必然的に3しか選べない。

というわけで、WiXのページにいってインストーラをダウンロードして・・・ってインストーラ作るのにインストーラをダウンロードしないといけないの?!という話はおいといて・・

インストールすると、
C:\Program Files\Windows Installer XML v3.5\bin
または
C:\Program Files (x86)\Windows Installer XML v3.5\bin
の中にcandle.exeとかlight.exeとかあるからこれ使います。

とりあえず第一歩、何もしないインストーラを作る。
こんな感じのxmlを書いて、
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
  <Product Name='Foobar 1.0' Id='YOURGUID-75B6-4D14-AEC1-97516A689CDE' UpgradeCode='YOURGUID-7349-453F-94F6-BCB5110BA4FD' Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='Acme Ltd.'>
    <Package Id='*' Keywords='Installer' Description="Acme's Foobar 1.0 Installer" Comments='Foobar is a registered trademark of Acme Ltd.' Manufacturer='Acme Ltd.' InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />
  </Product>
</Wix>

Sample.wxsって名前で保存してコマンドラインから
C:\temp> "c:\Program Files (x86)\Windows Installer XML v3.5\bin\candle.exe" Sample.wxs
Microsoft (R) Windows Installer Xml Compiler version 3.5.2519.0
Copyright (C) Microsoft Corporation. All rights reserved.

Sample.wxs
C:\temp\Sample.wxs(4) : error CNDL0009 : The Product/@Id attribute's value, 'YOURGUID-75B6-4D14-AEC1-97516A689CDE', is not a legal guid value.
C:\temp\Sample.wxs(4) : error CNDL0009 : The Product/@UpgradeCode attribute's value, 'YOURGUID-7349-453F-94F6-BCB5110BA4FD', is not a legal guid value.

うーん・・・GUIDっていうのをちゃんとふらないとダメらしい。
で、そのためにはMicrosoft Exchange Server GUID Generatorつーのがいるらしい。
あのーインストーラ作るために何個インストーラを実行すればいいんすかね?

はい、GUID直します。ついでにxmlのエンコードをutf-8にして、
LanguageとCodepageをそれぞれ1042・932にするとインストーラが日本語になります。
<?xml version='1.0' encoding='utf-8'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
  <Product Name='Foobar 1.0' Id='CA75EB30-3577-42ba-A9AA-9E7AD3B4B663' UpgradeCode='205E7C9B-779D-49d1-A4D8-F04622EC2F01' Language='1041' Codepage='932' Version='1.0.0' Manufacturer='Acme Ltd.'>
    <Package Id='*' Keywords='Installer' Description="Acme's Foobar 1.0 Installer" Comments='Foobar is a registered trademark of Acme Ltd.' Manufacturer='Acme Ltd.' InstallerVersion='100' Languages='1041' Compressed='yes' SummaryCodepage='932' />
  </Product>
</Wix>

さあ、じゃあ気を取り直して今度こそ。
C:\temp> "c:\Program Files (x86)\Windows Installer XML v3.5\bin\candle.exe" Sample.wxs
Microsoft (R) Windows Installer Xml Compiler version 3.5.2519.0
Copyright (C) Microsoft Corporation. All rights reserved.

Sample.wxs

C:\temp> "c:\Program Files (x86)\Windows Installer XML v3.5\bin\light.exe" Sample.wixobj
Microsoft (R) Windows Installer Xml Linker version 3.5.2519.0
Copyright (C) Microsoft Corporation. All rights reserved.

C:\Users\Kuniaki\AppData\Local\Temp\mrg45mhu\Sample.msi : warning LGHT1076 : ICE71: The Media table has no entries.

とすると、Sample.msiが完成。しかしこれはインストーラのテイをしてるけど
実際に動かしても何も起こりません。
ま、何の設定もしてないので当たり前っちゃ当たり前なんだが。

レジストリに登録してファイルを配置してショートカットを追加して云々・・・
やりたいことと現実のかい離がハンパじゃない。
続きは次回。

2011年11月22日火曜日

サイトゴールの重要性

まためっちゃ空いてしまったんだけど・・・誰かこれみてんのかな?
まあいいや完全に独り言状態。

最近、改めて強く感じるのがこの、サイトゴールの重要性。
アクセス解析・ウェブサイトの最適化というのは昨今非常に注目を集めている。
どこもかしこも有償のアクセス解析ツールを導入して取り組んでいる印象がある。

だけど、いっとき流行った
「システムください」
じゃないけれど、別にツールを入れるだけじゃ何も変わらないんである。
数字を眺めるだけじゃ何も変わらないんである。

数字を元にした改善アクションがなければ何も意味がない。
改善アクションをするためにはサイトゴールが明確でなければならない。


例えば、
ECサイトなら売上をあげることがサイトゴールなのでとても簡単なんだが、
リアル店舗+ECサイトだったりサイトは製品紹介だけで実際の販売はオフラインのみだったり
というビジネス構造となるととたんに話が込み入ってくる。

リアル店舗+ECサイトの場合、サイトゴールは売上?店舗への送客?
製品紹介の場合、サイトゴールは訪問者に製品を知ってもらうことなんだが、
これってどうやって測るの?PV数?訪問者数?滞在時間?


ウェブサイトがその会社のビジネスのうちの何を成し遂げるパート(商品販売?見込み顧客の獲得?ブランディング?)で、
その達成率はどの指標によって測れて、という明確な関係者の共通認識がなければ数字を見ても意味がないし最適化のやりようもないんだが・・・

指標が必要だし、それに対する関係者の合意が必要。
現場が勝手に際とゴールを判断しても、エグゼクティブはそれと異なる思惑を
持っている可能性があり、その場合は結果として間違った方向に最適化が進んでしまう。


関係者の合意した指標とそれを軸にした最適化。
それを妨げる理由は本当にたくさんある。
うちはそういう社風ではない。定期的な人事異動があるから時間のかかる地道な最適化よりも
もっと短期的に実現ができて目立つ施策が優先される。
ワンマン社長の一声でサイトゴールがコロコロ変わる。
などなど・・・

こういう言葉を乗り越える術と熱意と体力がないと、
究極的にはいまの仕事は成り立たないんだなと気づいた今日。