WiX @ wiki

SimpleInstaller解説

最終更新:

wixwiki

- view
管理者のみ編集可
SimpleInstaller」で使用したXMLについて、解説をしよう。

01: <?xml version="1.0" encoding="shift-jis"?>
02: <Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi">
03:     <Product Id="????????-????-????-????-????????????" Manufacturer="hoge corp"
04:             Language="1041" Name="hoge soft" Version="1.0.0" Codepage="932">
05:        <Package Id="????????-????-????-????-????????????" Compressed="yes" />
06:        <Media Id="1" EmbedCab="yes" Cabinet="disk1.cab" />
07:
08:        <Directory Id="TARGETDIR" Name="SOURCE">
09:            <Component Id="COMPONENT1" Guid="ff746e5c-441b-4772-9fdf-52a105ec37a1" DiskId="1">
10:                <File Id="MAINFILE" Name="TEST.TXT" />
11:            </Component>
12:        </Directory>
13:        
14:        <Feature Id="MAINFEATURE" Level="1">
15:            <ComponentRef Id="COMPONENT1" />
16:        </Feature>
17:
18:    </Product>
19: </Wix>

:1行目
|これはXMLの決まり文句で、おまじない的なフレーズのようだ。一般的に(というかXMLの標準は)文字コードをUTF-8にして記述することが多いが、事情があってShift-JISで記述している。今のところUTF-8で書いてもらっても特に問題はないはずだ。

:2行目
|WiXの一番ルートにあたるタグで、WiXで記述する際の決まり文句だ。

:3~4行目(Product)
|Productタグは、簡単に言うとMSIインストーラを作成することを示している。WiXで作成可能なものは、インストーラ以外にもパッチやモジュールなどがあり、それによって違うタグとなる。このタグの属性は、インストーラの名前やバージョンなど、最も基本的な情報を記述する。Id属性の????・・・・については、「Guid?」で解説する。

:5行目(Package)
|Product配下に必ず必要なものの1つ。属性を設定することで、出来上がったインストーラのプロパティに様々な値が設定されることになる。(ここでは属性は殆ど何も指定していないので、WiXが勝手にそれらを生成することになる)また、Productと同じくここにもId属性が????・・・・という形であり、これについても「Guid?」で解説する。

:6行目(Media)
|このタグもとりあえずはおまじないだと思っておいてほしい。非常に大きなプログラムなどで、複数のメディアに分けないと格納できない場合に必要になってくる要素なようだ。

ここまでがある種おまじない的な要素の記述になる。そしてここからが実際にインストールするべきファイルなどを記述する部分になる。
また、今後サンプルコードを頻繁に書くことになるが、断りが無い限りこの6行目までの部分は省略する。

:8行目(Directory)
|Directoryタグにより、インストール先のディレクトリ構造(あるいはインストーラに組み込むファイルのディレクトリ構造)を表現している。
  • Id属性はTARGETDIRとなっている。このTARGETDIRというIdは特別なもので、デフォルトではルートディレクトリ(一般的なWindowsマシンなら C:\ になるだろう)をあらわしている。この例ではルートディレクトリ直下にファイルがインストールされる。つまり、インストール先がこの属性で指定したものとなっている。
  • Name属性はSOURCEとなっている。これは、皆さんにコンパイルの前に作ってもらったディレクトリ名だ。つまり、Name属性がインストーラに組み込むファイルのディレクトリをさしていることになる。
このサンプルに限って言えば、ディレクトリのIdとNameがインストール先ディレクトリと組み込むファイルのディレクトリをあらわしているが、実際のところディレクトリのIdやNameという属性は単純なものではない。が、それをここで記述すると長くなるため、「パスの指定」 で詳しく述べよう。

:9行目(Component)
|「Componentの概念」 で詳しく記述するが、Componentという単位でインストール・アンインストールを行うことになる。つまり、Component配下にあるもの(この場合ならFileタグ1つ)を一括してインストールすることになる。Guid属性については「Guid?」で解説する。

:10行目(File)
|インストールするファイルそのものを表している。Name属性がTEST.TXTとなっているので、この例では(カレントディレクトリ下の)SOURCE\TEST.TXTをインストーラに組み込んだことになる。

ここまでがディレクトリ構造だ。続いての要素もインストーラを作るにあたって必要不可欠な要素だ。

:14行目(Feature)
|これはインストールするコンポーネントを選択するための仕組みだ。Level属性の値によって、この子要素となるコンポーネントをインストールをするかどうか決定する。ここではLevel=1となっており、配下のコンポーネントを必ずインストールする、という意味合いになる。

:15行目(ComponentRef)
|上で、Featureタグの中にはコンポーネントを記述すると書いたが、実際ここにはComponentRefというタグがかかれている。これは、別の場所にあるコンポーネントを参照することをあらわしている。この例ではId属性が同じ9行目のコンポーネントを参照していることになる。つまり14行~17行の意味としては、9行目のコンポーネントを常にインストールする、という意味合いになる。ComponentRefのような「○○Ref」という要素については、 「Id?」 で解説する。


visitor: - (today: - )  Author : nagatyo

コメント (注:コメントは管理人が適宜消去する場合があります)
名前
コメント

すべてのコメントを見る

記事メニュー
目安箱バナー