Wrye Bash - Thread #109

Post » Wed May 11, 2016 7:00 am

Continuing from the http://www.gamesas.com/index.php?showtopic=1599816...

What does Wrye Bash do?
  • It makes it safe to try out new mods because it will restore everything to the way it was when you uninstall a mod
  • It makes more mods compatible with each other by importing information from different mods into a "bashed patch"
  • It allows you to exceed the 255 mod threshold by automatically merging some types of mods for you
FAQ:

Spoiler
  • What the heck do all these acronyms mean?

Yeah, to save typing, we often sling around terminology that can be confusing to newcomers. Here's a quick rundown of what we mean:

  • WB: Wrye Bash. Written in Python.
  • WBSA: Wrye Bash Standalone. Wrye Bash packaged with the required Python interpreter and all dependencies into one neat executable package. Still internally runs on Python, but since the interpreter is internal to the exe, no Python components are required to be installed.
  • PBash: A Bashed Patch built with the "classic" Python mode patchers. These patchers read, process, and write mod records all in Python.
  • BAIN: BAsh INstaller. You use it from the WB Installers tab
  • BAIN archive: A mod released in a format that can be installed by BAIN
  • CBash:
    • A Bashed Patch built with the CBash (see #2) mode patchers. These patchers still do mod processing in Python, but utilize CBash.dll to do the file reading and writing.
    • A C++ written DLL with a C API, that is used for reading and writing ESP/ESM format files. This is the only part of Wrye Bash not written in Python (well, except for calls to 7z.exe to extract things).
    • The practical benefits of using CBash are:
      • Building the bashed patch is much faster
      • More plugins are mergeable, giving you the ability to cram more goodness into the game
      • In the future, more interesting kinds of tweaks will be practical to implement


Download: http://www.nexusmods.com/oblivion/mods/22368 and, of course, https://github.com/wrye-bash/wrye-bash/releases.

Documentation:
  • http://wrye-bash.github.io/docs/Wrye%20Bash%20General%20Readme.html, http://wrye-bash.github.io/docs/Wrye%20Bash%20Advanced%20Readme.html, http://wrye-bash.github.io/docs/Wrye%20Bash%20Technical%20Readme.html, http://wrye-bash.github.io/docs/Wrye%20Bash%20Version%20History.html (also included in the download as "Wrye Bash General Readme.html" in the Mopy/Docs folder)
  • alt3rn1ty's http://www.nexusmods.com/oblivion/mods/35230 (For Oblivion, new guide for Skyrim pending)
  • Metallicow's BAIN http://www.nexusmods.com/oblivion/mods/38857
  • Translated documentation and guides: http://guides.tesfans.org
Requirements and Installation:

Short version: just use the installer, and install everything to their default locations.

Long version: see the http://wrye-bash.github.io/docs/Wrye%20Bash%20General%20Readme.html for information, and the http://wrye-bash.github.io/docs/Wrye%20Bash%20Advanced%20Readme.html for even more details.

Development:
The project is hosted at https://github.com/wrye-bash/wrye-bash. You'll need a GitHub account to create or add data to bug reports and feature requests.

Reporting Bugs: Try to give us enough information to diagnose your problem. The following information is useful to us:

Spoiler
  • Your operating system! If on windows and UAC is enabled and the game is in the default directory (ex C:\Program Files (x86)\Bethesda Softworks\Oblivion) please install it somewhere else. This can cause lots of problems.
  • Wrye Bash version! Also specify if you are using Python Wrye Bash, or Wrye Bash StandAlone exe (WBSA). If you're using a development version, be sure to include the commit SHA.
  • Bug description - be sure to include:
    • what you did (step-by-step),
    • what you expected, and
    • what happened.
  • Any and every error message you encounter. `stdout/stderr` window that pops up with errors is especially useful - but if you produced a bugdump you won't see this - the errors will go to the bugdump (preferred).
  • The bashbugdump.log

    The `bashbugdump.log` contains precious information on your python install, encodings etc - you must add this to your report. To generate it:
    • Python version
      Launch `Wrye Bash Debug.bat` (recommended) or fire up a command prompt, navigate to Mopy and issue

      C:\path\to\Mopy>c:\path\to\Python27\python.exe "Wrye Bash Launcher.pyw" -d
      C:\path\to\Mopy>"Wrye Bash Launcher.pyw" -d won't work.
    • WBSA version: Fire up a command prompt, navigate to Mopy and issue:
      C:\path\to\Mopy>"Wrye Bash.exe" -d
    This way the output will be redirected to Mopy/bashbugdump.log and no more stdout/stderr windows will pop up.
  • Are you using a bash.ini ? If so, include its contents (in spoiler tags, please!).
  • Is the problem related to the Bashed Patch ? If so include the following:
    • Your Load Order (in spoiler tags). Right click on a column header in the Mods tab > 'List Mods...'.
    • Your Bashed Tags (in spoiler tags). Right click on a column header in the Mods tab > 'List Bash Tags...'.
    • Your Bashed Patch config (in spoiler tags). Right click on a column header in the Mods tab > 'List Patch Config...'.
  • If you think you've found an error using WBSA, be sure to uninstall ALL python components and test it again first, to be sure we get an accurate report. Having python installed can sometimes trick the WBSA into thinking that it has all of the files it requires, even if it really doesn't.


You can see all the known bugs in the https://github.com/wrye-bash/wrye-bash/issues, and more info on reporting a bug and Bash's logs
on our https://github.com/wrye-bash/wrye-bash/wiki/%5Bgithub%5D-Reporting-a-bug wiki page

Linking: If you'd like to link to Bash from somewhere else, please do! But be sure to link to either http://www.nexusmods.com/oblivion/mods/22368 or https://github.com/wrye-bash/wrye-bash. Don't link to the actual download file, since that changes fairly frequently.

Related Projects:
  • The Official http://www.gamesas.com/index.php?showtopic=1505167.
  • Load orders should be managed with http://boss-developers.github.io/, which also supplies updated lists of tags used for importing (though even if you don't use BOSS, a basic taglist is shipped with each version of Wrye Bash)
  • Valda ported and maintains Wrye Bash for Fallout3 (http://www.gamesas.com/index.php?showtopic=1211142) and Fallout3 New Vegas (http://www.gamesas.com/index.php?showtopic=1234195). These are in the process of being re-integrated into Wrye Bash proper.
Join the Wrye Bash Team:

Currently we are looking for volunteers to contribute Wrye Bash. The main focus is updating Wrye Bash's code so that it can handle more than just leveled lists for Skyrim. However, that does not mean that the Oblivion version will be ignored. Wrye Bash is written in Python but does use some external C++ files. For that reason we need Python programmers primarily but could use anyone with C++ experience to update the external libraries that Wrye Bash uses. If you would like to volunteer please PM me. Your help will be greatly appreciated.

The updates that are needed:

1) Update patchers so Wrye Bash can process Skyrim's files as it does for Oblivion
2) Finalize the code refactoring that started with 305 and 306 - mainly refactor BAIN and freeze the layout of the patchers package
3) Finalize the UI refactoring so we can move on to newer python/wx python versions
4) Update CBash. CBash is the exception in that it can be updated at any time as long as there is a volunteer to work on it.

