-
Notifications
You must be signed in to change notification settings - Fork 79
/
Wrye Bash Advanced Readme.html
9944 lines (9795 loc) · 502 KB
/
Wrye Bash Advanced Readme.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link href="assets/bash_main.css" rel="stylesheet" type="text/css">
<link href="assets/bash_advanced.css" rel="stylesheet" type="text/css">
<link href="assets/bash.webmanifest" rel="manifest" type="application/manifest+json">
<link href="images/webicon/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180" type="image/png">
<link href="images/webicon/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png">
<link href="images/webicon/favicon-194x194.png" rel="icon" sizes="194x194" type="image/png">
<link href="images/webicon/android-chrome-192x192.png" rel="icon" sizes="192x192" type="image/png">
<link href="images/webicon/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png">
<link color="#cc0000" href="images/webicon/safari-pinned-tab.svg" rel="mask-icon" type="image/svg+xml">
<link href="images/webicon/favicon.ico" rel="shortcut icon" type="image/x-icon">
<meta content="Wrye Bash Docs" name="apple-mobile-web-app-title">
<meta content="Wrye Bash Docs" name="application-name">
<meta content="#ffc40d" name="msapplication-TileColor">
<meta content="images/webicon/mstile-144x144.png" name="msapplication-TileImage">
<meta content="Wrye Bash Documentation" name="msapplication-tooltip">
<meta content="assets/browserconfig.xml" name="msapplication-config">
<meta content="#ffffcc" name="theme-color">
<script src="assets/bashinit.js"></script>
<script src="assets/bashfunc.js" async defer></script>
<title>Wrye Bash Advanced Readme</title>
</head>
<body>
<div id="header"><h1>Wrye Bash Advanced Readme</h1> <a id="jstoggle" href="javascript:void(0)">(Javascript Toggle)</a></div>
<div id="box">
<!-- Scrolling content begin -->
<div id="fade"></div>
<h2 id="contents">Contents</h2>
<div id="navmenu" class="navboxrhrz">
<div id="navtab">M<br>E<br>N<br>U</div>
<div class="navcontbar">
<div class="navhead">
<a href="javascript:void(0)" class="clsx" id="closebutton">←</a>
<h2>Advanced Readme</h2>
</div>
<div class="navcontent">
<ol class="contentsmenu1 menu">
<li class="list"><a href="#intro">Introduction</a>
<ol class="items">
<li><a href="#intro-title">Title Bar Info</a>
</ol>
<li class="list"><a href="#install">Advanced Installation</a>
<ol class="items">
<li><a href="#install-alternate">Alternative Install Locations</a>
<li><a href="#install-components">Python Components</a>
</ol>
<li class="list"><a href="#bain">Installers Tab</a>
<ol class="items">
<li><a href="#bain-ui">The User Interface In Detail</a>
<li><a href="#bain-refresh">BAIN Refresh</a>
<li><a href="#bain-skipped">Skipped Files</a>
<li><a href="#bain-plugin-filter">The Plugin Filter</a></li>
<li><a href="#bain-data-dir-skipped">Skipped Data subdirectories and uninstall quirks</a>
<li><a href="#bain-se">Script Extender Plugin Installation</a>
<li><a href="#bain-omod">OMOD Conversion Data</a>
<li><a href="#bain-bcf">BAIN Conversion Files</a>
<li><a href="#bain-monitor">Monitor External Installation</a>
<li><a href="#bain-commands">Context Menu Commands</a>
</ol>
<li class="list"><a href="#mods">Mods Tab</a>
<ol class="items">
<li><a href="#mods-details">The Plugin Details Panel</a>
<li><a href="#mod-masters-symbols">Color scheme for Plugin Masters (MI & Current LO)</a>
<li><a href="#mods-csv">CSV Files</a>
<li><a href="#mods-commands">Context Menu Commands</a>
</ol>
<li class="list"><a href="#patch">Advanced Bashed Patch</a>
<ol class="items">
<li><a href="#patch-view">Viewing & Editing The Bashed Patch</a>
<li><a href="#patch-tags">Bash Tags</a>
<li><a href="#patch-filter">Merge Filtering</a>
<li><a href="#patch-iim">Item Interchange Mode</a>
<li><a href="#patch-tweaks">Tweak Options In Detail</a>
<li><a href="#patch-csv">Default CSV Files</a>
<li><a href="#patch-lists">Leveled Lists</a>
</ol>
</ol>
<ol start="6" class="contentsmenu2 menu">
<li class="list"><a href="#saves">Saves Tab</a>
<ol class="items">
<li><a href="#saves-overview">Overview</a>
<li><a href="#saves-symbols">Color scheme for Save Game Files</a>
<li><a href="#saves-masters-symbols">Color scheme for Save Game Masters (MI & Current LO)</a>
<li><a href="#saves-profiles">Save Profiles</a>
<li><a href="#saves-face">Face Import</a>
<li><a href="#saves-commands">Context Menu Commands</a>
</ol>
<li class="list"><a href="#screenshots">Screenshots Tab</a>
<ol class="items">
<li><a href="#screenshots-overview">Overview</a>
<li><a href="#screenshots-alt-path">Change screenshots directory (Oblivion)</a>
<li><a href="#screenshots-commands">Context Menu Commands</a>
</ol>
<li class="list"><a href="#launchers">Advanced Launchers</a>
<ol class="items">
<li><a href="#launchers-hide">Hiding Launchers</a>
<li><a href="#launchers-custom">Custom Launchers</a>
</ol>
<li class="list"><a href="#settings">Settings</a>
<ol class="items">
<li><a href="#settings-appearance-colors">Appearance: Colors</a></li>
<li><a href="#settings-appearance-language">Appearance: Language</a></li>
<li><a href="#settings-appearance-status-bar">Appearance: Status Bar</a></li>
<li><a href="#settings-backups">Backups</a></li>
<li><a href="#settings-confirmations">Confirmations</a></li>
<li><a href="#settings-general">General</a></li>
<li><a href="#settings-trusted-binaries">Trusted Binaries</a></li>
</ol>
</li>
<li class="list"><a href="#tools">Miscellaneous Tools</a>
<ol class="items">
<li><a href="#tools-docs">Doc Browser</a>
<li><a href="#tools-checker">Plugin Checker</a>
<li><a href="#tools-swapping">Oblivion.esm Swapping</a>
<li><a href="#tools-shortcuts">Keyboard Shortcuts</a>
<li><a href="#tools-arguments">Command Line Arguments</a>
</ol>
<li class="list"><a href="#international">Internationalisation</a>
<ol class="items">
<li><a href="#international-overview">Overview</a>
<li><a href="#international-format">Translator File Format</a>
</ol>
</ol>
</div>
</div>
</div>
<h2 id="intro">Introduction <a class="back2top" href="#contents">Back to top</a></h2>
<p>A companion to the <a href="Wrye%20Bash%20General%20Readme.html">General Readme</a>, this document details those features
that were omitted from the aforementioned readme. They are often more specialized, advanced or complicated, and
many are geared more towards mod authors than mod users. This readme is also more technical and goes into more depth on
how Wrye Bash functions. It assumes the reader has previously read the General Readme.
<p>You can toggle the visibility of the tabs in Wrye Bash's main tab bar by right-clicking the tab bar and checking or unchecking the options in the context menu displayed.
<h3 id="intro-title">Title Bar Info <a class="back2top" href="#contents">Back to top</a></h3>
<p>As a quick note that doesn't really belong anywhere else, Wrye Bash's title bar contains some useful information. The title is formatted as:
<p><code>[Application Name] [Bash Version] [Install Type] [Game Modifier]: [Save Profile] [Version Indicator]</code>
<p>The square bracketed information is:
<ul>
<li><code>[Application Name]</code>: <q>Wrye Bash</q> if <a href="#settings-use-alt-name">Use Alternate Wrye Bash Name</a> is disabled, otherwise this will be a name based on the game Wrye Bash is managing (e.g. <q>Wrye Smash</q> for Skyrim).</li>
<li><code>[Bash Version]</code>: This is the version number for the version of Wrye Bash running. Useful when troubleshooting.
<li><code>[Install Type]</code>: If the Standalone version is running, it will read <q>(Standalone)</q>. If the Python version is running, this part is omitted. See the <a href="#install">Installation</a> section for more information.</li>
<li><code>[Game Modifier]</code>: <q>for [Game]</q>, where [Game] is the name of the managed game, if <a href="#settings-use-alt-name">Use Alternate Wrye Bash Name</a> is disabled. Otherwise, this is not displayed.</li>
<li><code>[Save Profile]</code>: This is the name of the <a href="Wrye%20Bash%20Advanced%20Readme.html#saves-profiles">save profile</a> Wrye Bash is currently using. By default it is <q>Default</q>.
<li><code>[Version Indicator]</code>: This is only displayed when Wrye Bash is running for Oblivion. It indicates the version of Oblivion.esm currently being used. This is related to the <a href="Wrye%20Bash%20Advanced%20Readme.html#tools-swapping">Oblivion.esm Swapping</a> feature.
</ul>
<h2 id="install">Advanced Installation <a class="back2top" href="#contents">Back to top</a></h2>
<h3 id="install-alternate">Alternative Install Locations <a class="back2top" href="#contents">Back to top</a></h3>
<p>Wrye Bash can be installed in any folder, and actually if you do manage multiple games the preferred way of installing Bash is to have a
single installation and redirect Bash via the command line and/or ini. But in this case you must tell Bash where the game folder is.
Bash checks (in this order) the <code>-o</code> argument, the sOblivionPath ini option and the position of the Mopy folder (namely
checks if Mopy's parent folder contains a supported game exe). The first of those three methods that yields a path to a supported game
exe will "win" and this game will be used. But in case those options are not set or a supported game exe (NB: only exe name is checked)
is not found using them, Bash reads the windows registry to find supported games. If no games are found in the registry Bash will notify
you and exit. If one game is found then Bash will use that. If however more than one games are found Bash will prompt you to choose
amongst those games.
<p>So if you have installed Bash outside of a game folder (recommended for multi-game installs), and you don't want to be prompted (or your
games do not figure in the registry) you have to either launch Wrye Bash with the -o argument or set the bash.ini <q>sOblivionPath</q>
setting.
<p>To set the OblivionPath bash.ini option:
<ol>
<li>Open <code>bash_default.ini</code> in the <code>Mopy</code> folder and save it as <code>bash.ini</code>.
<li>In the new bash.ini, enter the full path of your game's installation folder (the one that contains the game's executable) for the <q>sOblivionPath</q> setting.
<li>Save the edited bash.ini.
</ol>
<p>Alternatively, you can launch Wrye Bash with the -o argument, quoting the path as the argument's parameter. Note that backslashes must be doubled as Python treats a single backslash as an escape character. For example, <code>"Wrye Bash Launcher.pyw" -o "C:\\Games\\Oblivion\\"</code> if you are running Wrye Bash for Oblivion.
<p>For more settings (such as changing the Wrye Bash Installers Path), please read the Bash_Default.ini.
<h3 id="install-components">Python Components <a class="back2top" href="#contents">Back to top</a></h3>
<p>If you are installing the Python version of Wrye Bash and wish to install the Python dependencies separately, the following must be installed.</p>
<p class="emphasis">Note that the 64-bit versions are <em>required</em> - we no longer support 32-bit operating systems.</p>
<p><a href="https://www.python.org">Python 3.10</a>: Versions prior to this one or newer than this one may work with Wrye Bash,
but have not been tested. Updating to the latest 3.10 release is recommended for bug and security fixes.</p>
<p>Installation is easiest by just using pip, which comes with Python (see above). Simply run <code>path/to/python.exe -m pip install -r requirements.txt</code>
(obviously replacing <code>path/to/python.exe</code> with the actual path to your python.exe).</p>
<p>If you want to do it manually, the rest of this section will list out each
dependency and what it's used for. Using the latest version of these is
recommended. If that one doesn't work, use the newest version that does
work.</p>
<p>Required libaries:</p>
<ul>
<li><a href="https://pypi.org/project/chardet">chardet</a>: Used to detect
character encodings for reading and writing encoded Unicode
strings.</li>
<li><a href="https://pypi.org/project/lz4">python-lz4</a>: Used to read and
write LZ4 data in saves and BSAs.</li>
<li><a href="https://pypi.org/project/pywin32">pywin32</a>: Used to
interact with Windows in various ways.</li>
<li><a href="https://pypi.org/project/PyYAML">PyYAML</a>: Used to parse
YAML data, e.g. LOOT masterlists.</li>
<li><a href="https://pypi.org/project/wxPython">wxPython</a>: Used for
building Wrye Bash's GUI.</li>
</ul>
<p>Optional libaries:</p>
<ul>
<li><a href="https://pypi.org/project/PyMuPDF">PyMuPDF</a>: The doc browser
will be able to display PDFs if this is installed.</li>
</ul>
<h2 id="bain">Installers Tab <a class="back2top" href="#contents">Back to top</a></h2>
<h3 id="bain-ui">The User Interface In Detail <a class="back2top" href="#contents">Back to top</a></h3>
<p>The Installers tab is split into three main sections: on the left is the Package List, and the right is split between the Information Tabs at the top and the Comments field at the bottom. The Information Tabs and Comments sections display information specific to the currently selected package. Much of the contents of the Information Tabs depends on the install status and order of the package. The information tabs are detailed in the table below.
<table>
<thead>
<tr><th colspan="2">Information Tabs
<tr><th>Tab<th>Description
<tbody>
<tr><td>General<td>Shows summary info and the files to be installed, as determined by sub-package, plugin, voice filtering, etc.
<tr><td>Matched<td>Shows files which are identical to current Data directory files.
<tr><td>Missing<td>Files which are missing from the Data directory.
<tr><td>Mismatched<td>Files which are present in the data directory, but which aren't identical to the selected package's version of those files.
<tr><td>Conflicts<td>Shows which other packages will conflict the current package and for what files. Note that if a given file is mismatched, but the mismatch isn't due to other packages, then it won't appear. This report can be modified to show inactive conflicts and lower order conflicts by enabling the <a href="#bainShowInactiveConflicts">Show Inactive Conflicts</a> and <a href="#bainShowLowerConflicts">Show Lower Conflicts</a> options respectively.
<tr><td>Underidden<td>Shows packages which should be overridden, but are not, due to install order errors. This can be corrected by running <a href="#bainAnneal">Anneal</a> or <a href="#bainAnnealAll">Anneal All</a>.
<tr><td>Dirty<td>Shows files which the selected package previously installed, but which now should be removed or altered due to a reconfiguration of the package. Dirty files can be cleared by running <a href="#bainAnneal">Anneal</a> or <a href="#bainAnnealAll">Anneal All</a>.
<tr><td>Skipped<td>Shows which files in the selected package were <a href="#bain-skipped">skipped</a> by Bain.
</table>
<p>The Comments field is provided as an area in which notes may be kept on packages. It is useful for keeping track of what packages do, what your favourite install options are, etc.
<h3 id="bain-refresh">BAIN Refresh <a class="back2top" href="#contents">Back to top</a></h3>
<p>To perform its magicks BAIN needs to know what's inside two directories: the game Data/ directory and its subdirectories and the Bash Installers folder (where the packages are). The Data
directory scanning is done once per run of Wrye Bash, when the Installers tab is first opened, because walking this potentially huge directory and checking sizes and modification times
does take a while. The Bash Installers folder however will be scanned whenever the installers tab regains focus after losing it (ie. you select another program's window, then switch back
to Wrye Bash, or you switch to another tab then back to installers tab). This automatic scanning just checks modification times and sizes of installers inside Bash Installers folder to
decide if any package changed, and should usually be very fast (although noticeable). There is a catch however: this check is almost instantaneous for packages (archives) but for biggish
projects takes a while as Bash needs to scan modification times and sizes for <em>all</em> files inside the project. To make this (automatic) scan faster two options are provided for
projects: <a href="#bainDontRefresh">Don't Refresh</a> (on the project's context menu) and <a href="#bainAutoRefreshProjects">Auto-Refresh Projects</a> (on the global menu). If a project
is affected by these options Bash will skip over it when scanning Bash Installers directory and changes inside the project's dir have to be detected manually. However the initial refresh
(on booting BAIN) will ignore those skip flags and will scan all project directories for changes (comparing their sizes and modification times with the ones it loads from Installers.dat).
<p>However, changes in files in the Data directory will have to be manually detected after initial refresh, as in this scenario:
<ol>
<li>Install a mod from some package.
<li>Go to the installers tab. Note the package is marked green.
<li>Go back to the mods tab and edit the mod using xEdit or the CK/CS/etc.
<li>Return to the installers tab. The package is still marked green instead of being marked as out of sync with the data.
</ol>
<p>This is because, as already mentioned, the refresh of the game <em>Data</em> directory is performed once on boot, so modifying/deleting/adding files in the game directory will not be detected
afterwards, except in some few scenarios - notably, deleting a plugin from inside Bash will notify BAIN (add more actions is in the TODOs).
<p>BAIN provides several menu items for manually refreshing for the scenarios above (and others). What you most likely need is <a href="#bainQuickRefresh">Quick Refresh</a>. See also
<a href="#bainFullRefresh">Full Refresh</a>, <a href="#bainRefreshData">Refresh Data</a> and <a href="#bainRefresh">Refresh</a>.
<p>Technical: This situation is a limitation of our refresh model which is basically polling the directories for changes. We should switch to an event based refresh but the code is not yet
ready (see <a href="https://github.com/wrye-bash/wrye-bash/issues/265">relevant issue</a>).
<h3 id="bain-skipped">Skipped Files <a class="back2top" href="#contents">Back to top</a></h3>
<p>BAIN skips the installation of some files and directories. The types of files skipped are:
<ul>
<li>Silent skips. These are <em>not</em> listed on the <q>Skipped</q> panel on the right and are:
<ul>
<li><code>thumbs.db</code> and <code>desktop.ini</code> files
<li>the omod conversion directory (<code>omod conversion data</code>, <code>fomod</code>) if on the top level of package or subpackage
<li>the <code>wizard images</code> directory (again if on the top level of package or subpackage)
<li>Developer files. Any file or directory that begins with <code>'--'</code> and is at the top level of a package or a subpackage will be silently skipped. This is so that mod
authors can include files related to a mod that are not required for it to work (eg. screenshots) in packages.
<li>Bash will also skip voices for plugins that are not installed from complex installers
<li>Specified skips. There are a few options in BAIN to skip the installation of certain file types, namely the ones on the <a href="#bainGlobalSkips">Global Skips</a> submenu for
all installers and <a href="#bainSkipVoices">Skip Voices</a> (on a per installer basis). If any such options are enabled, the file type(s) in question will be <em>silently</em>
skipped.
</ul>
<li>Non-standard directories. Standard directories include all the game's default directories (including those only found in BSAs by default) - see
<a href="Wrye%20Bash%20General%20Readme.html#bain-structure">BAIN-Compatible installer layout</a> for a detailed list per game. Files skipped because of this will be
listed in the <q>Skipped</q> panel on the right on the <em>== Skipped (Dir)</em> section. Installation of non-standard directories may be forced by using the <a
href="#bainHasExtraDirectories">Has Extra Directories</a> option. Even if Has Extra Directories option is checked, directories that are silently skipped will still be skipped.
<strong>For a complex package,</strong> any top level files (with the exception of files that contain "readme" and variations in their name) will be also considered as belonging to a skipped directory
and will be listed in the '== Skipped (Dir)' section. Top level means at the subpackages level, not inside a subpackage.
<li>Archives & executables. Executable files, apart from Script Extender plugins if the <a href="#bainSkipSEPlugins">Skip **SE Plugins</a> option is disabled, and archives in
packages will be skipped. Files skipped because of this will be listed in the <q>Skipped</q> panel on the right on the <em>== Skipped (Extension)</em> section. The complete list of
extensions skipped is:
<code>.001, .7z, .7z.001, .ace, .bz2, .ckm, .db, .exe, .fomod, .gz, .lzma, .manifest, .omod, .py, .pyc, .rar, .tar, .tb2, .tgz, .zip</code>
This includes BCFs (they have a .7z extension) - still BAIN will detect those.
<li>Plugin files that are not in top level of the package/subpackage. It makes no sense to have those files in a subfolder, so those are skipped.
</ul>
<h3 id="bain-plugin-filter">The Plugin Filter <a class="back2top" href="#contents">Back to top</a></h3>
<p>The <em>Plugin Filter</em> can be used to select which of the installer's plugins you actually want to install.
It can also be used to install plugins using a different name, see the documentation for the
<a href="#bain-rename-plugin">Rename... option</a> for more information about this.</p>
<p>Double-clicking on a plugin or using the <a href="#bain-jump-to-mod">Jump to Mod</a> option on it will take
you to that plugin's position in the Mods tab.</p>
<p>There are several more options available in the right click context menu, see the
<a href="#bain-plugin-filter-commands">Plugin Filter Context Menu</a> documentation for more information.</p>
<h3 id="bain-data-dir-skipped">Skipped Data subdirectories and uninstall quirks <a class="back2top" href="#contents">Back to top</a></h3>
<p>When scanning the contents of the Data folder BAIN will skip some of its subdirectories either by default or based on <a href="#bainGlobalSkips">Global Skips</a> in the installer
tab. The directories skipped are:
<table>
<thead>
<tr>
<th>Skipped Data subdirectories</th>
<th colspan="2">Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Bash</td>
<td colspan="2"><code>Data/Bash</code> directory that may contain
Bash related data</td>
</tr>
<tr>
<td>--</td>
<td colspan="2">If you create a <code>Data/--</code> directory it
will be ignored by Bash - dump your cruft there</td>
</tr>
<tr>
<td>docs</td>
<td colspan="2">If <a href="#bainSkipDocs">Skip Docs</a>
<strong>and</strong> <a href="#bainSkipImages">Skip Images</a>
are <strong>both</strong> checked - see those links for more
information</td>
</tr>
<tr>
<td>screenshots, screens, ss</td>
<td colspan="2">If <a href="#bainSkipScreenshots">Skip Screenshots</a>
is checked</td>
</tr>
<tr class="tabttl">
<th colspan="2">Skipped file extensions</th>
<th>Notes</th>
</tr>
<tr>
<td colspan="2">.001, .7z, .7z.001, .ace, .bz2, .ckm, .db, .exe,
.fomod, .gz, .lzma, .manifest, .omod, .py, .pyc, .rar, .tar,
.tb2, .tgz, .zip</td>
<td>N/A</td>
</tr>
<tr>
<td colspan="2">.pdb</td>
<td>If <a href="#bainSkipPDBs">Skip PDB Files</a> is checked.</td>
</tr>
<tr class="tabttl">
<th colspan="3">Per game skipped Data subdirectories</th>
</tr>
<tr class="tabttl">
<th>Skipped Data subdirectories</th>
<th>Games</th>
<th>Notes</th>
</tr>
<tr>
<td>tes4edit backups, tes4edit cache, bgsee, conscribe logs</td>
<td>Oblivion & Nehrim: At Fate's Edge</td>
<td>N/A</td>
</tr>
<tr>
<td>textures\landscapelod\generated</td>
<td>Oblivion & Nehrim: At Fate's Edge</td>
<td>If <a href="#bainSkipLODTextures">Skip LOD Textures</a> is
checked.<br>
<br>
Does not skip LOD normals, see below.</td>
</tr>
<tr>
<td>textures\landscapelod\generated\*_fn.dds</td>
<td>Oblivion & Nehrim: At Fate's Edge</td>
<td>If <a href="#bainSkipLODNormals">Skip LOD Normals</a> is
checked.</td>
</tr>
<tr>
<td>obse</td>
<td>Oblivion & Nehrim: At Fate's Edge</td>
<td>If <a href="#bainSkipSEPlugins">Skip OBSE Plugins</a> is
checked.</td>
</tr>
<tr>
<td>fo3edit backups, fo3edit cache</td>
<td>Fallout 3</td>
<td>N/A</td>
</tr>
<tr>
<td>fose</td>
<td>Fallout 3</td>
<td>If <a href="#bainSkipSEPlugins">Skip FOSE Plugins</a> is
checked.</td>
</tr>
<tr>
<td>fnvedit backups, fnvedit cache</td>
<td>Fallout: New Vegas</td>
<td>N/A</td>
</tr>
<tr>
<td>nvse</td>
<td>Fallout: New Vegas</td>
<td>If <a href="#bainSkipSEPlugins">Skip NVSE Plugins</a> is
checked.</td>
</tr>
<tr>
<td>textures\landscape\lod</td>
<td>Fallout 3 & Fallout: New Vegas</td>
<td>If <a href="#bainSkipLODTextures">Skip LOD Textures</a> is
checked.<br>
<br>
Does not skip LOD normals, see below.</td>
</tr>
<tr>
<td>textures\landscape\lod\*\normals\*.dds</td>
<td>Fallout 3 & Fallout: New Vegas</td>
<td>If <a href="#bainSkipLODNormals">Skip LOD Normals</a> is
checked.</td>
</tr>
<tr>
<td>distantlod</td>
<td>Oblivion, Fallout 3 & Fallout: New Vegas</td>
<td colspan="2">If <a href="#bainSkipDistantLOD">Skip DistantLOD</a>
is checked.</td>
</tr>
<tr>
<td>meshes\landscape\lod</td>
<td>Oblivion, Fallout 3 & Fallout: New Vegas</td>
<td colspan="2">If <a href="#bainSkipLODMeshes">Skip LOD Meshes</a>
is checked.</td>
</tr>
<tr>
<td>tes5edit backups, tes5edit cache</td>
<td>Skyrim</td>
<td>N/A</td>
</tr>
<tr>
<td>enderaledit backups, enderaledit cache</td>
<td>Enderal: Forgotten Stories</td>
<td>N/A</td>
</tr>
<tr>
<td>asi, skse</td>
<td>Skyrim & Enderal: Forgotten Stories</td>
<td>If <a href="#bainSkipSEPlugins">Skip SKSE/Script Dragon Plugins</a>
is checked.</td>
</tr>
<tr>
<td>fo4edit backups, fo4edit cache</td>
<td>Fallout 4</td>
<td>N/A</td>
</tr>
<tr>
<td>f4se</td>
<td>Fallout 4</td>
<td>If <a href="#bainSkipSEPlugins">Skip F4SE Plugins</a> is
checked.</td>
</tr>
<tr>
<td>sseedit backups, sseedit cache</td>
<td>Skyrim: Special Edition</td>
<td>N/A</td>
</tr>
<tr>
<td>skse</td>
<td>Skyrim: Special Edition</td>
<td>If <a href="#bainSkipSEPlugins">Skip SKSE64 Plugins</a> is
checked.</td>
</tr>
<tr>
<td>meshes\lod</td>
<td>Skyrim, Enderal: Forgotten Stories, Skyrim: Special
Edition & Fallout 4</td>
<td>If <a href="#bainSkipLODMeshes">Skip LOD Meshes</a> is
checked.</td>
</tr>
<tr>
<td>textures\lod</td>
<td>Skyrim, Enderal: Forgotten Stories, Skyrim: Special
Edition & Fallout 4</td>
<td>If <a href="#bainSkipLODTextures">Skip LOD Textures</a> is
checked.<br>
<br>
Does not skip LOD normals, see below.</td>
</tr>
<tr>
<td>textures\lod\*_n.dds</td>
<td>Skyrim, Enderal: Forgotten Stories, Skyrim: Special
Edition & Fallout 4</td>
<td>If <a href="#bainSkipLODNormals">Skip LOD Normals</a> is
checked.</td>
</tr>
<tr class="tabttl">
<th colspan="3">Per game skipped file extensions</th>
</tr>
<tr class="tabttl">
<th>Skipped file extension</th>
<th>Games</th>
<th>Notes</th>
</tr>
<tr>
<td>.bsl</td>
<td>Skyrim, Enderal: Forgotten Stories & Skyrim: Special
Edition</td>
<td>If <a href="#bainSkipBSLFiles">Skip BSL Files</a> is
checked.</td>
</tr>
<tr>
<td>.psc</td>
<td>Skyrim, Enderal: Forgotten Stories, Skyrim: Special Edition
& Fallout 4</td>
<td>If <a href="#bainSkipScriptSources">Skip Script Sources</a> is
checked.</td>
</tr>
</tbody>
</table>
<p>Skipping of Data subdirectories has some implications vis-à-vis uninstalling those skipped files. So say you turn Skip DistantLOD on, all packages
that have installed files in Data/distantlod will show as dirty (as expected). You should at this point hit
<a href="#bainAnnealAll">Anneal All</a>. If you don't, then restart Bash, the files will no more show as dirty (remember Bash scans the data dir on
booting, and will now boot with Skip DistantLOD on, so will simply loose track of any files in the distantlod folder). If you want to uninstall
those files after a restart you should turn <a href="#bainOverrideSkips">Override Skips</a> on for the package, so that BAIN will re-detect the
skipped files for this package and be able to uninstall them.
<h3 id="bain-se">Script Extender Plugin Installation <a class="back2top" href="#contents">Back to top</a></h3>
<p>Script Extender (e.g. OBSE, SKSE, F4SE) plugins (.dll, .dlx extensions) may be installed through BAIN if the following conditions are met:
<ul>
<li>The package (or subpackage in the case of a Complex Bain) contains the **SE plugin file inside <code>Data\[**SE]\Plugins\</code> (e.g. OBSE for
Oblivion) sub-folders.</li>
<li>The <a href="#bainSkipSEPlugins">Skip **SE Plugins</a> option found in the Installers tab column header context menu is disabled.</li>
</ul>
<p>When attempting to install a specific Script Extender plugin for the first time, Wrye Bash will display a warning dialogue and ask you to confirm or deny the plugin's installation. Thereafter you can uninstall and install the plugin as you like without seeing the warning. These additional requirements are due to the significant (though currently theoretical) dangers of installing executable files.
<p>The list of allowed and disallowed Script Extender plugins can be imported and exported using the <a href="#settingsImportList">Import list of allowed/disallowed **SE plugin DLLs</a> and <a href="#settingsExportList">Export list of allowed/disallowed **SE plugin DLLs</a> options in Wrye Bash's <a href="#settings">Settings</a> menu.
<h3 id="bain-omod">OMOD Conversion Data <a class="back2top" href="#contents">Back to top</a></h3>
<p>If a mod author is building a mod that supports BAIN, manual and OMOD installs, they can use the <a href="#bainOmodInfo">Omod Info...</a> option in the package context menu to create or update the OMOD config file.
<p>If a mod author wishes to include a screenshot for use by the OMOD, they simply need to copy the screenshot saved as a JPEG to the OMOD Conversion Data folder and rename it to <q>screenshot</q> with no file extension.
<p>An OMOD installation script may also be created by creating a text file named <q>script.txt</q> and writing the script in any text editor. Testing is still best done in OBMM though.
<p>The OMOD config file is the only true requirement for an OMOD to be created from OMOD Conversion Data. The screenshot and installation script can be used to enhance an OMOD. Note that the <q>info.txt</q> file that OMODs create when exporting Conversion Data in OBMM is unnecessary, and is provided for purely informational purposes.
<h3 id="bain-bcf">BAIN Conversion Files <a class="back2top" href="#contents">Back to top</a></h3>
<p><abbr title="BAIN Conversion Files">BCFs</abbr> are effectively automated archive converters, converting an existing archive or several archives into a new layout. They can be used to make BAIN-incompatible archives compatible, or make compatible archives easier to install. As they don't contain any files that are found in the existing archive(s), the only copyright/permissions that apply are those that the BCF creator stipulates, which generally makes distribution easier. BCFs are also usually much smaller, only containing new files that it adds (commonly <q>package.txt</q> and ini file tweaks) and a <q>BCF.dat</q> that tells Wrye Bash how to reorganise the archive(s).
<p>To create a BCF:
<ol>
<li>Add all of the source archives to BAIN.
<li>Create a new project with the contents of the source archives, and rearrange the files as you see fit.
<li>Right-click the project and select <a href="#bainPackToArchive">Pack To Archive...</a>.
<li>Name the new archive, and choose whether to use solid compression or not. Solid compression results in smaller file sizes, but also reduces performance.
<li>Set any options on the new archive package that you wish to be set whenever the BCF is applied (such as default sub-packages or <q>Skip...</q> options).
<li>Select all the source archives in the package list, then right-click them and choose <a href="#bainConversion">Conversions->Create</a>. Select the archive that you just created, and name the BCF.
<li>Look over the result log to make sure it looks OK. If it looks wrong, try again, you may have gotten the sources/target wrong. If it looks right, you can find the new BCF in <code>[Game] Mods\Bash Installers\Bain Converters</code>. It is recommended that you copy/paste the result log into your readme for your BCF.
</ol>
<p>Some points of interest regarding BCFs:
<ul>
<li>BCFs must end in either <code>-BCF.7z</code> or <code>-BCF-*.7z</code> (where the * is a wildcard matching any character string).
<li>The converted archive may use 7-zip (.7z) or Zip (.zip) compression.
<li>BCFs support an arbitrary number and level of archives embedded within an archive.
<li>BCFs store the configuration settings of the original converted archive used when creating the BCF, allowing authors to pre-select options (see instructions above).
<li>BCFs found to be duplicates will be moved to <code>[Game] Mods\Bash Installers\Bain Converters\--Duplicates</code>.
<li>BCFs use data CRCs to verify the integrity of source archives. These use the contents of an archive, but not the name or type of the archive, so a source archive may be renamed or recompressed without affecting its ability to be used by a BCF. Wrye Bash displays the data CRCs of packages on the General Info tab for this reason.
</ul>
<h3 id="bain-monitor">Monitor External Installation <a class="back2top" href="#contents">Back to top</a></h3>
<p>Wrye Bash can monitor your game's Data directory to detect any changes made by an external application or manual installation. It will
take the new or changed files and create a new BAIN package that can be handled, installed, and uninstalled just like any other standard
BAIN. This is very useful for mod authors or anyone that
wants to keep strict control of what gets placed into their data directory.
<h4>Example usage scenarios</h4>
<ul>
<li><strong>Creation Kit/GECK</strong> - When creating or managing content
in the Creation Kit or GECK, Wrye Bash can capture any
output from the CK/GECK in a BAIN package. This is useful, for example,
when capturing FaceGen data as NPCs are managed, and it will also
capture any loose files, ESPs, or BSAs created in the editor.</li>
<li><strong>BodySlide</strong> - BodySlide is a utility used to create
custom bodies and armor to fit these bodies, as well as from armors by
third-parties to a custom body. Wrye Bash can capture all output from
BodySlide and package it into a BAIN for easy management. These files
can then be packaged and distributed, backed up, or used to build
another mod.</li>
<li><strong>FNIS</strong> - FNIS is a tool for adding custom animations to
Skyrim. Wrye Bash can capture its output and manage it via BAIN.</li>
<li><strong>Installer Executables</strong> - If you want to install certain
mods (e.g. <a href="https://www.nexusmods.com/newvegas/mods/45138">Fallout - New California</a>),
it may only be possible to do so via running an executable. In this
situation, Wrye Bash can capture the installer's output, which you can
then manage like any other package via BAIN.</li>
<li><strong>Other Mod Managers</strong> - While Wrye Bash supports the
FOMOD XML format since 307, there are still some badly packaged mods it
cannot handle. In such situations, you may have to use other mod
managers to install them.</li>
</ul>
<h4>How to use the "Monitor External Installation" feature</h4>
<ol>
<li>Launch Wrye Bash and switch to the Installers tab.</li>
<li>At the top of any column (e.g. Packages), right click and select "Monitor External Installation..." from the context menu.</li>
<li>Wrye Bash will then begin to scan your data directory to snapshot all data contained within it before any changes are made.</li>
<li>Once this has completed, you will be prompted to begin your external installation.</li>
<li>At this point, switch to your external application and perform the installation or content creation you intend to perform. There is
no time limit.
</li>
<li>Once you have completed the task in the external application, switch back to Wrye Bash and click the OK button to proceed.</li>
<li>Wrye Bash will scan the data folder again to calculate what files have changed, or what new files have been placed into your game's
data directory.
</li>
<li>Once this has completed, Wrye Bash will present a dialog box with a list of files that are new or changed. You can select and
deselect files to be included in the BAIN package at this point. It is advisable to exclude log files and other non-essential files
from the final BAIN package.
</li>
<li>Click OK when you are ready to build the package.</li>
<li>You will now be prompted for a name for your package. Enter a name and confirm.</li>
<li>Wrye Bash will then create the package and run a final CRC scan on the newly created BAIN package to add it to the installer
manifest. This will take a few seconds depending on the speed of your computer and the size of the data being packaged.
</li>
<li>The resulting project can be found at the bottom (highest number) of your package order on the Installer tab. You can then
install, uninstall, or anneal the project as you would any other regular BAIN package, or zip it up as a BAIN archive.
</li>
</ol>
<h4>Usage Notes</h4>
<ul>
<li>When naming your new BAIN package it is safest to avoid spaces in the name (e,g. use underscores between words) as the created BAIN
package is written to an actual folder on your hard drive.
</li>
<li>If you use Mod Organiser (or any mod manager that utilises a virtual installation of files instead of actually installing them into
Data\), then Monitor External Installation can only be used if Wrye Bash is launched by the other Mod manager so that it will feed
Wrye Bash the files it needs from the virtual folder. See <a
href="https://github.com/wrye-bash/wrye-bash/wiki/Wrye-Bash-and-Mod-Organizer" target="_blank">this wiki article</a> for
more information on integrating Wrye Bash with Mod Organizer.
</li>
<li>When installing mods via Nexus Mod Manager, it is recommended that you start monitoring, install the mod via NMM, then before
closing NMM, complete the monitoring session. Create the BAIN package, then switch back to NMM and uninstall the mod. You can then
close NMM. Switch back to Wrye Bash then install the mod from Wrye Bash. This ensures the mod is cleanly installed, all conflicts
are recorded / resolved in Wrye Bash, and therefore able to be cleanly uninstalled.
</li>
</ul>
<h3 id="bain-commands">Context Menu Commands <a class="back2top" href="#contents">Back to top</a></h3>
<div class="prlflex clearf">
<figure class="slideshow" style="width:525px; min-height:656px">
<img alt="Installers Context Menu" src="../bash/images/readme/installers-rclick-header-menu-1.png">
<img alt="Installers Context Menu" src="../bash/images/readme/installers-rclick-header-menu-2.png">
<img alt="Installers Context Menu" src="../bash/images/readme/installers-rclick-header-menu-3.png">
<img alt="Installers Context Menu" src="../bash/images/readme/installers-rclick-header-menu-4.png">
<img alt="Installers Context Menu" src="../bash/images/readme/installers-rclick-header-menu-5.png">
</figure>
<table id="bainHeaderCommands">
<thead>
<tr><th colspan="3">Column Header Context Menu
<tr><th colspan="2">Command<th>Description
<tbody>
<tr><td rowspan="7" id="bainSortBy">Sort By<td>Sort By Active<td>Active installers will be sorted to the top.
<tr><td>Projects First<td>If this is checked, then project packages will be sorted to the top of the list.
<tr><td>Package<td>Sort packages by package name.
<tr><td>Order<td>Sort packages by install order.
<tr><td>Modified<td>Sort packages by date modified.
<tr><td>Size<td>Sort packages by size.
<tr><td>Files<td>Sort packages by number of files they contain.
</tr>
<tr>
<td rowspan="8">Columns</td>
<td>Manual</td>
<td>Manually customize column width.</td>
</tr>
<tr>
<td>Fit Contents</td>
<td>Columns automatically adjust width to fit their contents.</td>
</tr>
<tr>
<td>Fit Header</td>
<td>Columns automatically adjust width to fit all columns in view.</td>
</tr>
<tr><td>Package<td>Display the Package (name) column.
<tr><td>Order<td>Display the Order column.
<tr><td>Modified<td>Display the (date) Modified column.
<tr><td>Size<td>Display the Size column.
<tr><td>Files<td>Display the (number of) Files column.
<tr><td rowspan="4">Files..</td>
<td id="bainOpenDir">Open Folder...</td><td>Opens the Installers directory in Windows
Explorer.</td></tr>
<tr><td id="bainUnhide">Unhide...</td><td>Opens a dialogue window
allowing you to select which hidden packages to unhide. Projects are not
supported yet.</td></tr>
<tr>
<td id="bainNewProject">New Project...</td>
<td>Displays a dialog that allows you to create a new project
and select some starting files for it.</td>
</tr>
<tr>
<td id="bainAddMarker">New Marker...</td>
<td>Creates a marker for organising your packages. The
<q>==</q> will be added for you.</td>
</tr>
<tr><td colspan="2" id="bainRefreshData">Refresh Data<td>Re-scans the Data directory (and all packages). Scanning of the Data directory is done once per run of Wrye Bash, when the
Installers tab is first opened. If you manually alter files in the Data directory after that, <em>you had to run this command to update BAIN to reflect the changes</em>. However
BAIN will now scan the Data directory for changes in files corresponding to the package(s) you run <a href="#bainQuickRefresh">Quick Refresh</a> (or
<a href="#bainRefresh">Refresh</a>) on, so in most use cases (if the files you altered belong to a particular project/package) just use Quick Refresh. What this command basically
does is:
<ol type="a">
<li>rescan the game Data directory (as is done on booting BAIN). If you enabled/disabled any <a href="#bainGlobalSkips">global skip option</a> and this enabled/disabled new
skips in the Data dir then rescanning Data will take those skips into account. See <a href="#bain-data-dir-skipped">Skipped Data subdirectories</a> for the Data directories
that are skipped.
<li>run a Quick refresh on all installers (ignoring Skip refresh flags for projects, as Quick Refresh does)
</ol>
<tr><td colspan="2" id="bainFullRefresh">Full Refresh<td>This does a full refresh <em>of all data files</em>, both the contents of the game Data directory tree and Bash Installers
folder, bypassing all skip refresh flags for projects. Notably this will recalculate <abbr title="Cyclic redundancy check, digital signature of the file">CRCs</abbr> for all files
inside Data and Bash Installers (including project directories). Running this command will likely take <em>aeons</em>, and you seldom need it.
<tr><td colspan="2" id="bainMonitorExternalInstallation">Monitor External Installation...<td>When you absolutely cannot install a mod via BAIN, you can put BAIN into Monitor Mode using this command. It will scan the Data folder before and after you install the mod, then provide an option to create a Project from the changes it detects.
<tr><td colspan="2" id="bainListPackages">List Packages...<td>Displays a list of projects and archives and copies the list to your clipboard. This is useful for posting your package order on forums, eg. when troubleshooting an install.
<tr><td colspan="2" id="bainAnnealAll">Anneal All<td>Installs any missing files for active installers and corrects all install order errors.
<tr><td colspan="2" id="bainUninstallAll">Uninstall All Packages<td>Uninstalls all the packages in the package list.
<tr>
<td colspan="2" id="bainCleanData">Clean Data...</td>
<td>Removes files from the Data folder that are not from one of the
following sources:
<ul>
<li>Vanilla game content.</li>
<li>Official DLC content.</li>
<li>Wrye Bash (including the Bashed Patches and their
corresponding docs in <code>Data/Docs</code>, e.g.
<code>Bashed Patch, 0.html</code>).</li>
<li>Installed BAIN packages.</li>
</ul>
The files are not deleted, but moved to the
<code>[Game] Mods\Bash Installers\Bash\Data Folder Contents
[timestamp]</code> folder instead, where
<code>[timestamp]</code> is the date and time the command was
run.</td>
</tr>
<tr><td colspan="2" id="bainApplyEmbeddedBCFs">Apply Embedded BCFs<td>Automatically apply Embedded BCFs to archives that have one. The new package will be
created next to the archive that contains the BCF, and named as this archive prepended with "[Auto applied BCF] ". If a package with that name exists it will be
<em>overridden</em>. BAIN used to try and do that automatically on refresh based on a setting (set by this column menu item), but this had many issues and was removed.
<tr><td colspan="2" id="bainAvoidAtStartup">Avoid At Startup<td>Toggles Bash to avoid the Installers tab on startup, thus avoiding unnecessary data scanning. Unless you're spending a lot of time in the Installers tab, you should enable this.
<tr><td colspan="2" id="bainEnabled">Enabled<td>This enables/disables Bain itself. Preferred setting: Enabled (checked).
<tr><td colspan="2" id="bainAutoAnneal">Auto-Anneal<td>Toggles the auto-anneal process on/off. Preferred setting: enabled.
<tr><td colspan="2" id="bainAutoAnnealInstallWizards">Auto-Anneal/Install Wizards<td>Toggles whether or not to automatically install/anneal a package when finished with its wizard.
<tr><td colspan="2" id="bainAutoRefreshProjects">Auto-Refresh Projects<td>Toggles the auto-refreshing of projects on/off, for all projects. This is useful when you have many big
projects and you want to minimize the lag when you switch back to the installers tab, whereupon BAIN will (behind the scenes) scan the Bash Installers folder for changed
projects/packages. While scanning packages (archives) is pretty fast, scanning projects is slow, however you will miss on updates done in the project directories (you will have to
manually refresh) - so it's recommended to leave this enabled. If you are concerned about a particularly big project then consider enabling the <a href="#bainDontRefresh">Don't
Refresh</a> flag <em>on that particular project</em>. Keep in mind that Projects will be anyway refreshed once on Bash restart, irrespective of this setting (except if popular
demand arises).
<tr>
<td colspan="2">Ignore FOMODs</td>
<td>If checked, then the 'smart' <a href="#install">Install...</a>
command will ignore FOMODs and only run wizards or the manual
procedure. You can still run FOMODs manually via
<a href="#bain-run-fomod">Run FOMOD...</a>.</td>
</tr>
<tr>
<td colspan="2">Validate FOMODs</td>
<td>If checked, then BAIN will validate FOMODs against the official
XML schema and shows a warning if validation fails. You can
find more information on
<a href="https://modding.wiki/en/vortex/developer/mod-installer-repair">this modding.wiki page</a>.</td>
</tr>
<tr><td colspan="2" id="bainSkipBethsoftContent">Skip BethSoft Content<td>Toggles whether or not refreshing the Data directory will
also scan Bethsoft BSAs, ESPs, and ESMs. Disabling this option will cause a significant increase in refresh time if the
timestamps on the Bethsoft BSAs are changed. However, disabling this setting is the only way to allow BAIN to install Vanilla
ESPs, ESMs, and BSAs. For example, DLC plugins which have been cleaned with xEdit and packed into a BAIN. Preferred setting:
enabled (that is, <em>skip</em> installation of bethsoft content).
<tr><td colspan="2" id="bainBSARedirection">BSA Redirection<td><em>Oblivion, Nehrim: At Fate's Edge, Fallout 3 & Fallout: New Vegas only.</em> Uses Quarn's
<a href="https://web.archive.org/web/20190104233345/https://devnull.sweetdanger.com/archiveinvalidation.html">BSA redirection technique</a> to avoid bugs with the engine's
BSA system. This is compatible with both OBMM and Quarn's original BSA redirection approaches.
<tr><td colspan="2" id="bainRemoveEmptyDirectories">Remove Empty Directories<td>If this is checked, then any empty subfolders of the Data directory will be deleted. This reduces some clutter (especially after uninstalling packages).
<tr><td colspan="2" id="bainShowInactiveConflicts">Show Inactive Conflicts<td>If checked, then the conflicts report will show
conflicts with inactive as well as active installers. Usually only active conflicts are of interest, however sometimes it's
useful to review all conflicting packages.
<tr><td colspan="2" id="bainShowLowerConflicts">Show Lower Conflicts<td>If checked, then the conflicts report with show conflicts
with lower order packages (or with lower ordering bsas in bsa conflicts view). If you're only interested in higher order
conflicts, then uncheck this to remove some clutter from the report.
<tr><td colspan="2">Show Active BSA Conflicts<td>If checked, the contents of the selected installer <em>active</em> BSAs
are compared with the contents of other installers <em>active</em> BSAs and any conflicting resources (actually same name
resources) found are displayed in the conflicts list. Active bsas are <em>installed</em> bsas that have a correspondingly named
mod active in the load order.<em>Lower</em> and <em>Higher</em> conflicts has therefore a different meaning than loose file
conflicts. Higher means that the corresponding active mod has a higher load oder number (loads later) so its bsa will load last
and <em>its</em>assets will be used. Note that this may lead to a package having its bsas appear in both Higher and Lower sections
depending on how they load. If <a href="#bainShowLowerConflicts">Show Lower Conflicts</a> is not checked <em>lower loading
conflicting bsas</em> won't be shown, again this is different than loose files, where <em>lower installers</em> (lower install
order) won't be shown. This function still has some rough edges:
<ul>
<li>we can't open the resources and check if they actually conflict or are identical, so take those "conflicts" with a
grain of salt
</ul>
<tr><td colspan="2" id="bainWizardIconOverlay">Wizard Icon Overlay<td>If checked, installers with a Wizard will have a magic wand image displayed over their icons.</tr>
<tr><td rowspan="13" id="bainGlobalSkips">Global Skips</td>
<tr><td id="bainSkipSEPlugins">Skip **SE Plugins</td><td><em>Non-Skyrim only.</em> If this is checked, files to go in the <code>Data\[**SE]\Plugins</code> folder will not be installed.</td></tr>
<tr><td>Skip SKSE/Script Dragon Plugins</td><td><em>Skyrim and Enderal: Forgotten Stories only.</em> If this is checked, files to go in the <code>Data\SKSE\Plugins</code> or <code>Data\asi</code> folder will not be installed.</td></tr>
<tr>
<td id="bainSkipScreenshots">Skip Screenshots</td>
<td>If checked, then files from screenshots directories
(<code>screenshots</code>, <code>screens</code> and
<code>ss</code>) will be skipped.</td></tr>
<tr>
<td id="bainSkipScriptSources">Skip Script Sources</td>
<td><em>Skyrim, Enderal: Forgotten Stories, Skyrim: Special Edition & Fallout 4 only.</em> If checked, loose script sources (.psc files) will be skipped.</td>
</tr>
<tr><td id="bainSkipImages">Skip Images<td>If checked, image files will be skipped.
<tr><td id="bainSkipDocs">Skip Docs<td>If checked, document files will be skipped vice being swept to the <code>Docs</code> directory.
<tr>
<td id="bainSkipDistantLOD">Skip DistantLOD</td>
<td><em>Oblivion, Nehrim: At Fate's Edge, Fallout 3 &
Fallout: New Vegas only.</em> If checked, then
<code>DistantLOD</code> files in packages will be ignored.
Useful if you're using xLodGen to generate DistantLOD
files.</td>
</tr>
<tr>
<td id="bainSkipLODMeshes">Skip LOD Meshes</td>
<td>If checked, landscape LOD meshes will be skipped. See
<a href="#bain-data-dir-skipped">Skipped Data subdirectories</a>
for more information.</td>
</tr>
<tr>
<td id="bainSkipLODTextures">Skip LOD Textures</td>
<td>If checked, landscape LOD textures will be skipped. See
<a href="#bain-data-dir-skipped">Skipped Data subdirectories</a>
for more information.</td>
<tr>
<td id="bainSkipLODNormals">Skip LOD Normals</td>
<td>If checked, landscape LOD normals will be skipped. See
<a href="#bain-data-dir-skipped">Skipped Data subdirectories</a>
for more information.</td>
</tr>
<tr>
<td id="bainSkipBSLFiles">Skip BSL Files</td>
<td><em>Skyrim, Enderal: Forgotten Stories and Skyrim:
Special Edition only.</em> If checked, BSL files will be
skipped. BSL files are only needed when viewing BSA files in
the Creation Kit's <code>archive.exe</code>.</td>
</tr>
<tr>
<td id="bainSkipPDBs">Skip PDB Files</td>
<td>If checked, PDB files will be skipped. They contain debug
information that can help plugin developers find and fix issues
with their xSE plugins. You can skip them here if you
want.</td>
</tr>
<tr><td rowspan="3">Global Redirects</td></tr>
<tr>
<td id="bainRenameStringTranslationFiles">Rename String Translation Files</td>
<td><em>Skyrim, Enderal: Forgotten Stories, Skyrim: Special Edition & Fallout 4 only.</em>
If checked, string translation files will be renamed so that they are loaded for the language
the game is currently run for, unless there are existing translation files for that language.</td>
</tr>
<tr>
<td id="bainRedirectScriptSources">Redirect Script Sources</td>
<td><em>Skyrim: Special Edition only.</em> If checked, loose script sources (.psc files) installed
to the incorrect folders (<code>source\scripts</code> and <code>source</code>) will be redirected to
the correct folder (<code>scripts\source</code>).
<a href="#bainSkipScriptSources">Skip Script Sources</a> must be off.</td>
</tr>
</table>
</div>
<div class="prlflex clearf">
<figure class="slideshow" style="width:555px; min-height:386px">
<img alt="Installer Context Menu" src="../bash/images/readme/installers-rclick-installer-menu-1.png">
<img alt="Installer Context Menu" src="../bash/images/readme/installers-rclick-installer-menu-2.png">
<img alt="Installer Context Menu" src="../bash/images/readme/installers-rclick-installer-menu-3.png">
<img alt="Installer Context Menu" src="../bash/images/readme/installers-rclick-installer-menu-4.png">
<img alt="Installer Context Menu" src="../bash/images/readme/installers-rclick-installer-menu-5.png">
<img alt="Installer Context Menu" src="../bash/images/readme/installers-rclick-installer-menu-6.png">
</figure>
<table id="bainPackageCommands">
<thead>
<tr>
<th colspan="4">Package Context Menu</th>
</tr>
<tr>
<th colspan="3">Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="2" rowspan="5" id="bainFileMenu">File...</td>
<td id="bainOpenFile">Open...</td>
<td>Opens the selected package(s) in the file system.</td>
</tr>
<tr>
<td id="bainRename">Rename...</td>
<td>Renames the selected package(s) or marker(s). All selected items must be of the same type. For archives the extension will remain the same.</td>
</tr>
<tr>
<td id="bainDuplicate">Duplicate...</td>
<td>Makes a duplicate of the selected package(s).</td>
</tr>
<tr>
<td id="bainHide">Hide...</td>
<td>Hides the package in the list, and moves it to the
<code>[Game] Mods/Bash Mod Data/Hidden</code> folder.</td>
</tr>
<tr>
<td id="bainDelete">Delete</td>
<td>Deletes the selected package(s). Deleted packages are sent to
the Recycling Bin.</td>
</tr>
<tr>
<td colspan="2" rowspan="4" id="bainOpenAt">Open at</td>
<td>Google...</td>
<td>Attempts to perform a Google search for the selected package's name.</td>
</tr>
<tr>
<td>[Game] Nexus...</td>
<td>Attempts to open the selected package's page on the game's matching Nexus. This command assumes that the trailing digits in a package's name is the package ID at the site.</td>
</tr>
<tr>
<td>TES Alliance...</td>
<td>Attempts to open the selected package's page on TES Alliance. This command assumes that the trailing digits in a package's name is the package ID at the site.</td>
</tr>
<tr>
<td id="bainOpenReadme">Open Readme</td>
<td>If BAIN detects a readme in the selected package, it will be opened.</td>
</tr>
<tr>
<td colspan="3" id="bainAnneal">Anneal</td>
<td>Installs missing files and corrects install order errors. Note: If an already installed file is changed outside of Wrye Bash control, Wrye Bash will not anneal that file. Anneal is relative to other installed packages. This is because we do not want to override user changes like cleaning plugins and the like. If you do want to override the change use
<a href="#bainInstallConfigured">Install Configured</a> instead. Note2: The change will be detected immediately in case of ini tweaks, mods or bsas, but on next Bash load for other files (like nifs etc). To detect the change without restarting
<a href="#bainQuickRefresh">(Quick) Refresh</a> the package.</td>
</tr>
<tr>
<td colspan="3" id="bainQuickRefresh">Quick Refresh</td>
<td>
<p>Refreshes all info for the selected package(s), also checking the files that correspond to this package inside the Data directory. It will bypass skip refresh flags on projects (see case A below). BAIN does refresh package information whenever the installer's tab regains focus, except for projects if project skipping is on, but does not scan the Data folder but once on boot.</p> So this command is useful if:
<ol type="A">
<li>a
<em>project</em> has been changed and it has
<a href="#bainDontRefresh">Don't Refresh</a> selected, or the
<a href="#bainAutoRefreshProjects">Auto-Refresh Projects</a> option is disabled</li>
<li>files that correspond to a package/project have changed in the game's Data directory, but the package is still marked in sync (or out of sync) erroneously</li>
</ol>
<p>Case B) is relevant cause now Bash will recheck the files in Data that would belong to the packages that are being refreshed. This was not the case in 306, where you needed a full
<a href="#bainRefreshData">Refresh Data</a>, which is now pretty much deprecated.</p>
</td>
</tr>
<tr>
<td colspan="3" id="bainMoveTo">Move To...</td>
<td>Moves the selected package(s) to the specified position.</td>
</tr>
<tr>
<td colspan="3" id="bainInstall">Install...</td>
<td>Installs the selected package, preferring a BAIN or FOMOD
wizard if it exists.</td>
</tr>
<tr>
<td rowspan="11">Advanced Installation..</td>
<td colspan="2" id="bainInstallConfigured">Install Configured</td>
<td>Fully installs the package except for files that would be overridden by later packages.</td>
</tr>
<tr>
<td colspan="2">Install Missing Files</td>
<td>The same as Install, except that it only installs missing files – i.e. it will not override any currently existing files.</td>
</tr>
<tr>
<td colspan="2">Install Last</td>
<td>Moves the package to the end of the order list and installs it.</td>
</tr>
<tr>
<td rowspan="4">FOMOD Installer..</td>
<td id="bain-run-fomod">Run FOMOD...</td>
<td>Runs the FOMOD for this package and installs the output into
the Data folder via BAIN.</td>
</tr>
<tr>
<td>Capture FOMOD Output...</td>
<td>Runs the FOMOD for this package and creates a new BAIN project
containing the output.</td>
</tr>
<tr>
<td>View FOMOD...</td>
<td>Archives only. Opens the ModuleConfig.xml for viewing.</td>
</tr>
<tr>
<td>Edit FOMOD...</td>
<td>Projects only. Opens the ModuleConfig.xml in your system's
default <code>.xml</code> editor.</td>
</tr>
<tr>
<td rowspan="4">Wizard Installer...</td>
<td>Manual Wizard...</td>
<td>Runs the BAIN wizard for the package, if it has one.</td>
</tr>
<tr>
<td>Auto Wizard...</td>
<td>Runs the BAIN wizard for the package, if it has one, selecting the default options.</td>
</tr>
<tr>
<td>View Wizard...</td>
<td>Archives Only. Opens the wizard.txt for viewing.</td>
</tr>
<tr>
<td>Edit Wizard...</td>
<td>Projects Only. Opens the wizard.txt in your system's default <code>.txt</code> editor.</td>
</tr>
<tr>
<td colspan="3" id="bainUninstall">Uninstall</td>