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
Archiveattribute of thePapyrusProjectnode was removed. - The
--anonymizeand--bsarcharguments 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
Asmattribute due to case sensitivity - Fixed issue where absolute
Includepaths were not constrained to theRootDirdirectory