Please see the https://github.com/wrye-bash/wrye-bash#contributing in our repo readme.

Changelog for Latest Version:
306 Code refactoring, performance [2015/11/07] [Utumno]

Spoiler
  • Option to list dependencies on a particular mod [Utumno]
  • Optionally skip instead of ignoring Skyrim .BSL [Utumno]
  • Wine Compatibility [Utumno]
  • Oblivion esm version swapping fixups [Utumno]
  • Switching save profile does not activate mods for this save profile [Utumno]
  • Master list fixups and enhancements [Utumno]
  • UnicodeDecodeError on tmp dir creation when username contains non ascii chars [Utumno]
  • Table.dat fixups [Utumno]
  • Scroll position not set on startup (Installers, People and Screens tabs) [Utumno]
  • Delete fixups [Utumno]
  • Ghosted Plugins Sorted after the Bash Patch [Utumno]
  • Bash loads an invalid plugins.txt without notifying the user of the error. [Utumno]
  • Mergeable plugins do not auto deactivate [Utumno]
  • Error when applying BCF [Utumno]
  • [Ini setting] re-add setting for BOSS executable location [Sharlikran]
  • [Ini setting] Disable prompt for activating bashed patch [Utumno]
  • skyrim_const.py is missing the 3rd hi-res DLC file in bethDataFiles array [jfpelland]
  • Added a force UTF-8 option to plugin encodings. [Utumno]
  • Skyrim - New GMST settings tweaks requests [jfpelland]
  • Huge lag when switching back to mods tab from another application [Utumno]
  • Menu item to load only selected mods [Utumno]
  • Comments box forgets its size [Utumno]
  • UnicodeDecodeError when importing a face to a save [Utumno]
  • Rework Mod Groups - remove BALO [Utumno]
  • Bash should send deleted files to the Recycle Bin [Utumno]
  • Masters list displays incorrectly [Utumno]



Full http://wrye-bash.github.io/docs/Wrye%20Bash%20Version%20History.html is available online.
User avatar
Lewis Morel
 
Posts: 3431
Joined: Thu Aug 16, 2007 7:40 pm

Post » Wed May 11, 2016 4:22 pm

Bug tracking and progress towards 307. Here's a rundown of what the next release will contain, as well as a list of all known bugs and requested enhancements. Links lead to the github issue tracker artifacts. If you have information or opinions pertaining to any particular bug or enhancement, please comment at the tracker link. If you have screenshots or sample files, you can attach them (or a link to them) to the trackers too. Any information helps but keep the posts at the tracker as technical as possible! Users who have reported bugs and are updating from git: please check the following for any closed/fixed bugs (indicated with a strikethrough). Confirmation of the fix would be much appreciated. Please note: we have not finished transferring the bug tracker from Sourceforge so please look http://sourceforge.net/p/oblivionworks/bugs/ as well before posting a bug.

