Jump to content

Need some help creating a FOMOD Installer


xenophobe3

Recommended Posts

You didn't need to pack the whole mod for the FOMOD to be tested, but you didn't know that...

 

Finally worked through your errors and got a working FOMOD. I'll explain what was wrong first and then post the XML code so you can compare the changes and hopefully learn for the future. o.ob

 

#1 At the very top you left off the XML declaration. You needed:

<?xml version="1.0" encoding="UTF-8" ?>

#2 Your Main Plugin group has only one plugin and you stated it as type SelectExactlyOne. With only one plugin option, you can only select one and with the required flag it is automatically selected. Changed to SelectAny in order to bypass this error being complained about.

 

#3 All of your descriptions were missing part of the correct syntax. Example of correct syntax:

							<description>
								<![CDATA[Installs brand new Ivy meshes]]>
							</description>

#4 And last of all, you left off the closing bracket for the InstallSteps at the bottom of the XML

 

 

As promised here is the full XML code:

 

 

<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://qconsulting.ca/fo3/ModConfig5.0.xsd">
	<moduleName>Skyrim Landscape Overhaul - Stone Walls</moduleName>
	<installSteps order="Explicit">
		<installStep name="Custom">
			<optionalFileGroups order="Explicit">
				<!-- Main Plugin -->
				<group name="Main Plugin" type="SelectAny">
					<plugins order="Explicit">
						<plugin name="Base Wall Meshes">
							<description>
							<![CDATA[Required core files. This will install automatically. Includes only the new wall meshes.]]>
							</description>
							<image path="fomod\images\basemesh.jpg"/>
							<files>
								<folder source="00 CoreFiles\Meshes" destination="Meshes"/>
							</files>
							<typeDescriptor>
								<type name="Required"/>
							</typeDescriptor>
						</plugin>  
					</plugins>
				</group>
				<!-- Optionals -->
				<group name="Optionals" type="SelectAny">
					<plugins order="Explicit">
						<plugin name="ESP File">
							<description>
								<![CDATA[Simple replacer for some of Skyrim's stone walls found around farms. You'll see my meshes instead of the vanilla ones. WIP. See mod Description page for progress: http://www.nexusmods.com/skyrim/mods/76359/?]]>
							</description>
							<image path="fomod\images\NewWalls.jpg"/>
							<files>
								<file source="01 ESP\LandscapeOverhaul_Stoneswalls.esp" destination="LandscapeOverhaul_Stoneswalls.esp"/>
							</files>
							<typeDescriptor>
								<type name="Optional"/>
							</typeDescriptor>
						</plugin>
						<plugin name="New Ivy">
							<description>
								<![CDATA[Installs brand new Ivy meshes]]>
							</description>
							<image path="fomod\images\IvyNew.jpg"/>
							<conditionFlags>
								<flag name="NewIvyChoice">On</flag>
							</conditionFlags>
							<files>
								<file source="02 NewIvyMeshes\meshes" destination="meshes"/>
							</files>
							<typeDescriptor>
								<type name="Optional"/>
							</typeDescriptor>
						</plugin>
					</plugins>
				</group>
			</optionalFileGroups>
		</installStep>
		<installStep name="Stone Textures">
			<optionalFileGroups>
				<group name="Texture 1 / Resolution" type="SelectAtMostOne">
					<plugins order="Explicit">
						<plugin name="High">
							<description>
								<![CDATA[4096x4096 diffuse / 2048x2048 uncompressed normals]]>
							</description>
							<image path="fomod\images\RockWallRocks3NewHigh.jpg"/>
						  <files>
							<folder source="03 Stone Texture\1\High\textures" destination="Textures"/>
						  </files>
							 <typeDescriptor>
								<type name="Optional"/>
							 </typeDescriptor>
						</plugin>
						<plugin name="Med">
							<description>
								<![CDATA[2048x2048 diffuse / 1024x1024 uncompressed normals]]>
							</description>
							<image path="fomod\images\RockWallRocks3NewMed.jpg"/>
						  <files>
							<folder source="03 Stone Texture\1\Med\textures" destination="Textures"/>
						  </files>
							<typeDescriptor>
								<type name="Optional"/>
							</typeDescriptor>
						</plugin>
						<plugin name="Low">
							<description>
								<![CDATA[1024x1024 diffuse / 512x512 uncompressed normals]]>
							</description>
							<image path="fomod\images\RockWallRocks3NewLow.jpg"/>
						  <files>
							<folder source="03 Stone Texture\1\Low\textures" destination="Textures"/>
						  </files>
							<typeDescriptor>
								<type name="Optional"/>
							</typeDescriptor>
						</plugin>
					</plugins>
				</group>
					<group name="Texture 2 / Resolution" type="SelectAtMostOne">
						<plugins order="Explicit">
							<plugin name="High">
								<description>
									4<![CDATA[096x4096 diffuse / 2048x2048 uncompressed normals]]>
								</description>
								<image path="fomod\images\RockWallRocks3.jpg"/>
								<files>
									<folder source="03 Stone Texture\2\High\textures" destination="Textures"/>
								</files>
								<typeDescriptor>
									<type name="Optional"/>
								</typeDescriptor>
							</plugin>
							<plugin name="Med">
								<description>
									<![CDATA[2048x2048 diffuse / 1024x1024 uncompressed normals]]>
								</description>
								<image path="fomod\images\RockWallRocks3Med.jpg"/>
								<files>
									<folder source="03 Stone Texture\2\Med\textures" destination="Textures"/>
								</files>
								<typeDescriptor>
									<type name="Optional"/>
								</typeDescriptor>
							</plugin>
							<plugin name="Low">
								<description>
									<![CDATA[1024x1024 diffuse / 512x512 uncompressed normals]]>
								</description>
								<image path="fomod\images\RockWallRocks3Low.jpg"/>
								<files>
									<folder source="03 Stone Texture\2\Low\textures" destination="Textures"/>
								</files>
								<typeDescriptor>
									<type name="Optional"/>
								</typeDescriptor>
							</plugin>
						</plugins>
					</group>
			</optionalFileGroups>
		</installStep>
		<installStep name="New Ivy Textures">
			<visible>
				<flagDependency flag="NewIvyChoice" value="On" /> 
			</visible>
			<optionalFileGroups>
				<group name="Texture Resolution" type="SelectAtMostOne">
					<plugins order="Explicit">
						<plugin name="High">
							<description>
								<![CDATA[2048x2048 diffuse / 1024x1024 uncompressed normals]]>
							</description>
							<image path="fomod\images\ivy.jpg"/>
							<conditionFlags>
								<flag name="NewIvyChoice">On</flag>
							</conditionFlags>
							<files>
								<folder source="04 Ivy Texture\High\textures" destination="Textures"/>
							</files>
							<typeDescriptor>
								<type name="Optional"/>
							</typeDescriptor>
						</plugin>
						<plugin name="Med">
							<description>
								<![CDATA[1024x1024 diffuse / 512x512 uncompressed normals]]>
							</description>
							<image path="fomod\images\ivymed.jpg"/>
							<conditionFlags>
								<flag name="NewIvyChoice">On</flag>
							</conditionFlags>
							<files>
								<folder source="04 Ivy Texture\Med\textures" destination="Textures"/>
							</files>
							<typeDescriptor>
								<type name="Optional"/>
							</typeDescriptor>
						</plugin>
						<plugin name="Low">
							<description>
								<![CDATA[512x512 diffuse / 256x256 uncompressed normals]]>
							</description>
							<image path="fomod\images\ivylow.jpg"/>
							<conditionFlags>
								<flag name="NewIvyChoice">On</flag>
							</conditionFlags>
							<files>
								<folder source="04 Ivy Texture\Low\textures" destination="Textures"/>
							</files>
							<typeDescriptor>
								<type name="Optional"/>
							</typeDescriptor>
						</plugin>
					</plugins>
				</group>
			</optionalFileGroups>
		</installStep>
	</installSteps>
</config> 

 

 

Link to comment
Share on other sites

Actually, if i could ask for one more bit of help.

 

In testing out the installer, the optional Ivy Meshes don't overwrite the core files of the same name. I tried setting priority flags for the files, so the optional meshes would unpack last, but it didn't work.

 

Thanks!!

Link to comment
Share on other sites

Hmm... not sure.

 

I don't set my FOMOD XMLs to install files in the same way. I can't really explain how it is different. All I can do is show you.

Here is my latest XML (feel free to adapt for your needs):

 

 

<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://qconsulting.ca/fo3/ModConfig5.0.xsd">
	<moduleName>UNP Curvy v1 Body Replacer</moduleName>
	<installSteps order="Explicit">
		<installStep name="Body Style Selections">
			<optionalFileGroups order="Explicit">
				<group name="Description for this page" type="SelectExactlyOne">
					<plugins>
						<plugin name="Description for this page">
							<description>
								<![CDATA[Choose which body style you wish to have.]]>
							</description>
							<typeDescriptor>
								<type name="Required"/>
							</typeDescriptor>
						</plugin>
					</plugins>
				</group>
				<group name="Base Body Style" type="SelectExactlyOne">
					<plugins>
						<plugin name="Standard - No HDT">
							<description>
								<![CDATA[Normal body without any extra skeleton nodes for HDT]]>
							</description>
							<image path=""/>
							<conditionFlags>
								<flag name="Standard">Active</flag>
							</conditionFlags>
						</plugin>
						<plugin name="HDT-XPMSE">
							<description>
								<![CDATA[Body with an HDT skeleton rig that requires XPMSE.]]>
							</description>
							<image path=""/>
							<conditionFlags>
								<flag name="HDTXPMSE">Active</flag>
							</conditionFlags>
						</plugin>
						<plugin name="HDT-Simple">
							<description>
								<![CDATA[Body with an HDT skeleton rig that requires any skeleton with the the belly/butt/breast nodes.]]>
							</description>
							<image path=""/>
							<conditionFlags>
								<flag name="HDTSimple">Active</flag>
							</conditionFlags>
						</plugin>
					</plugins>
				</group>
			</optionalFileGroups>
		</installStep>
		<installStep name="NPC Specific Selections">
			<optionalFileGroups>
				<group name="HDT for NPCs" type="SelectAny">
					<plugins>
						<plugin name="HDT for NPCs">
							<description>
								<![CDATA[Modified head mesh with HDT handler node. Install only if you want your NPCs to have HDT jiggles.]]>
							</description>
							<image path=""/>
							<conditionFlags>
								<flag name="NPCHDT">Active</flag>
							</conditionFlags>
							<typeDescriptor>
								<dependencyType>
									<defaultType name="NotUsable"/>
									<patterns>
										<pattern>
											<dependencies operator="Or">
												<flagDependency flag="HDTXPMSE" value="Active"/>
												<flagDependency flag="HDTSimple" value="Active"/>
											</dependencies>
											<type name="Optional"/>
										</pattern>
									</patterns>
								</dependencyType>
							</typeDescriptor>
						</plugin>
					</plugins>
				</group>
			</optionalFileGroups>
		</installStep>
		<installStep name="Body Appearance Selections">
			<optionalFileGroups order="Explicit">
				<group name="Description for this page" type="SelectExactlyOne">
					<plugins>
						<plugin name="Description for this group">
							<description>
								<![CDATA[Choose which appearance style you wish to have.]]>
							</description>
							<typeDescriptor>
								<type name="Required"/>
							</typeDescriptor>
						</plugin>
					</plugins>
				</group>
				<group name="Appearance Style" type="SelectExactlyOne">
					<plugins>
						<plugin name="Bra and Panty">
							<description>
								<![CDATA[Body with bra and panty]]>
							</description>
							<image path="fomod/pics/35 blackbrapanties.jpg"/>
							<conditionFlags>
								<flag name="BraPanty">Active</flag>
							</conditionFlags>
						</plugin>
						<plugin name="Lingerie">
							<description>
								<![CDATA[Body with lingerie]]>
							</description>
							<image path="fomod/pics/32 blacklingerie.jpg"/>
							<conditionFlags>
								<flag name="Lingerie">Active</flag>
							</conditionFlags>
						</plugin>
						<plugin name="Stock">
							<description>
								<![CDATA[Body with stock underwear]]>
							</description>
							<image path="fomod/pics/stock.jpg"/>
							<conditionFlags>
								<flag name="Stock">Active</flag>
							</conditionFlags>
							<typeDescriptor>
								<dependencyType>
									<defaultType name="NotUsable"/>
									<patterns>
										<pattern>
											<dependencies operator="Or">
												<flagDependency flag="Standard" value="Active"/>
											</dependencies>
											<type name="Optional"/>
										</pattern>
									</patterns>
								</dependencyType>
							</typeDescriptor>
						</plugin>
					</plugins>
				</group>
			</optionalFileGroups>
		</installStep>
		<installStep name="Underwear Color Selections">
			<optionalFileGroups order="Explicit">
				<group name="Description for this page" type="SelectExactlyOne">
					<plugins>
						<plugin name="Description for this group">
							<description>
								<![CDATA[Choose which color you wish to have.]]>
							</description>
							<typeDescriptor>
								<type name="Required"/>
							</typeDescriptor>
						</plugin>
					</plugins>
				</group>
				<group name="Color" type="SelectExactlyOne">
					<plugins>
						<plugin name="Black">
							<description>
								<![CDATA[Selected underwear style will be black.]]>
							</description>
							<image path="fomod/pics/colorblack.jpg"/>
							<conditionFlags>
								<flag name="Black">Active</flag>
							</conditionFlags>
							<typeDescriptor>
								<dependencyType>
									<defaultType name="NotUsable"/>
									<patterns>
										<pattern>
											<dependencies operator="Or">
												<flagDependency flag="Lingerie" value="Active"/>
												<flagDependency flag="BraPanty" value="Active"/>
											</dependencies>
											<type name="Optional"/>
										</pattern>
									</patterns>
								</dependencyType>
							</typeDescriptor>
						</plugin>
						<plugin name="Pink">
							<description>
								<![CDATA[Selected underwear style will be pink.]]>
							</description>
							<image path="fomod/pics/colorpink.jpg"/>
							<conditionFlags>
								<flag name="Pink">Active</flag>
							</conditionFlags>
							<typeDescriptor>
								<dependencyType>
									<defaultType name="NotUsable"/>
									<patterns>
										<pattern>
											<dependencies operator="Or">
												<flagDependency flag="Lingerie" value="Active"/>
												<flagDependency flag="BraPanty" value="Active"/>
											</dependencies>
											<type name="Optional"/>
										</pattern>
									</patterns>
								</dependencyType>
							</typeDescriptor>
						</plugin>
						<plugin name="White">
							<description>
								<![CDATA[Selected underwear style will be white.]]>
							</description>
							<image path="fomod/pics/ColorWhite.jpg"/>
							<conditionFlags>
								<flag name="White">Active</flag>
							</conditionFlags>
							<typeDescriptor>
								<dependencyType>
									<defaultType name="NotUsable"/>
									<patterns>
										<pattern>
											<dependencies operator="Or">
												<flagDependency flag="Lingerie" value="Active"/>
												<flagDependency flag="BraPanty" value="Active"/>
											</dependencies>
											<type name="Optional"/>
										</pattern>
									</patterns>
								</dependencyType>
							</typeDescriptor>
						</plugin>
					</plugins>
				</group>
			</optionalFileGroups>
		</installStep>
	</installSteps>
	<conditionalFileInstalls>
		<patterns>
<!-- Installing Meshes -->
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="HDTXPMSE" value="Active"/>
					<flagDependency flag="NPCHDT" value="Active"/>
				</dependencies>
				<files>
					<folder source="40 NPC-HDT===/Meshes" destination="Meshes" priority="0"/>
				</files>
			</pattern>
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="HDTSimple" value="Active"/>
					<flagDependency flag="NPCHDT" value="Active"/>
				</dependencies>
				<files>
					<folder source="40 NPC-HDT===/Meshes" destination="Meshes" priority="0"/>
				</files>
			</pattern>
<!-- Standard body installs -->
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="Standard" value="Active"/>
					<flagDependency flag="Lingerie" value="Active"/>
				</dependencies>
				<files>
					<folder source="01 Mesh-Lingerie/Meshes" destination="Meshes" priority="0"/>
				</files>
			</pattern>
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="Standard" value="Active"/>
					<flagDependency flag="BraPanty" value="Active"/>
				</dependencies>
				<files>
					<folder source="02 Mesh-BraPanty/Meshes" destination="Meshes" priority="0"/>
				</files>
			</pattern>
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="Standard" value="Active"/>
					<flagDependency flag="Stock" value="Active"/>
				</dependencies>
				<files>
					<folder source="04 Mesh-Stock/Meshes" destination="Meshes" priority="0"/>
				</files>
			</pattern>
<!-- HDTXPMSE body installs -->
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="HDTXPMSE" value="Active"/>
					<flagDependency flag="Lingerie" value="Active"/>
				</dependencies>
				<files>
					<folder source="11 Mesh-Lingerie/Meshes" destination="Meshes" priority="0"/>
				</files>
			</pattern>
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="HDTXPMSE" value="Active"/>
					<flagDependency flag="BraPanty" value="Active"/>
				</dependencies>
				<files>
					<folder source="12 Mesh-BraPanty/Meshes" destination="Meshes" priority="0"/>
				</files>
			</pattern>
<!-- HDTSimple body installs -->
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="HDTSimple" value="Active"/>
					<flagDependency flag="Lingerie" value="Active"/>
				</dependencies>
				<files>
					<folder source="21 Mesh-Lingerie/Meshes" destination="Meshes" priority="0"/>
				</files>
			</pattern>
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="HDTSimple" value="Active"/>
					<flagDependency flag="BraPanty" value="Active"/>
				</dependencies>
				<files>
					<folder source="22 Mesh-BraPanty/Meshes" destination="Meshes" priority="0"/>
				</files>
			</pattern>
<!-- Installing Textures -->
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="Lingerie" value="Active"/>
					<flagDependency flag="White" value="Active"/>
				</dependencies>	
				<files>
					<folder source="33 WhiteLingerie/Textures" destination="Textures" priority="0"/>
				</files>
			</pattern>
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="Lingerie" value="Active"/>
					<flagDependency flag="Pink" value="Active"/>
				</dependencies>	
				<files>
					<folder source="31 PinkLingerie/Textures" destination="Textures" priority="0"/>
				</files>
			</pattern>
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="Lingerie" value="Active"/>
					<flagDependency flag="Black" value="Active"/>
				</dependencies>	
				<files>
					<folder source="32 BlackLingerie/Textures" destination="Textures" priority="0"/>
				</files>
			</pattern>
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="BraPanty" value="Active"/>
					<flagDependency flag="White" value="Active"/>
				</dependencies>	
				<files>
					<folder source="36 WhiteBraPanties/Textures" destination="Textures" priority="0"/>
				</files>
			</pattern>
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="BraPanty" value="Active"/>
					<flagDependency flag="Pink" value="Active"/>
				</dependencies>	
				<files>
					<folder source="34 PinkBraPanties/Textures" destination="Textures" priority="0"/>
				</files>
			</pattern>
			<pattern>
				<dependencies operator="And">
					<flagDependency flag="BraPanty" value="Active"/>
					<flagDependency flag="Black" value="Active"/>
				</dependencies>	
				<files>
					<folder source="35 BlackBraPanties/Textures" destination="Textures" priority="0"/>
				</files>
			</pattern>
		</patterns>
	</conditionalFileInstalls>		
</config> 

 

 

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...