WiX @ wiki
ディレクトリの表現
最終更新:
wixwiki
-
view
現在執筆途中!!!
Under Construction!!!
「SimpleInstaller」でも簡単なディレクトリの使い方がわかると思うが、あらためてここで解説しておこう。この解説を読む前に、「8.3型式の名前?」について先に理解しておいたほうがよい。
ファイルをインストールする際のインストール先のディレクトリや、インストーラに組み込まれるファイルの場所を指し示すのが、DirectoryタグとFileタグだ。これらのタグの使い方は意外と癖があるので、実例を挙げて1つ1つ説明していく。
トップディレクトリとインストール先パス
まずは「SimpleInstaller」と同じ最も単純な構成。
<Directory Id="TARGETDIR" Name="SOURCE"> <Component ...省略... > <File Id="FILE1" Name="TEST.TXT" /> </Component> </Directory>
通常、DirectoryタグのName属性のみが指定されている場合、パッケージング元のディレクトリと、インストールする先のディレクトリのどちらも、Name属性の値に従うことになる。
但し、Id属性としてTARGETDIRが指定されている場合は別だ。通常Id属性は一意に識別できる文字列とすればよいのだが、TARGETDIRとなっている場合にはインストール先のディレクトリがトップディレクトリ(通常のWindowsマシンであれば C:\ )であることを表すことになる。一番外側のDirectoryタグとして、Id属性をTARGETDIRにするのは決まり文句だと思っていただければよいだろう。
但し、Id属性としてTARGETDIRが指定されている場合は別だ。通常Id属性は一意に識別できる文字列とすればよいのだが、TARGETDIRとなっている場合にはインストール先のディレクトリがトップディレクトリ(通常のWindowsマシンであれば C:\ )であることを表すことになる。一番外側のDirectoryタグとして、Id属性をTARGETDIRにするのは決まり文句だと思っていただければよいだろう。
結局この例の場合、
- パッケージング元: .\SOURCE\TEST.TXT
- インストール先: C:\TEST.TXT
ということになる。
インストール先パスの階層化
続いてもう少し深くディレクトリを掘ってみよう。
<Directory Id="TARGETDIR" Name="SOURCE"> <Directory Id="DIR1" Name="HOGESOFT"> <Directory Id="DIR2" Name="VER001"> <Component ...省略... > <File Id="FILE1" Name="TEST.TXT" /> </Component> </Directory> </Directory> </Directory>
先ほど書いたように、Idとして特殊なものが指定されていなければ、パッケージング元のディレクトリもインストール先のディレクトリも、Name属性に従うことになる。そのためこの場合、
- パッケージング元: .\SOURCE\HOGESOFT\VER001\TEST.TXT
- インストール先: C:\HOGESOFT\VER001\TEST.TXT
ということになる。
パッケージング元のディレクトリパス
Name属性を指定する方法では、インストールする先のディレクトリが深くなった場合に、パッケージング元のディレクトリまで深い階層になってしまう。これを回避するために次のような記述ができる。
<Directory Id="TARGETDIR" Name="SOURCE"> <Directory Id="DIR1" Name="HOGESOFT"> <Directory Id="DIR2" Name="VER001" FileSource="."> <Component ...省略... > <File Id="FILE1" Name="TEST.TXT" /> </Component> </Directory> </Directory> </Directory>
Id属性がDIR2のDirectoryタグに、FileSourceという属性を指定している。
FileSource属性は、パッケージング元ディレクトリを指定する属性だ。この例ではFileSource="." となっている。(ディレクトリの指定で "." はカレントディレクトリを指す)つまり、このDirectoryタグ以下のパッケージング元ディレクトリは、コンパイルする際のカレントディレクトリであるということを示している。
結局、
FileSource属性は、パッケージング元ディレクトリを指定する属性だ。この例ではFileSource="." となっている。(ディレクトリの指定で "." はカレントディレクトリを指す)つまり、このDirectoryタグ以下のパッケージング元ディレクトリは、コンパイルする際のカレントディレクトリであるということを示している。
結局、
- パッケージング元: .\TEST.TXT
- インストール先: C:\HOGESOFT\VER001\TEST.TXT
となる。
これを
<Directory Id="TARGETDIR" Name="SOURCE"> <Directory Id="DIR1" Name="HOGESOFT" FileSource="."> <Directory Id="DIR2" Name="VER001"> <Component ...省略... > <File Id="FILE1" Name="TEST.TXT" /> ...以下省略...
のようにすれば、
- パッケージング元: .\VER001\TEST.TXT
- インストール先: C:\HOGESOFT\VER001\TEST.TXT
となるのも容易にわかるだろう。
パッケージング元のファイルパス
FileタグにはSource属性があり、ファイルパスを直接指定することができる。
<Directory Id="TARGETDIR" Name="SOURCE"> <Directory Id="DIR1" Name="HOGESOFT"> <Directory Id="DIR2" Name="VER001"> <Component ...省略... > <File Id="FILE1" Name="TEST.TXT" Source="C:\SOURCE\TEST.TXT" /> </Component> </Directory> </Directory> </Directory>
FileタグのSource属性を指定することで、Directoryタグで指定されているパッケージング元のディレクトリを無視して、独自にパッケージング元のファイルを指定することができる。
この場合であれば
この場合であれば
- パッケージング元: C:\SOURCE\TEST.TXT
- インストール先: C:\HOGESOFT\VER001\TEST.TXT
となる。
少しトリッキーではあるが、パッケージング元のファイル名から変更した形でインストールも可能だ。
<Directory Id="TARGETDIR" Name="SOURCE"> <Directory Id="DIR1" Name="HOGESOFT"> <Directory Id="DIR2" Name="VER001"> <Component ...省略... > <File Id="FILE1" Name="SAMPLE.TXT" Source="C:\SOURCE\TEST.TXT" /> </Component> </Directory> </Directory> </Directory>
この場合は、
- パッケージング元: C:\SOURCE\TEST.TXT
- インストール先: C:\HOGESOFT\VER001\SAMPLE.TXT
となる。
ロングファイルネーム
その他
Windowsに固有のディレクトリ(例えばProgramFilesやマイドキュメント等)を指定する方法は別に存在する。これについては「システムフォルダ?」を参照していただきたい。
visitor: - (today: - ) Author : nagatyo
コメント (注:コメントは管理人が適宜消去する場合があります)