https://github.com/wrye-bash/wrye-bash/issues?q=milestone%3A307+is%3Aissue+is%3Aopen
  • https://github.com/wrye-bash/wrye-bash/issues/279: Installer column for mods/inis is not always updated https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/271: Screenshots Tab - Image remains displayed after deleting last screenshot https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/270: BAIN Skips fixups https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/262: Fix overflow error in mods tab for large modification dates https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/236: Cosaves are not edited when editing the save's masters list
  • https://github.com/wrye-bash/wrye-bash/issues/235: Package script and installer fixups https://api.github.com/users/lojack5
  • https://github.com/wrye-bash/wrye-bash/issues/229: MustBeActiveIfImported tag appears to do nothing
  • https://github.com/wrye-bash/wrye-bash/issues/209: Wizard does not show images https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/181: CBash patcher does not import names from csv files
  • https://github.com/wrye-bash/wrye-bash/issues/179: Mods flicker on mouse over https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/97: Ini Tweaks throw an Exception under Japanese Locale
  • https://github.com/wrye-bash/wrye-bash/issues/96: BAIN Installers does not install all files https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/93: BAIN is no longer auto-annealing even with the setting enabled (possibly resolved)
  • https://github.com/wrye-bash/wrye-bash/issues/92: [Oblivion] Bashed Patch changing hardcoded FormIDs
  • https://github.com/wrye-bash/wrye-bash/issues/278: Installers Quick Refresh menu item https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/277: Refreshing an installer should refresh/rescan its files in Data https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/276: Customizable color for markers https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/269: Skip Bash Installers Folders https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/253: Drop support for older Bash settings files https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/231: Masterless blank esps https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/221: Remove the messages tab https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/214: Bashed Patch with Nehrim and other total conversions https://api.github.com/users/jfpelland
  • https://github.com/wrye-bash/wrye-bash/issues/210: Lock load order https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/205: Refresh optimizations https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/171: Make mod export dialogs to remember the export path
  • https://github.com/wrye-bash/wrye-bash/issues/83: Function to check for changed FormIDs
  • https://github.com/wrye-bash/wrye-bash/issues/53: Jump from Mod List to the Installer that installed a mod https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/26: Persistent language setting
https://github.com/wrye-bash/wrye-bash/issues?q=is%3Aissue+is%3Aopen+label%3Abug

Spoiler
  • https://github.com/wrye-bash/wrye-bash/issues/280: CBash memory error
  • https://github.com/wrye-bash/wrye-bash/issues/223: Apply BCF fails when the converted installer is present

https://github.com/wrye-bash/wrye-bash/issues?q=is%3Aissue+is%3Aopen+label%3Aenhancement

Spoiler
  • https://github.com/wrye-bash/wrye-bash/issues/291: INI Edits: Hide invalid tweaks
  • https://github.com/wrye-bash/wrye-bash/issues/290: Better handling of missing game ini
  • https://github.com/wrye-bash/wrye-bash/issues/289: Add more text styles and mouse tips in the Installers tab
  • https://github.com/wrye-bash/wrye-bash/issues/274: Prompt to see if user wishes to remove crc-mismatched files on BAIN uninstall
  • https://github.com/wrye-bash/wrye-bash/issues/273: List files in clean data/ sync from data
  • https://github.com/wrye-bash/wrye-bash/issues/272: Wizard Fixups and additions
  • https://github.com/wrye-bash/wrye-bash/issues/267: Collapsible Markers
  • https://github.com/wrye-bash/wrye-bash/issues/266: Rework docs detection and display by BAIN
  • https://github.com/wrye-bash/wrye-bash/issues/256: Undo Load order change
  • https://github.com/wrye-bash/wrye-bash/issues/254: List Script Extender Plugins
  • https://github.com/wrye-bash/wrye-bash/issues/250: Profiles https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/249: OR file extension issue
  • https://github.com/wrye-bash/wrye-bash/issues/233: BSA tab
  • https://github.com/wrye-bash/wrye-bash/issues/222: Converters Tab
  • https://github.com/wrye-bash/wrye-bash/issues/216: Alt + right/left arrows shortcut to navigate to next/previous selection in all Bash lists https://api.github.com/users/Utumno
  • https://github.com/wrye-bash/wrye-bash/issues/213: Highlight the masters of the bashed patch
  • https://github.com/wrye-bash/wrye-bash/issues/196: Face Import fixups
  • https://github.com/wrye-bash/wrye-bash/issues/189: Wizard GetEspmLoadOrder function addition
  • https://github.com/wrye-bash/wrye-bash/issues/81: Add launcher for LOOT https://api.github.com/users/WrinklyNinja
  • https://github.com/wrye-bash/wrye-bash/issues/52: BAIN: Create a special package for vanilla files
  • https://github.com/wrye-bash/wrye-bash/issues/51: 'NoMerge' and 'Deactivate' improvements
  • https://github.com/wrye-bash/wrye-bash/issues/50: View of data folder with source installers
  • https://github.com/wrye-bash/wrye-bash/issues/49: BAIN 'Update from file'
  • https://github.com/wrye-bash/wrye-bash/issues/48: More visible BAIN comands
  • https://github.com/wrye-bash/wrye-bash/issues/47: Recognize BCFs that are introduced via File drag'n'drop
  • https://github.com/wrye-bash/wrye-bash/issues/46: Per-plugin encodings
  • https://github.com/wrye-bash/wrye-bash/issues/45: SEFF icon tweaker
  • https://github.com/wrye-bash/wrye-bash/issues/44: BAIN 'Hide' feature requests
  • https://github.com/wrye-bash/wrye-bash/issues/43: Hide some "always recommended" Bashed Patch options
  • https://github.com/wrye-bash/wrye-bash/issues/42: Automatic 'Plugin Encoding' detection
  • https://github.com/wrye-bash/wrye-bash/issues/41: Sync to Data for archives
  • https://github.com/wrye-bash/wrye-bash/issues/40: Better readme detection
  • https://github.com/wrye-bash/wrye-bash/issues/39: Preview of 'Clean Data'
  • https://github.com/wrye-bash/wrye-bash/issues/38: Cancel a package install
  • https://github.com/wrye-bash/wrye-bash/issues/37: BAIN packaging of projected data into a BSA
  • https://github.com/wrye-bash/wrye-bash/issues/36: Refactor generic launchers
  • https://github.com/wrye-bash/wrye-bash/issues/31: Add patcher support fo XCLR subrecords of CELL
  • https://github.com/wrye-bash/wrye-bash/issues/30: Date activated column



