diff --git a/README.md b/README.md index c49a703a..619f05b6 100644 --- a/README.md +++ b/README.md @@ -97,46 +97,3 @@ cd build cmake .. -DPROJECT_LIBS_DIR=.. -DPROJECT_ARCH=32 -DPROJECT_LINK=STATIC -DCMAKE_TOOLCHAIN_FILE=mingw-toolchain.cmake make ``` - -## Misc Notes - -Here is the full list of BOSS members at the end of 2012. Any of these who lose -their membership status should still be credited in the BOSS readme: - -Random007, Arthmoor, WrinklyNinja, PacificMorrowind, aellis, Vacuity, Gabba, -ZiggyX200, RiddlingLynx, AliTheLord, Tokc.D.K., Valda, Space Oden69, Televator, -Leandro Conde, Psymon, Loucifer, Torrello, Malonn, Skyline, Sharlikran, Red Eye, -iyumichan, Peste, Calen Ellefson, SilentSpike, Arkangel, zyp, v111, Chevenga, -rowynyew - -BOSSv3's directory structure is split between a folder in %LOCALAPPDATA% and a folder wherever the user wants it: - -Program Files (or wherever): -``` -BOSS/ - BOSS.exe - resource/ - l10n/ - ...translation files... - libespm.yaml - ...CSS and JS files... - docs/ - images/ - ...readme images... - BOSS Readme.html - ...other docs... -``` - -%LOCALAPPDATA%: -``` -BOSS/ - settings.yaml - BOSSDebugLog.txt - Oblivion/ - masterlist.yaml - userlist.yaml - report.html - ...other game folders with same structure as Oblivion... -``` - -BOSSv3's installer will also add some Start menu shortucts and a Registry entry, but these are not required for BOSS to function. diff --git a/docs/BOSS Readme.html b/docs/BOSS Readme.html index a53c172c..6678436d 100644 --- a/docs/BOSS Readme.html +++ b/docs/BOSS Readme.html @@ -34,14 +34,15 @@ h3{ thead {background:#99CCFF;} code.box {border-radius:5px; border:1px solid #ccc; padding:0.75em; white-space:pre; overflow-x:auto; display:table; margin:1.5em;} - blockquote {border-radius:3px; border:1px solid #0c0; padding:5px; background:#7e7; display:table;margin:1.5em;} + blockquote {border:1px solid #ccc; border-radius:3px; padding:5px; background:#eee; display:table;margin:1.5em;} a[href^="http"]:after {padding-left:2px; content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=);} span[title] {border-bottom: 1px dotted; font-family: sans-serif; cursor:help;} abbr {cursor:help;} - #warning {background:#c00; padding:10px 5px;margin:-8px;} + #warning {background:#fbb; padding:10px 5px;margin:-8px;} + .warning {background:#fbb; padding:10px; border-color:#d00;} var {color:#8B4513;} #teamTableBody > tr > td:first-child {border-right:0;} @@ -111,7 +112,7 @@ This documentation is a work in progress, covering an application that is also s
  • File Permissions
  • API Readme (separate document) -
  • Metadata File Syntax (separate document) +
  • Metadata File Syntax (separate document)

    Introduction

    @@ -125,9 +126,9 @@ This documentation is a work in progress, covering an application that is also s

    BOSS is intended to make using mods easier, and mod users should still possess a working knowledge of mod load ordering. See Introduction To Load Orders for an overview. -

    Installation

    +

    Installation & Uninstallation

    -
    BOSS version 3 is not backwards compatible with version 2, as it makes a variety of major changes to how BOSS works. In particular, it will almost certainly set a different load order, and any user rules will have to be manually recreated in BOSS's user interface.
    +
    BOSS version 3 is not backwards compatible with version 2, as it makes a variety of major changes to how BOSS works. In particular, it will almost certainly set a different load order, and any user rules will have to be manually recreated in BOSS's user interface. Version 2 should be uninstalled prior to installing version 3.

    The simplest way to install BOSS is to use the installer. However, the instructions below are provided if a manual install method is preferred.

      @@ -136,7 +137,7 @@ This documentation is a work in progress, covering an application that is also s
    1. If any of the Wrye *ash utilities are installed, make sure their BOSS Disable Lock Load Order* setting is enabled.
    2. If updating from an earlier version of BOSS and you moved any userlists you have to a temporary location, after you have run BOSS at least once for each game with a userlist, you will need to move your userlist(s) into the game(s) subfolders that are created within the BOSS folder.
    -

    If BOSS was installed using the installer, then use the uninstaller it provides a link to in the Start Menu to uninstall BOSS. If BOSS was installed manually, simply delete the BOSS folder you installed. +

    If BOSS was installed using the installer, then use the uninstaller it provides a link to in the Start Menu to uninstall BOSS. If BOSS was installed manually, simply delete the BOSS folder you installed and the BOSS folder in your local application data folder, which can be accessed by entering %LOCALAPPDATA% into Windows' File Explorer.

    Using BOSS

    @@ -145,11 +146,11 @@ This documentation is a work in progress, covering an application that is also s BOSS's main window
    BOSS's main window. The title bar displays which game BOSS is running for.
    -

    Clicking the Edit Metadata button will open BOSS's metadata editor, where you can make changes to the metadata BOSS uses to sort plugins, the messages that get displayed for plugins, and any Bash Tag suggestions BOSS makes. BOSS also gives you the opportunity to make any such changes when it sorts your plugins, but this option is useful for when you don't want to go through the full sorting process. See Customising BOSS's Results for more information. -

    Clicking the Sort Plugins button will begin the plugin sorting process. This will sort your plugins, allow you to make any changes, then display a report that details the results of BOSS's activity. See Sorting Plugins for more information. -

    Clicking the View Last Report button will display the report generated the last time BOSS sorted your plugins. See The Results Report for more information. +

    Clicking the Edit Metadata button will open BOSS's metadata editor, where you can make changes to the metadata BOSS uses to sort plugins, the messages that get displayed for plugins, and any Bash Tag suggestions BOSS makes. +

    Clicking the Sort Plugins button will begin the plugin sorting process. This will sort your plugins, allow you to make any changes to the load order it produces, then display a report that details the results of BOSS's activity. +

    Clicking the View Last Report button will display the report generated the last time BOSS sorted your plugins.

    The File menu provides menu items for sorting plugins, viewing the last report BOSS generated and quitting BOSS, while the Edit menu provides menu items for accessing BOSS's metadata editor and the settings window. -

    The Active Game menu allows you to change which game BOSS is running for without having to close and re-open it. Games that BOSS cannot find are greyed out, and the the one BOSS is running for is marked with a dot to its left. To change the active game, simply select another game in the list. +

    The Game menu allows you to change which game BOSS is running for without having to close and re-open it. Games that BOSS cannot find are greyed out, and the the one BOSS is running for is marked with a dot to its left. To change the active game, simply select another game in the list.

    The Help menu provides a link to this readme and an about page that contains the version of BOSS being run, some legal information and a link to the project repository.

    Sorting Plugins

    @@ -217,13 +218,29 @@ This documentation is a work in progress, covering an application that is also s Default GameIf set to something other than Autodetect, this overrides game autodetection. If the game specified is not detected, BOSS falls back to autodetection. LanguageControls the language BOSS uses in its interfaces. Debug messages are always displayed in English, and any plugin messages that do not have translations in the selected language will be displayed in English instead. Debug VerbosityControls the verbosity of the debug output, which is written to BOSSDebugLog.txt. - Oblivion Masterlist URLThe URL that BOSS uses to check for updates to its masterlist for TES IV: Oblivion. - Nehrim Masterlist URLThe URL that BOSS uses to check for updates to its masterlist for Nehrim: At Fate's Edge. - Skyrim Masterlist URLThe URL that BOSS uses to check for updates to its masterlist for TES V: Skyrim. - Fallout 3 Masterlist URLThe URL that BOSS uses to check for updates to its masterlist for Fallout 3. - Fallout: New Vegas Masterlist URLThe URL that BOSS uses to check for updates to its masterlist for Fallout: New Vegas. Update masterlist before sortingIf checked, BOSS will update its masterlist, should an update be available, before sorting mods. + Viewer reports externally in default browser.If checked, BOSS will display its report using your default web browser instead of opening its own window. +

    The games list allows the customisation of which games BOSS offers support for, trivialising support for multiple copies of a game and Total Conversions. The games listed here will be displayed in the main window's Game menu when BOSS is next run. The Add Game, Edit Game and Remove Game buttons are used to edit the list. Each game has several columns, which are explained below. + + + +
    ColumnDescription +
    NameThe name of the game, or another identifying string, that is displayed in menus and the main window's title bar. +
    Base Game TypeEvery game BOSS runs for must use the plugin file format and load order system of one of the following games: +
      +
    • TES IV: Oblivion +
    • TES V: Skyrim +
    • Fallout 3 +
    • Fallout: New Vegas +
        +
    BOSS FolderThe sub-folder which BOSS uses to store the game's files in. Each game must be given a unique sub-folder. +
    Master FileThe game's main master file. This is specified as it must load before all other plugins. Note that Skyrim-based games will always load Skyrim.esm first, so this column must always be set to Skyrim.esm for such games. +
    Online MasterlistThe URL of the online masterlist that BOSS uses to update its local copy. +
    Install PathThe path to the game's folder, in which the Data folder lies. +
    Install Path Registry KeyThe registry key, in HKEY_LOCAL_MACHINE, that contains the install path of the game. This may be used to obtain the install path of a game the first time BOSS runs for it. +
    +

    Note that for Skyrim, multiple copies or Total Conversions will all edit the same plugins.txt file, and so they lack the level of independence that is achievable for other games.

    Troubleshooting

    @@ -271,7 +288,7 @@ This documentation is a work in progress, covering an application that is also s
  • Zanderat -

    BOSS is written in C/C++ and makes use of the Alphanum, Boost, libespm, libloadorder, wxWidgets and yaml-cpp libraries. +

    BOSS is written in C/C++ and makes use of Subversion and the Alphanum, Boost, libespm, libloadorder, PugiXML, wxWidgets and yaml-cpp libraries. BOSS's reports are written in XHTML/CSS/Javascript and make use of Polyfill.js to provide Internet Explorer 8 compatibility.

    Project Members

    @@ -370,7 +387,7 @@ There are three key pieces of information that are used to accurately describe a
  • Install the game outside the Program Files (or Program Files (x86) if on 64-bit Windows). UAC prevents unauthorised edits to these folders, so by installing the game outside of them, you remove it from UAC's reach, allowing you to use mods more easily.
  • Deactivate UAC. This can be done from the Control Panel, and will turn UAC off across the whole of your computer. It is up to you whether you feel that you have adequate security measures in place to do this without risk.
  • Give yourself Full Control permissions over your game install folder. This will allow you to make any edits you desire while keeping UAC active and on guard for any edits made by programs you do not run, and also means that you do not need to reinstall your game to a new location. -
  • Run BOSS as an Administrator. Right-click the BOSS.exe and BOSS GUI.exe, and select Run as administrator. +
  • Run BOSS as an Administrator. Right-click the BOSS executable, or the shortcut if launching from a shortcut, and select Run as administrator.

    For those that wish to take the third option and give themselves Full Control permissions, here is a guide:

      diff --git a/src/backend/network.cpp b/src/backend/network.cpp index f231a593..bfa173b6 100644 --- a/src/backend/network.cpp +++ b/src/backend/network.cpp @@ -109,11 +109,40 @@ namespace boss { return exitCode == 0; } + //Gets revision + date string. + string GetRevision(const std::string& buffer) { + string revision, date; + size_t pos1, pos2; + + pos1 = buffer.rfind("Revision: "); + if (pos1 == string::npos) + return ""; + + pos2 = buffer.find('\n', pos1); + + revision = buffer.substr(pos1+10, pos2-pos1-10); + + pos1 = buffer.find("Last Changed Date: ", pos2); + pos2 = buffer.find(' ', pos1+19); + + date = buffer.substr(pos1+19, pos2-pos1-19); + + return revision + " (" + date + ")"; + } + std::string UpdateMasterlist(const Game& game, std::vector& parsingErrors) { - string command, output; + string command, output, revision; //First check if the working copy is set up or not. - command = svn_path.string() + " info \"" + game.MasterlistPath().parent_path().string() + "\""; + command = svn_path.string() + " info \"" + game.MasterlistPath().string() + "\""; + + revision = GetRevision(output); + + if (game.URL().empty()) { + if (!revision.empty()) + return revision; + else + return "N/A"; if (!RunCommand(command, output)) { //Working copy not set up, perform a checkout. @@ -127,8 +156,6 @@ namespace boss { if (!RunCommand(command, output)) throw error(ERROR_SUBVERSION_ERROR, "Subversion could not update the masterlist. Details: " + output); - - string revision; while (true) { try { @@ -137,20 +164,12 @@ namespace boss { if (!RunCommand(command, output)) throw error(ERROR_SUBVERSION_ERROR, "Subversion could not read the masterlist revision number. Details: " + output); - size_t pos1 = output.rfind("Revision: "); - size_t pos2 = output.find('\n', pos1); - - revision = output.substr(pos1+10, pos2-pos1-10); - - pos1 = output.find("Last Changed Date: ", pos2); - pos2 = output.find(' ', pos1+19); - - string date = output.substr(pos1+19, pos2-pos1-19); + revision = GetRevision(output); //Now test masterlist to see if it parses OK. YAML::Node mlist = YAML::LoadFile(game.MasterlistPath().string()); - return revision + " (" + date + ")"; + return revision; } catch (YAML::Exception& e) { //Roll back one revision if there's an error. parsingErrors.push_back("Masterlist revision " + revision + ": " + e.what());