2011年12月3日土曜日

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

続き。
とりあえず空のインストーラを作るところまではたどり着いたわけなんだが、これでは何もインストールできないので、当然何の意味もない。なのでこのインストーラにファイルを含める。

まず最終形を示してしまうと、こんな感じ。
<?xml version='1.0' encoding='utf-8'?>
<wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <product codepage="932" id="CA75EB30-3577-42ba-A9AA-9E7AD3B4B663" language="1041" manufacturer="Acme Ltd." name="Foobar 1.0" upgradecode="205E7C9B-779D-49d1-A4D8-F04622EC2F01" version="1.0.0">
    <package comments="Foobar is a registered trademark of Acme Ltd." compressed="yes" description="Acme's Foobar 1.0 Installer" id="*" installerversion="100" keywords="Installer" languages="1041" manufacturer="Acme Ltd." summarycodepage="932"/>
    <media cabinet="Sample.cab" embedcab="yes" id="1"/>
    <directory id="TARGETDIR" name="SourceDir">
      <directory id="ProgramFilesFolder">
        <directory id="INSTALLDIR" name="Foobar 1.0">
          <component guid="0E5230BA-ACB3-4761-BAC4-4EE7F5A05E43" id="MainExecutable">
            <file diskid="1" id="FoobarEXE" keypath="yes" name="WindowsFormsApplication1.exe" source="WindowsFormsApplication1.exe"></file>
          </component>
        </directory>
      </directory>
    </directory>
    <feature id="Complete" level="1">
      <componentref id="MainExecutable"/>
    </feature>
  </product>
</wix>


一番最初はWix/Product/Packageという3つの要素だけがあるシンプルなモノだったのだが、ファイルを含めるとなるともう少し込み入った設定が必要になる。
まずはMedia要素。これはファイルをインストーラに含める場合には必ず必要な模様。
次、Directory要素。 このあたりはもうチュートリアルを見まくる。
TARGETDIRてのはおまじない的に必要であり、ProgramFilesFolderはウインドウズに事前定義された
Program Filesフォルダの参照であり、ようやくその下にアプリ用Directory要素の定義ができる。

そしてインストールディレクトリの下にはComponent要素。これは、ファイルであったりレジストリエントリであったりそういうもろもろを含めてComponentというようだ。今回はファイルだけど。あと、1Componentにつき1Fileとすべきなんだって。理由は不明だがチュートリアルの言葉に従う。

そして最後にFeature要素。
これは直訳すれば、
「すでにディレクトリ構造やインストーラに含むファイルの一覧は定義済みなので、
最後のステップとしてWindowsインストーラにファイルインストールの支持をする必要がある。
Feature要素はそのためにあり、そこに論理的なピースを個別にわけてインストール可能なように記述できる」
らしい。
たぶんいかついインストーラを書くときはこれが重要になってくるんだろうが、
(各Componentの配置順序やらなんやら)
いかんせん今はどうでもいい。

というわけで、ファイル配置まで完成。あとはレジストリ書き込み。
これもComponent要素を使うようなんだが、続きは次回。

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数?訪問者数?滞在時間?


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

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


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

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

2011年3月25日金曜日

カラーミーでGoogleウェブマスターツールを使う方法

ものすごい久々に更新したと思ったらこんなショボい内容ですいません。
カラーミーでGoogleウェブマスターツールを使おうと思ったのだけど、
やり方がわかりません!という方向けです。

まず、Googleウェブマスターツールにログインして、「サイトを追加」ボタンを押します。


次に、所有権の確認のページで
「メタ タグをサイトのホームページに追加」
を選択して、表示されたメタタグのうちの「content=」のところに
書かれた値をコピーします。
(この場合はq66M8qiuh6Fa0ObRvdwH3k0Gp1OydoumKV24oDT2sMo

ここまででいったんWebマスターツールの作業は終了ですが、
後でまた使用するのでウインドウをとじないでください。

 次に、カラーミーにログインして、「お店をつくる」→「サイトマップを作成する」を選択します。


「XMLサイトマップ認識用METAタグ設定」の、「編集」ボタンをクリックします。

さきほどコピーした、metaタグの値をコピーして「追加」ボタンをクリックします。

最後に、Googleウェブマスターツールに戻って「確認」ボタンをクリックします。

その後に、画面がWebマスターツールのダッシュボードに切り替われば成功です。