The bugs mentioned fixed are fixed in the stable development version, you can download the python files from here: https://github.com/wrye-bash/wrye-bash/archive/dev.zip

Bleeding edge code: https://github.com/wrye-bash/wrye-bash/archive/utumno-wip.zip https://github.com/wrye-bash/wrye-bash/archive/utumno-lo.zip
We will soon update with links to executables for the stable and bleeding edge 307 beta.

UPDATE: bleeding edge WB standalone: https://www.dropbox.com/sh/7b5ily482re0khs/AAD3vAWMVJNIpuS30tsdVte5a?dl=0. If more than one files in there download latest !
User avatar
Laura Simmonds
 
Posts: 3435
Joined: Wed Aug 16, 2006 10:27 pm

Post » Wed May 11, 2016 10:36 pm


Fixed in https://github.com/wrye-bash/wrye-bash/tree/utumno-lo- won't pack a standalone yet cause I need to start merging and correct couple other things. My wip branch contains ~90 commits so this will take a while.

Meanwhile, re:loot:

- do you know if it is possible to call the loot.exe to parse the masterlist for us ?
- What functionality we need to support from loot in Bash ? With BOSS we supported setting load order and getting tags IIRC ? We also get dirty information ?
- Goal is to make an internal Bash API for binding to whatever app the user points us to - and only fallback to our taglists.yaml if need be - which we could parse ourselves then. Do the taglist we generate support load ordering and dirty info though (I think not) ?
User avatar
Laura Shipley
 
Posts: 3564
Joined: Thu Oct 26, 2006 4:47 am

Post » Wed May 11, 2016 8:26 pm


Traceback (most recent call last):
File "bash\balt.py", line 2371, in __Execute
self.Execute()
File "bash\balt.py", line 1573, in _conversation_wrapper
return func(*args, **kwargs)
File "bash\basher\installer_links.py", line 573, in Execute
ui_refresh, progress, last, override)
File "bash\bosh\__init__.py", line 6553, in bain_install
override)
File "bash\bosh\__init__.py", line 6528, in _install
SubProgress(progress, index, index + 1))
File "bash\bosh\__init__.py", line 5748, in install
env.shellMove(stageDataDir, destDir, progress.getParent())
File "bash\env.py", line 482, in shellMove
renameOnCollision=autoRename, silent=silent)
File "bash\env.py", line 434, in _fileOperation
raise FileOperationErrorMap.get(result, FileOperationError(result))
bash.env.FileOperationError: FileOperationError: 124

I just had that error trying to use Install Missing from the Installers tab. While working on something I somehow, don't know how, but I somehow extracted a plugin and placed it into my data folder. To be honest I could have sworn I installed the file using BAIN and didn't manually copy the plugin to the data folder. I'm just not sure what I did.



However, I was later trying to verify that I had all the installed files so I could test in game. I also intended to publish a patch for a mod I was working on so I had to make sure the files in the Data folder were the same as I had in my BAIN package that I was going to use for the Nexus file. I decided to do a Full Refresh and then take a look at things. That is when I saw the packadge for the mod in question was red. So I chose Install Missing and then that error occurred. I'm sorry I can't give a better description.



EDIT: I had told Wrye to install the file and it's Materials and Textures. However, Wrye was showing a red package icon indicating missing files. On the matched tab everything was matched. If I uninstalled the file and manually checked the data folder all the files were gone. If I installed it there was a red package icon indicating missing files. Finally I manually clicked anneal and then after it updated it turned green.



