Pyro can create any number of ZIP archives and add any files to each archive defined in the project.
To configure the ZIP archive:
Zip
attribute to the PapyrusProject
node. Set the value to True
.ZipFiles
block with as many ZipFile
child blocks as needed.ZipFile
block can contain as many Include
and Match
nodes as needed.<ZipFiles Output="@OutputPath">
<ZipFile Name="@ModName" RootDir="@OutputPath" Compression="deflate">
<Include NoRecurse="true">MyPlugin.esp</Include>
<Include NoRecurse="true">MyPlugin.bsa</Include>
<Match In="SKSE">*.dll</Match>
<Match In="Strings">*.*strings</Match>
</ZipFile>
<ZipFile Name="@ModName - English" RootDir="@OutputPath" Compression="deflate">
<Match In="Strings">*.*strings</Match>
</ZipFile>
</ZipFiles>
Files can be included in ZIP archives using both Include
and Match
nodes.
Include
node supports relative file and folder paths, absolute file and folder paths, and glob expressions.Match
node supports wildcard file patterns, including file negation and directory exclusion patterns.All matches are case insensitive. Files can be matched outside the project root but are added to the root of ZIP archives by default.
<!-- Search for pattern "README.md" from the project path, recursively if not found in the project root -->
<Include NoRecurse="false">README.md</Include>
<!-- Like above but adds the "README.md" file to the "docs" folder in the ZIP archive -->
<Include Path="docs">README.md</Include>
<!-- Search for pattern "docs\README.md" from the project path, recursively if not found from the project root -->
<Include>docs\README.md</Include>
<!-- Search for pattern "docs\*.md" from the project path, recursively -->
<Include>docs\*.md</Include>
<!-- Search for all files in the "docs" folder from the project path, recursively -->
<Include>docs</Include>
<!-- Match "*.esp" from the project path, recursively -->
<Match>*.esp</Match>
<!-- Match "*.esp" from the project path, recursively, but exclude file matches starting with "optional" -->
<Match>*.esp|-optional</Match>
<!-- Match "*.esp" in only the project path -->
<Match NoRecurse="true">*.esp</Match>
<!-- Match "*.esp" from the "optional" folder in the project path, recursively -->
<Match In="optional">*.esp</Match>
<!-- Match "*.esp" from the "optional" folder in the project path, recursively -->
<Match Exclude="*|-optional">*.esp</Match>
<!-- Match "*.esp" from the project path, recursively, but exclude matches in the "optional" folder -->
<Match Exclude="optional">*.esp</Match>