Major Changes
- Pyro can create multiple BSA/BA2 packages if they are defined in the PPJ.
- Pyro can create a ZIP archive containing specific files if they are defined in the PPJ.
- Pyro can expand variables in paths and string-type attributes if they are defined in the PPJ.
- The
Archive
attribute of thePapyrusProject
node was removed. - The
--anonymize
and--bsarch
arguments were removed.
Packaging
Pyro can now create multiple packages using the Packages
node block.
<Packages Output="{relative or absolute path to output folder where BSA/BA2 packages will be written}">
<Package Name="{file name}" RootDir="{required - relative or absolute path to folder containing files or folders to include}">
<Include>{relative or absolute path to file or folder in RootDir, or simple glob pattern}</Include>
<Include NoRecurse="true">scripts</Include>
<Include NoRecurse="false">**/*.txt</Include>
</Package>
<Package Name="{file name}" RootDir="{required - relative or absolute path to folder containing includes}">
<Include NoRecurse="false">**/*.dds</Include>
</Package>
</Packages>
Note: Glob patterns are limited to "match everything" expressions, such as .pex
and \.psc
.
Default Values
Node | Attribute | Default Value | Required |
---|---|---|---|
Packages |
Output |
Path to pyro/dist folder |
No |
Package |
Name |
If the attribute is omitted: – the package file will be named after the project, – the extension will be appropriate to the game, and – subsequent package names will be suffixed with (1) , (2) , and so on. |
No |
Package |
RootDir |
Path to the project folder | Yes |
Include |
NoRecurse |
false | No |
Zipping
Pyro can now create a ZIP archive containing specific files using the ZipFile
node block.
<ZipFile
Name="{file name}"
RootDir="{required - relative or absolute path to folder containing files or folders to include}"
Output="{relative or absolute path to output folder where ZIP file will be written}"
Compression="{choices: 'store' or 'deflate' compression}">
<Include>{relative or absolute path to file or folder in RootDir, or simple glob pattern}</Include>
<Include>MyProject.esp</Include>
<Include NoRecurse="true">*.bsa</Include>
</ZipFile>
Note: Glob patterns are limited to "match everything" expressions, such as .pex
and \.psc
.
Default Values
Node | Attribute | Default Value | Required |
---|---|---|---|
ZipFile |
Name |
If the attribute is omitted, the ZIP file will be named after the project. | No |
ZipFile |
RootDir |
Path to the project folder | Yes |
ZipFile |
Output |
Path to pyro/dist folder |
No |
ZipFile |
Compression |
deflate | No |
Include |
NoRecurse |
false | No |
Variables
Pyro can substitute variables with defined values in PPJ paths and string attributes.
<Variables>
<Variable Name="namespace" Value="Master of Disguise"/>
<Variable Name="modname" Value="Master of Disguise - Special Edition"/>
<Variable Name="myproject" Value="E:\projects\skyrim\Master of Disguise - Special Edition"/>
</Variables>
Variables are prefixed with the code>@</code symbol. The Name
and Value
attributes are required.
<ZipFile Name="@modname" RootDir="@myproject" Output="@myproject" Compression="deflate">
<Include>@myproject\@modname.esp</Include>
<Include NoRecurse="true">*.bsa</Include>
</ZipFile>
New PapyrusProject Attributes
The Package
and Zip
boolean attributes have been added to allow enabling and disabling packaging and zipping.
<PapyrusProject
xmlns="PapyrusProject.xsd"
Flags="TESV_Papyrus_Flags.flg"
Output="@myproject\scripts"
Optimize="true" Anonymize="true" Package="true" Zip="true">
Default Values
Node | Attribute | Default Value | Required |
---|---|---|---|
PapyrusProject |
Package |
false | No |
PapyrusProject |
Zip |
false | No |
Fixes
- Fixed issue where schema validation could fail on the
Asm
attribute due to case sensitivity - Fixed issue where absolute
Include
paths were not constrained to theRootDir
directory