Now I had a package with the same plugin file in it but the file is updated. So technically that would mean a conflict with a higher package. So then I annealed the lower package #120 and the higher package #107. Things looked ok. The higher package turned orange like I would expect. The lower package was green like I expect. So I chose Refresh on both. Then it turned red again. The matched tab didn't have the plugin file but the mismatched tab did. Then I looked at the missing tab and it said info.xml and ModuleConfig.xml from the fomod folder were the missing files. Those files are typically used with NMM. You would have to ask Alt3rn1ty but BAIN may look in the fomod folder for the BAIN wizard files. So it's looking there and that's fine but it doesn't need to install the two XML files.



This just happened with my previous rebase off of utumno-lo probably from 307.201605060334 and a new rebase from just now as of 3cc929e. What's weird is I have other packages and I don't have that error when them.


http://i.imgur.com/p6kkT1V.jpg:

General of the Army-6648-1-0-1

General of the Army-6648-1-0-1\Data

General of the Army-6648-1-0-1\fomod



Obviously in the Data folder it has all the files needed for the mod. I just didn't list them. That is a typical file NMM would use.



This is what http://i.imgur.com/UDYxxhk.jpg and it's not red.



I http://i.imgur.com/8vkP2Fu.jpg and now its not red. however, the zip file had the old structure so I don't see why the archive can have the structure but the package can't.

User avatar
Marcin Tomkow
 
Posts: 3399
Joined: Sun Aug 05, 2007 12:31 pm

Post » Wed May 11, 2016 2:05 pm



For #1 I don't think the Loot EXE could parse the masterlist. However, that's not what the BOSS integration did in the past. With the old BOSS DLL (which again is not needed) it imported changes from the taglist, the masterlist, and the userlist because users sometimes make changes to fit their needs. That is all handled by the BOSS and the the LOOT DLL.



For #2 We need the same support that BOSS had so all those things. The LOOT DLL already provides that and the loot.py was also already handling that with the included 0.6.0. The LOOT API had some breaking change made to it when I started working on Skyrim's patchers. So I asked WrinklyNinja for assistance. Then per his advice I changed two lines that he gave me last year. In the ticket on the GitHub site I link the actual archive I used because it comes with the DLL and a PDF. So between comparing the two PDF files and the changes in LOOT that I linked from WrinklyNinjas's GitHub commits it seems like the loot.py just needs some minor changes and things would work as they have been. Then Wrye Bash would provide the same bash tag importing that BOSS did, the same Bash Tag importing Wrye Bash has always had, only now using LOOT instead.



For #3 I don't understand this goal at least not toward importing Bash Tags. The taglist was what was provided when BOSS was the current sorting tool. It was provided so that if a user had not installed BOSS they could still make a proper bash patch. However, the taglist is only generated once when Wrye Bash is released. So the BOSS DLL imported changes from BOSS if it was detected. It would import them from both the masterlist and the userlist. Then in conjunction with manual tags and tags found in the header of the files, Wrye presented its combined findings and reported the sources of the Bash Tags. It has been that way for I don't know how long. LOOT is only the current program instead of BOSS.


Are you saying you want to remove the loot32.dll from Wrye Bash and attempt to have Wrye process all of this internally with Python? If so can you explain why you would make that choice? I don't feel removing the loot32.dll should occur simply because the API changed. To me that's like telling people not to use LOOT because it's not BOSS or not to use LOOT 0.8.1 because it had an update.



As per your post #202 in the previous thread, I understand your position in not having additional DLL files in the repository and additional maintenance that comes with that. However, updating the loot32.dll would not add an additional file since it's an update. It will cause some maintenance in updating loot.py to use the LOOT API but it would be the same with a change in the BOSS API were BOSS still the current sorting tool.

User avatar
Katie Louise Ingram
 
Posts: 3437
Joined: Sat Nov 18, 2006 2:10 am

Post » Wed May 11, 2016 8:52 pm


When I want to make a multi-mod manager friendly archive, I typically include a FOMod folder in the root of the archive aswell



So that Nexus Mod Manager ( which is an evolution of OBMM and FOMM ), and Mod Organiser ( Which has adopted OBMM scripting aswell ), can both reference the same info.xml and ModuleConfig.xml, I use the FOMod \ folder to store those two files



Typically a lot of OBMM derived installers will also have an Images folder inside the FOMod folder ( or just put images in that folder ), which is convenient for presentation purposes where they store the images needed for the Installer scripting



I do the same for BAIN Wizards - IE the images used by a wizard are placed in FOMod \ Images \, so that all the Scripted installer stuff is located in the same place within the archive ( the exception being the wizard.txt file for scripting BAINs, which needs to reside in the root of the archive )



Then all the mods resources, ESM / ESP / Textures / Meshes .. All go into commonly referenced sub-packages for all scripts ( NMM / MO / WB ) to install files from




Wrye Bash usually does not try to install anything from the FOMod folder, and has no reason to look at the two scripts in there - But as directed by a Wizard.txt will load its images from in there for presentation purposes ..



