StepperUpper 2.0.0.0

@airbreather airbreather released this Sep 10, 2017 · 26 commits to master since this release

First version with STEP 2.10.0 support.

Before diving into STEP 2.10.0 pack files, I needed a software update to set the FOV based on the user's resolution. I was also concerned that TanninOne/modorganizer#1124 might make it into the Fall Creators Update, so I wanted to get some infrastructure in place to help reduce the dependency on ModOrganizer in case that did become a reality.

Requires .NET Framework 4.6.1+ (4.6 will no longer work). Windows 10 users who have at least the November 2015 update already have this.

Does not support pack files from versions earlier than 2.x. This would have made a lot of the below changes infeasible.

Changes since 1.1.0.0:

  1. Split the XML file handling into two parts: one part converts the input XML file to an object model, and the second part consumes that object model to actually do the work.
    a. The main advantage is that I can more easily create "shortcuts" like SimpleMO was (see later).
    b. The main disadvantage is that it significantly increases the amount of code.
  2. File / folder inputs / outputs in XML files now support an optional "parent" from a well-defined set, instead of having to use a string-rewriter to put absolute path placeholders all over.
  3. Per the previous item, <Materialize> is no longer needed, since it's just a special-case of <CopyFile>.
  4. <Group>, under <Tasks>, is now just a single task on its own. This allows <Group> to be nested inside another <Group>, and it allows any task (including another <Group>!) to wait for all of that group's tasks to complete before it starts. This was super useful in those "Finalize" XML files...
  5. The SimpleMO attribute is gone. In its place, we now have:
    a. Mod attribute, to set the output path base in <ExtractArchive> to ModOrganizer/mods/TheMod ("." means to pretend like we repeated the value from ArchiveFile),
    b. SimpleMap="Mod" is like SimpleMO="Root" and implies Mod="." if there's no Mod="..." already,
    c. NestedDepth="n" lets us pretend like the whole archive was rooted n levels deep (so, SimpleMap="Mod" NestedDepth="1" is identical to the old SimpleMO="Single", but you can also set NestedDepth="2" to catch those things that put "Data" under something else; it's useful other places, too), and
    d. things that did SimpleMO="SingleData" but can't do SimpleMO="Single" just have to do it the hard way.
  6. All archives now extract to a temp folder first (previously, some SimpleMO values were special).
  7. Errors no longer terminate the process; instead, we now write the failed task's XML and the exception details.
    a. Any dependent tasks that WaitFor the erroring task will receive the same error.
  8. Support a new {OptimalSkyrimFOVDegrees} parameter based on the resolution that the user entered.
  9. Support a new {GraphicsPreset} parameter from a dropdown.
  10. Use server-mode garbage collection in the app config, so we do our own work (mainly plugin cleaning stuff) slightly faster at the expense of probably making it look like we use significantly more RAM (we don't; we just probably won't wind up doing garbage collection as frequently anymore).
  11. Reject pack files with a MinimumToolVersion lower than 2.0.0.0.

StepperUpper 1.1.0.0

@airbreather airbreather released this Jan 16, 2017 · 64 commits to master since this release

First beta with support for SR:LE, including a pack file that gets you through most of the tedious parts. Still supports all the older STEP pack files.

Changes since 1.0.0.0:

  1. A bit less special fancy code in the plugin cleaning process, which should make it a bit faster in some cases.
  2. Support extracting the contents of BSA files (currently only hooked up to the code that runs after a mod archive has been extracted to the temp location).
  3. Use Costura.Fody to clean up the outputs.
  4. Add a task to copy a MD5-checked file directly to the output directory without any processing.
  5. Add a task to just delete a file from the output directory.
  6. Specializing some of the code for microarchitectures that don't need software to fix up unaligned memory reads.

I'm also no longer including snapshots of the pack files with release packages going forward, to encourage getting the latest versions. Links to the individual files are at the top post of this. The folder that contains all of them here.

StepperUpper 0.9.4.0

@airbreather airbreather released this Dec 5, 2016 · 112 commits to master since this release

Fifth, and perhaps final, beta release.

Changes since 0.9.3.2:

  1. Isolated LOOT metadata so it's specific to this setup.
  2. Pre-loaded the STEP LOOT user metadata rules.
  3. Supporting SHA-512 checksums; added them to the things we download and run automatically.
    1. Note: putting them on everything made things too much slower, so it's just the critical stuff.
  4. Got rid of checks for the DLC BSA files since they can and do differ across languages (and it made things slower).
  5. Setting Skyrim full-screen mode and resolution based on new inputs (defaulting to somewhat reasonable values).

StepperUpper 0.9.3.0

@airbreather airbreather released this Nov 13, 2016 · 131 commits to master since this release

Fourth beta release. Many small changes.

Changes since 0.9.2.0:

  1. Presenting a UI for the inputs if the download folder, pack files, and/or output folder are unspecified.
  2. Allowing pack files to use the Skyrim install folder instead of Steam install folder for everything, and auto-detecting the Skyrim install folder if the Steam install folder is omitted.
  3. Auto-detecting the 32-bit Java "bin" folder if it's omitted. Between this and the previous item, this fixes #17.
  4. A bit of work towards #6 by adding a Game attribute to <Modpack> elements.
  5. Optionally (enabled by default) pausing at the end of the process so users can see the output.
  6. Running 7z.exe processes at the "Below Normal" priority so that system responsiveness doesn't completely tank while running this.

Additionally, the pack definitions have had some improvements on their own:

  1. Wrye Bash now stores its settings in profile-specific folders instead of the default system-wide steamapps\common\Skyrim Mods. The Mod Organizer executable to run Wrye Bash has been changed to a batch script that makes this work.
  2. Took out the 5-second delay when doing the DynDOLOD part of "Finalize" scripts, since it seems to work without it and it would have needed a WinActivate / WinWaitActive fanfare anyway.
  3. Consistently using forward-slashes wherever possible instead of backslashes that occasionally need to be escaped and may make future cross-platform ideas more difficult.

StepperUpper 0.9.2.0

@airbreather airbreather released this Nov 11, 2016 · 138 commits to master since this release

Third beta release. Changes are mainly to support path length pre-checks and enable running complex post-install steps using embedded AutoHotkey scripts.

Changes since 0.9.1.0:

  1. <Modpack> elements now support an optional LongestOutputPathLength attribute which indicates the length of the longest sub-path under the output directory that needs to be supported for that pack.
    1. When given, the application will refuse to run if the output directory length plus LongestOutputPathLength (plus one for the slash that combines them) exceeds 255, and so Windows will probably reject.
    2. This checking behavior can be turned off with a new optional command-line flag, --allowLongPaths, in case you have reason to believe it's not an issue.
    3. For pack developers, you can also pass a new optional command-line flag --detectMaxPath to have StepperUpper automatically detect the path string that would likely determine the correct value to put for LongestOutputPathLength (not guaranteed to be correct if the true determinant is very short-lived such that FileSystemWatcher doesn't have the opportunity to tell us about it).
  2. Added a new type of task, <RunProcess>, which lets you run any arbitrary process. Arguments can be treated as either bare strings or as relative paths rooted at the output directory.
    1. There are now sample XML files that use this along with <Embedded> to run AutoHotkey scripts that automate DSR patching, FNIS output generation, DynDOLOD TexGen, and the main DynDOLOD generation.
  3. Added various self-explanatory folder manipulation tasks: <DeleteFolder> and <MoveFolder>.
  4. Added a new type of task, <EditFile>, which lets you make small changes to text files. Currently supports adding a new line before or after another given line, modifying a line, and deleting a line altogether.
  5. Fixed a bit of a race condition where consoles like the revamped Windows 10 one that deliver messages insanely slowly would make it look like the number of remaining tasks bounces around all over the place. I figured this wouldn't be as big of a deal as it was.
  6. Changed the folder name format for the temporary "staging folders" that many archives extract to in order to let this succeed for deeper output folder paths than before, given the Windows path length limitations.
    1. Along with this, some sample XML files switched from "SimpleMO" to more explicit and verbose equivalents to get even more room in the output folder path string.

StepperUpper 0.9.1.0

@airbreather airbreather released this Oct 31, 2016 · 156 commits to master since this release

Second beta release. Changes are mainly to support STEP Extended.

Changes since 0.9.0.0:

  1. <Plugin> elements for <Clean> tasks no longer support their own individual WaitFor attributes.
    1. This would complicate #4, and in real-world use cases it will not offer a significant advantage over simply making the entire <Clean> task wait for everything that its plugins depend on.
  2. -p now accepts multiple files to run in sequence. The long argument has been renamed to --packDefinitionFiles accordingly.
  3. New (sometimes) optional argument: --javaBinFolder, used for filling in {JavaBinFolderForwardSlashes} placeholders in the pack XML files.
    1. Required if any file in -p has {JavaBinFolderForwardSlashes} in it, otherwise optional.
    2. Must be 32-bit to work with Mod Organizer. StepperUpper does not check for this.
  4. Modpack elements now support a Requires attribute which allows them to specify other packs (optionally with the specific pack version, optionally with the specific file version) that must have installed successfully before running.
  5. Modpack elements now must provide a MinimumToolVersion, starting this release.
    1. Now, XML files intended for newer versions of the tool which are running on older versions of the tool that don't support all its features will cause an error right away instead of perhaps silently ignoring things it's asked to do.
  6. Hide now appends a .mohidden extension instead of just deleting the file / folder entirely.
    1. This allows the user to "Unhide" the hidden files through Mod Organizer if they choose.
  7. Added Optional as a partial replacement for Hide, which does what Mod Organizer does when you move an ESP file to the "Optional ESPs" section.
    1. Like the Hide change, this allows the user to manage these using Mod Organizer's Optional ESPs feature.
  8. Sample files use <![CDATA[...]]> in embedded text files to make it easier to replace their contents.
  9. Version updates for a few mods that have been updated in STEP Core.
    1. I'm a bit confused about why ENBSeries v308 has changed since 0.9.0.0...
  10. Providing a sample file for STEP Extended.
    1. See #19 for manual steps you must do after the automation finishes, at least for now.