ModOrganizer2 / modorganizer

Mod manager for various PC games. Discord Server: https://discord.gg/ewUVAqyrQX if you would like to be more involved
http://www.nexusmods.com/skyrimspecialedition/mods/6194
GNU General Public License v3.0
2.19k stars 163 forks source link

Install Script Dependency Tracking #999

Closed Iloei closed 4 years ago

Iloei commented 4 years ago

Is your feature request related to a problem? Please describe. Currently, install scripts check for file dependencies only when they run. This means that it's trivially easy to mess up an install script later on, by installing a mod that it was checking for. Hypothetically, the user (me) should be reviewing install instructions to avoid this issue, but when you've enough mods this turns maybe 15 minutes of gameplay into many days of reviewing install instructions and double checking for issues.

Describe the solution you'd like When an install script runs, MO2 should save: (1) The list of files that that script checks for, and (2) for each file, whether it was present or not.

And, if the dependencies change, that mod should be flagged for reinstall, with a message indicating which files have changed (and whether they appeared or disappeared).

Describe alternatives you've considered I have, at times, built my own install scripts to rebuild my entire mod tree from scratch, with comments in the script indicating such issues, and spending a week or so reviewing mod dependencies when I want to try something different.

Additional context I have not studied the FOMOD implementation, here, to see how easy or difficult this would be to implement. Worst case, though, it should not be difficult to implement an independent parsing pass which simply extracts a list of file names.

Al12rs commented 4 years ago

I'm assuming you mean the c# ones? Or also the xml ones?

Al12rs commented 4 years ago

I don't personally feel like this feature should be in mo2. I don't see how to insert it into the current workflow without it being annoying.

Holt59 commented 4 years ago

This also applies to the standard FOMOD installer, and will probably apply to the OMOD one.

I don't think there is a clean way to do this though. The way installer checks for the presence of a file is not really standardized (for the XML installer, it might be ok, but not for the C# one). Also, a lot of installers do not check for files but let the user select appropriate options themselves.

Also, most check-if-exists stuff are for plugins (esp, esm, esl). Those usually have a master, so if you remove the corresponding dependency, you'll get a warning for missing master. The other way around will probably popup a warning in LOOT.