SelectOne "KILL THE ORCHESTRA - BAIN INSTALLATION WIZARD",\
"|WELCOME","\nCLICK OPTIONS .. blah blah","FOMod\\screenshot.jpg",\
"DESCRIPTION","\nKILL THE ORCHESTRA .. blah blah","FOMod\\screenshot.jpg",\
"VERSION","\nVERSION 3.1 .. blah blah","FOMod\\screenshot.jpg",\
"CREDITS","\nblah blah","FOMod\\screenshot.jpg"
EndSelect

"FOMod\\screenshot.jpg"



https://i.imgur.com/LpGx5jR.jpg




NMM and MO will automatically access the FOMod folder and look there for its scripting ( same as Wrye Bash automatically looks in the root of the archive for its wizard.txt ), and will ignore the wizard.txt file in the root of the archive



So all scripted installers work, and there is no cross installing of another mod managers specific files which are irrelevant to the installation .. Or thats how it usually works.



A small example of a multi-manager friendly installer is my http://www.nexusmods.com/skyrim/mods/52462/?



See its description ( expand the spoiler in the Installation section ) for images of both scripting methods in the relevant installers working



My http://www.nexusmods.com/skyrim/mods/30181/? is also similarly arranged ( but you need to be logged in at Nexus for that one, advlt content )




Edit : I guess, if you were to put the usually accepted file types and folders inside the FOMod folder, then Wrye Bash may treat it as another sub-package - So for example you put an ESP plus a few textures in there as per a simple BAIN, but thats probably to be expected and is down to the mod author to keep it not recognised as a sub-package.



But with just the usual two scripts and a few images, Wrye Bash will not display the FOMod folder as a sub-package : https://i.imgur.com/W57hNrN.jpg

User avatar
Darian Ennels
 
Posts: 3406
Joined: Mon Aug 20, 2007 2:00 pm

Post » Wed May 11, 2016 2:37 pm

utumno, if it helps any, BOSS will likely be using Protocol Buffers in the future to store the master list data which has a Python binding: https://developers.google.com/protocol-buffers/docs/pythontutorial


