FOModの作り方(Xml Tips)
FOMod(Xml)に関するTipsをまとめておきます。
必ずコピーするファイルの記述方法
どのオプションを選んでも必ずコピーするファイルがある場合、次の3つの方法で記述できます。
方法1:必ず通過するページを利用
必ず通過するページに、常に選択される選択肢を用意して記述します。
チュートリアル2、チュートリアル4で用いた方法です。
- 例
<installStep name=""> <optionalFileGroups order="Explicit"> <group name="ようこそ!" type="SelectExactlyOne"> <plugins order="Explicit"> <plugin name="ようこそ"> <description> 次のページでインストールオプションが選べます。 </description> <image path="FOMod\Images\Intro.jpg"/> <!-- *** 必ずコピーするファイル *** --> <files> <folder source="00 Core Meshes" destination="" priority="0"/> <file source="10 Esps\coreModule.esp" destination="coreModule.esp" priority="0"/> </files> <typeDescriptor> <type name="Required"/> </typeDescriptor> </plugin> :
方法2:<requiredInstallFiles>を使う
ModuleConfig.xml先頭の<moduleName>と<installSteps>の間に<requiredInstallFiles>を追加して記述します。
- 例
<?xml version="1.0" encoding="UTF-16"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://qconsulting.ca/fo3/ModConfig5.0.xsd"> <moduleName>FOMod Tutorial 02</moduleName> <!-- *** 必ずコピーするファイル *** --> <requiredInstallFiles> <folder source="00 Core Meshes" destination="" priority="0"/> <file source="10 Esps\coreModule.esp" destination="coreModule.esp" priority="0"/> </requiredInstallFiles> <installSteps order="Explicit"> :
方法3:<conditionalFileInstalls>にコピー条件のない<pattern>を定義する
<conditionalFileInstalls>に<dependencies>の中身が空の<pattern>を定義します。
- 例
<conditionalFileInstalls> <patterns> <!-- *** 必ずコピーするファイル *** --> <pattern> <dependencies> </dependencies> <files> <folder source="00 Core Meshes" destination="" priority="0"/> <file source="10 Esps\coreModule.esp" destination="coreModule.esp" priority="0"/> </files> </pattern> :
priority属性について
<file>と<folder>にはコピー順序を指定するpriority属性が指定できます。
priority属性には"0"以上の数字が指定できます。複数の項目に対して同じ値を指定してもかまいません。
省略したときは"0"が仮定されるはずですが、明示的に記述したほうが安全と思われます。
FOModインストーラがファイルをコピーする際、ModuleConfig.xml内に記載された<file>と<folder>をpriority属性の昇順にソートし、その順序でコピーを行うようです(もちろん選択していないものは除外されます)。
priorityが同一の場合は記述順となります。
同一のファイルに対するコピーを複数回指定した場合、priority属性が一番大きく、一番最後に記述されたものが最終的にコピーされます。
- 例
ModuleConfig.xml中に次の順序で<file>が出現するものとします。
<file source="11 Type1\Follower.esp" destination="Follower.esp" priority="0"/> <file source="12 Type2\Follower.esp" destination="Follower.esp" priority="2"/> <file source="13 Type3\Follower.esp" destination="Follower.esp" priority="5"/> <file source="14 Type4\Follower.esp" destination="Follower.esp" priority="5"/> <file source="15 Type5\Follower.esp" destination="Follower.esp" priority="1"/>
この場合、ファイルはType1 -> Type5 -> Type2 -> Type3 -> Type4の順にコピーされ、最終的にType4がインストールされます。
- 注意
- 詳細未確認ですが、MOのとき特定条件化でpriorityどおりファイルが上書きされないことがあるようです。priorityによる上書きに依存したインストールを行う場合、リリース前にNMM/MO両方で動作検証することをお勧めします。
修正履歴
- 2015/05/25 00:53 priorityの注意事項を追記