WiX @ wiki
基本的な考え方
最終更新:
wixwiki
-
view
現在執筆途中!!!
Under Construction!!!
「SimpleInstaller」と「SimpleInstaller解説」を既に理解していることを前提に話を進めよう。
ファイルを配置するには、Directoryタグ・Componentタグ・Fileタグが必要なのは理解できているだろうか。具体的には
<Directory ...> <Component ...> <File /> </Component> </Directory>
というように、Directoryタグ配下にComponentタグを、Componentタグの配下にFileタグを配置する。それぞれのタグに付く細かな属性については、「Componentの概念」や「パスの指定」等を見ていただければわかるはずなので、ここでは割愛させていただく。(実際にはこれ以外に、Componentの内容をFeatureに登録するという部分も必須だが、そこは「Featureの概念」を見て理解していただこう)
さて、コンパイルするための細かな属性やその他の情報をきちんと付与した上で、上記のようなコードをコンパイル・リンクし、インストーラを起動すると何が起こるだろうか。順を追って挙げてみよう。
まず、リンクの段階では
- インストール対象となるファイルをインストーラに取り込む
続いて、インストール時には
- (インストール先ディレクトリがなければ)ディレクトリを生成する
- ファイルを配置する
最後にアンインストール時には
- ファイルを削除する
- (ディレクトリ内に何もファイルがなければ)ディレクトリを削除する
という動作を行う。単にComponent・Directory・Fileを適切に記述するだけでこれら一連の動作を定義したことになるのだ。もっとも基本的な動作であるだけに、単純な記述で一連の典型的な動作を表すよう作られているのだろう。(逆に言えば、この流れに沿わないファイルの配置を記述するのは面倒であったり、色々とよけいなことを考えなくてはいけないことになる)
こうしたファイルの配置などの単純な動作に関して、WindowsInstallerは恐ろしく精巧に作られている。
この部分はクリティカルな状況での動作に関わる部分が多く、実際に動作させて確認を取るのが難しい部分もあり、曖昧な記述や誤った記述が多くなる可能性をあらかじめご了承いただきたい。
【ロールバック等トランザクショナルな部分について記述】
この部分はクリティカルな状況での動作に関わる部分が多く、実際に動作させて確認を取るのが難しい部分もあり、曖昧な記述や誤った記述が多くなる可能性をあらかじめご了承いただきたい。
【ロールバック等トランザクショナルな部分について記述】
さて、上記の一連の動作、特にインストール時とアンインストール時に着目してほしい。WindowsInstallerは、必要があればディレクトリを勝手に作るし、必要なくなれば(ディレクトリ内が空であれば)ディレクトリを勝手に消すというわけだ。この仕様も意外に賢い。例えばWindowsInstallerの預かり知らないところで、アプリケーションがファイルを作っているような場合を考えていただきたい。もっともよくあるのは、アプリケーションが設定ファイルを同一ディレクトリ内に作成する場合だろう。この場合、アプリケーションをアンインストールすればアプリケーション自体は削除されるが、WindowsInstallerが関与しないファイル(アプリケーションが書き出した設定ファイル)があるため、ディレクトリはそのまま残る。当然設定ファイルもそのまま残ることになる。次回同じアプリケーションをインストールした場合には、残っている設定ファイルを使って以前の環境がそのまま再現できるというわけだ。
要はWindowsInstaller管理下にあるファイル以外には影響を与えないように、なおかつ極力システムをクリーンに保つ動作を行う
実は同じような動作が、レジストリに対する書き込みでも起こる。
実は同じような動作が、レジストリに対する書き込みでも起こる。
visitor: - (today: - ) Author : nagatyo
コメント (注:コメントは管理人が適宜消去する場合があります)