The benefit to this approach would be that Bash would only need to download the master list binary on demand (so it wouldn't need to be shipped with the program) and use the generated Python file for the message (I can do this from protoc when I get further along, just need to ask :)) instead of having to rely on a utility's API or providing your own list of tags.


I know you're trying to remove dependencies (as am I) but, in this case, the dependency may be useful to help keep work duplication and to help with maintenance and allow a user to select from the settings menu if they want to pull tags from BOSS or LOOT.
User avatar
Maya Maya
 
Posts: 3511
Joined: Wed Jul 05, 2006 7:35 pm

Post » Wed May 11, 2016 7:24 am

@Sharlikran can't follow the discussion on fomods now - but will look into the traceback - just tell me if related to the fomods ?




Very busy now so will look into the rest your posts later. Just to say @deaths_soul (I was thinking of BOSS and you due to the loot binding discussion)



> The benefit to this approach would be that Bash would only need to download the master list binary on demand (so it wouldn't need to be shipped with the program) and use the generated Python file for the message



Yep that would be the ideal situation - parsing the (available or specified, LOOT or BOSS) masterlist or userlist. But that proves a chore - no yaml support in std, extra dependencies, standalone packing those - plus that hay I have to understand how to parse them and what info is where



> I know you're trying to remove dependencies (as am I)



It's getting pretty ugly with the dlls we bundle and used to bundle, but given that the ideal solution above does not quite make it I am looking at ways to hide the ugliness (like git submodules)


> allow a user to select from the settings menu if they want to pull tags from BOSS or LOOT.


The ideal solution would address that - re: maintenance: no, the dlls change their API, let alone have bugs that are difficult to fix as they are outside python, the masterlists too but it's easier to track the changes and there are no bugs


Re: duplication: no - a parser for masterlists (boss, loot...) should come in the box - that it's not there is the root of the issue. We would have avoided all this mess if instead of having those buggy/clumsy dlls in there we had a parser for the masterlists.



User avatar
Ownie Zuliana
 
Posts: 3375
Joined: Thu Jun 15, 2006 4:31 am

Post » Wed May 11, 2016 5:34 pm

I see what you're after and understand the reasons now. Sorry, I just didn't fully understand the situation.


Okay, so what you're looking for is lookup abilities for BOSS itself, right?


So boss list tags would return the tags for those mods and things. Is that what you're after? Would be very beneficial, too, as I'm going for a binary file for the master list that's used by the end users so that they could query the list for various bits of information.


Other than tags, what else would be handy? It's certainly doable and should be done as it won't be a text file that'll be distributed. :)
User avatar
Natalie Taylor
 
Posts: 3301
Joined: Mon Sep 11, 2006 7:54 pm

Post » Wed May 11, 2016 11:04 am

> So boss list tags would return the tags for those mods and things



Complicated problem. Another alternative would be to parse ,me the whole masterlist, dunno yet I have to look at how things are used in the code.



Other info we used to get was load order info - if I can parse the masterlist to get the load order I now have some pretty strong python APIs for setting it - separation of concerns, at last



Also dirty info ? I mean TES4 edit cleaning



In all, a parser for the masterlist that can accept mods and strings (attributes) and returns dictionaries (mod -> tags or dirty info) or a load order (this is not exactly parsing I guess...)

User avatar
Lakyn Ellery
 
Posts: 3447
Joined: Sat Jan 27, 2007 1:02 pm

Post » Wed May 11, 2016 7:42 pm

Can you provide an example of possible output for a single mod and an example of the command you'd run to generate it?


I tend to understand things better with that presentation. :)
User avatar
Jeff Tingler
 
Posts: 3609
Joined: Sat Oct 13, 2007 7:55 pm

Post » Wed May 11, 2016 10:56 pm

FileOperationError: 124 stands for The path in the source or destination or both was invalid. for the move operation



I need a reproducer for this



I did not get the rest of your post - are you referring to two bugs ?



EDIT:


> Can you provide an example of possible output for a single mod and an example of the command you'd run to generate it?



Well no - as I said I have to look at how the code is currently used in Bash - I have a vague idea. As soon as I have a clearer idea will post



Edit the second: I updated my wip branch for debug prints for your bug @Sharlikran: https://github.com/wrye-bash/wrye-bash/archive/utumno-lo.zip



Contains also fixes for edge cases in lo handling



Please everybody use that - will pack a standalone ASAP

User avatar
aisha jamil
 
Posts: 3436
Joined: Sun Jul 02, 2006 11:54 am

Post » Wed May 11, 2016 11:32 am

Great, thanks. No real hurry, I'm juggling a lot of things at the moment so work is going slow but it is indeed going (and will continue to go). :)


Figure we may as well try to get things right the first time instead of having to change things again later on. :P
User avatar
Alex Blacke
 
Posts: 3460
Joined: Sun Feb 18, 2007 10:46 pm

Post » Wed May 11, 2016 7:54 am

307.201605090116



Debug prints for the bug by @Sharlikran here: http://www.gamesas.com/index.php?app=forums&module=forums§ion=findpost&pid=25145760and finalizing load order rewrite. Masters reordering not touched yet



Please hit this hard - priorities are:



- load order for all games - should be final


- BAIN - should be final too apart maybe from the traceback above



@Sharlikran - can you give me more info on this traceback - and also of the rest you talk in your post, did not quite get it - is there another bug there ? Btw - package means archive - you had this on a project (that is unpacked directory) - it may play a role or not. Also



> So then I annealed the lower package #120 and the higher package #107



107 is lower than 120 - those are install orders right ?



In general I do not quite understand...



------------------



Loot etc discussion, masters reordering, fomods (but I need to understand what is the issue) - after BAIN and load order (including fallout 4 support) are addressed. So please everybody adopt 307.201605090116 for everyday use.

User avatar
Czar Kahchi
 
Posts: 3306
Joined: Mon Jul 30, 2007 11:56 am

Post » Wed May 11, 2016 1:47 pm


Traceback (most recent call last):
File "bash\basher\__init__.py", line 959, in OnLeftDown
self._checkUncheckMod(mod_clicked_on_icon)
File "bash\basher\__init__.py", line 1018, in _checkUncheckMod
self.RefreshUI(refreshSaves=True)
File "bash\basher\__init__.py", line 894, in RefreshUI
super(ModList, self).RefreshUI(**kwargs)
File "bash\balt.py", line 1798, in RefreshUI
self.PopulateItems()
File "bash\balt.py", line 1773, in PopulateItems
self.PopulateItem(index)
File "bash\balt.py", line 1722, in PopulateItem
labelTxt = self.labels[col](self, item)
File "bash\basher\__init__.py", line 790, in
u'%08X' % self.data_store[path].cachedCrc()),
File "bash\bosh\__init__.py", line 2565, in cachedCrc
size = path.size
File "bash\bolt.py", line 725, in size
return os.path.getsize(self._s)
File "C:\Python27\lib\genericpath.py", line 49, in getsize
return os.stat(filename).st_size
WindowsError: [Error 2] The system cannot find the file specified: u'C:\\Games\\SteamApps\\common\\Fallout 4\\Data\\SignsOfTheTimesCategorized.esp'

I deleted a file from the Data folder. Because of that it was in the background because I was in the windows explorer. Upon bringing Wrye into the foreground, I got this error. I was on the installers tab at the time.

User avatar
Devils Cheek
 
Posts: 3561
Joined: Sun Aug 13, 2006 10:24 pm

Post » Wed May 11, 2016 10:34 am

You deleted SignsOfTheTimesCategorized.esp from the data folder and then you tried to activate/deactivate it ? Meaning it was still displayed on the mods tab ?

User avatar
Darlene DIllow
 
Posts: 3403
Joined: Fri Oct 26, 2007 5:34 am

Post » Wed May 11, 2016 12:16 pm

I gave all the information I could in post #4. I wrote down everything when it happened so it was fresh in my mind. If I didn't use the correct jargon I'm sorry. I didn't want to say square box and square box rotated 90 degrees. If the traceback doesn't help then skip it I'm sure it will come up with someone who can explain it better.



Can't show you a screen shot now because things have changed since then. It's self explanatory. On the Installers tab there is a column named Packadge and a colum named Order. 107 and 120 are the numbers in the order column. If the traceback doesn't help then skip it I'm sure it will come up with someone who can explain it better.



Explained it already and gave screen shots. with file names. If the traceback doesn't help then skip it I'm sure it will come up with someone who can explain it better.


Sorry if the bug reports and tracebacks aren't useful. With the exception of post #15 I will refrain from reporting anything in the future so I don't cause any confusion. Thanks again for your work.

User avatar
Miss K
 
Posts: 3458
Joined: Sat Jan 20, 2007 2:33 pm

Post » Wed May 11, 2016 12:32 pm

Updated my post, sorry for the confusion and poorly reported errors. I also have an issue on the mods tab where when the master file is unchecked the child plugins are not showing red boxes but I doubt I could explain it correctly. Keep up the good work and I'm looking forward to the next version.

User avatar
Life long Observer
 
Posts: 3476
Joined: Fri Sep 08, 2006 7:07 pm

Post » Wed May 11, 2016 4:36 pm

I need the errors but yes a bit more info is appreciated - so you deleted a file - an esp ? texture ?

> Upon bringing Wrye into the foreground, I got this error. I was on the installers tab at the time.

The traceback says
File "bash\basher\__init__.py", line 959, in OnLeftDown
self._checkUncheckMod(mod_clicked_on_icon)
File "bash\basher\__init__.py", line 1018, in _checkUncheckMod
...

This was produced when you clicked with the mouse on a mod icon in the mods tab. Keep an eye open for this

> when the master file is unchecked the child plugins are not showing red boxes

That's normal - the child plugins are checked ?


EDIT: is this part of your post related to the traceback in that post ?
User avatar
Czar Kahchi
 
Posts: 3306
Joined: Mon Jul 30, 2007 11:56 am

Post » Wed May 11, 2016 7:43 am

I'm giving it but it's not what you need I guess. Sorry, don't mean to not be thorough.



Well you asked me to remember something I had already forgotten so I guessed. I know when I deleted the file in the Data folder I brought wrye to the foreground. Well you click on it and then wait for the long pause that takes place. Then you can use it. I may have been on the installers tab and wanted to see if the mods tab was updated and switched from the installers tab to the mods tab. I usually don't take videos of what I'm doing so as I say, sorry if the information isn't sufficient. Sorry about that.



Yep. The child plugins are all checked and all green. If I exit Wrye and run it again then they are red and I get a report saying why. However, if I uninstall the master and it's not present in the load order, wrye doesn't do anything. Even when I go back to the Mods tab.

User avatar
amhain
 
Posts: 3506
Joined: Sun Jan 07, 2007 12:31 pm

Post » Wed May 11, 2016 6:45 am

> I usually don't take videos of what I'm doing so as I say

Well if any of you can afford the CPU it's a good idea

> when the master file is unchecked the child plugins are not showing red boxes

If you uncheck a master file via Bash it unchecks the plugins - how come it's unchecked ? Manually editing plugins.txt ?

EDIT:

> and I get a report saying why

What report ? On building the patch ?
User avatar
NIloufar Emporio
 
Posts: 3366
Joined: Tue Dec 19, 2006 6:18 pm

Post » Wed May 11, 2016 8:18 am


+1 Used the Installer to install Standalone for Skyrim



Will test over coming days but so far its looking good for throwing BAINs around. Install / Uninstall / Reorder installers and Anneal ( plus combinations of those with a few large complex BAINs involved in the mix .. ) - So far so good :goodjob:

User avatar
evelina c
 
Posts: 3377
Joined: Tue Dec 19, 2006 4:28 pm

Post » Wed May 11, 2016 4:43 pm

Thanks @alt3rn1ty :)



Keep hitting it - maybe you get a reproducer for the first traceback by Sharlikran - Install missing on a project after refreshing - dunno

Once the dust settles please sum me up the fomod issue - what I know about fomods is in the readme - we ignore the folder but may fail to do so under some configuration ?

User avatar
Amber Ably
 
Posts: 3372
Joined: Wed Aug 29, 2007 4:39 pm

Post » Wed May 11, 2016 12:51 pm

I dont understand Sharlikrans fomod problem either, I just explained what I would normally expect to happen for his comparison

User avatar
Je suis
 
Posts: 3350
Joined: Sat Mar 17, 2007 7:44 pm

Post » Wed May 11, 2016 3:59 pm

Hmm - alright - I think I star getting the problem there is a bug with the fomods and the traceback can be related - more on this tommorowishzzzz

User avatar
TWITTER.COM
 
Posts: 3355
Joined: Tue Nov 27, 2007 3:15 pm

Next

Return to IV - Oblivion