MO2硬链接构建器

创作者: Vladmir74
已更新:2026-05-22 16:53:31
83KB

关于此 MOD

MO2硬链接构建器可从你的MO2配置文件中创建一个独立可启动的Skyrim构建,无需修改原始游戏文件夹或MO2安装。它专为希望直接从真实文件夹启动Skyrim的玩家而设计。
4.0版本新内容
版本4是一次全面的架构重建,重点在于更安全的隔离、更快的重建以及更好的恢复能力。

  • 为会话隔离、存档同步及退出后恢复行为新编译的C#启动器。
  •  独立构建中不存在持久的 `_profile/` 文件夹。
  • 增量重建现在仅重新部署更改过的模组。首次版本4构建会创建所需的基线;之后,在MO2中所做的更改无需清除并重新部署整个独立版即可应用。
  • 游戏生成的存档文件会在清理前提取,重建后恢复。
  • 中断的构建和启动器同步任务可在下次运行时恢复。
  • 每次构建后自动执行快速校验与采样验证,并可随时进行完整SHA-256校验。
  • 已移除实验性优化功能,以降低复杂度并减少杀毒软件的误报。

我为何打造这个


我最初的理由很简单:我想直接运行Skyrim,而不必承受MO2虚拟文件系统带来的额外开销。

MO2是一款极其强大的工具,我每天都会用它来管理超过3500个Mod。但运行游戏时 穿过 MO2增加了启动延迟——VFS需要在引擎启动前挂载。在大规模模组列表下,这种延迟相当明显。除了性能方面,我个人对于通过代理启动游戏这件事也感到不太满意。我希望模组能 实际已安装, 而非仅仅被转移。

这个工具最初是为了满足我自己的需求而构建的。我决定将其发布,献给所有有同样想法的人——那些既想获得原版引擎体验,又不想放弃MO2模组管理灵活性的天际玩家。

我想明确一点:这个工具不会削弱 MO2 的出色之处。你的原始游戏文件夹和 MO2 模组文件夹将完全保持原样不受影响。独立构建是一个隔离的副本,通过硬链接指向你现有的文件。你可以从不同的 MO2 配置文件中构建多个独立版本,当源文件和目标位于同一 NTFS 驱动器上时,几乎不占用额外的磁盘空间。

我不是专业的模组制作者或开发者——这是我发布的第一个工具。我制作它是因为我自己需要它,并且觉得其他人可能也会需要。

这一作有何不同


  • 同盘构建时,所需额外磁盘空间几乎为零。 NTFS硬链接指向你现有的模组文件。独立文件夹内不包含重复数据—— 是 你的模组数据,在文件系统层面共享。跨驱动器部署会退化为完整复制,并会消耗额外的磁盘空间。
  • 会话级配置注入。 预编译的C#启动器会在每次启动前,将MO2配置文件的INI和加载顺序文件注入到Windows标准位置,备份原有文件,并在退出后恢复一切。会话期间产生的存档会自动同步回MO2配置文件。每次游戏关闭时,Windows配置都会恢复到会话前的状态。
  • 智能增量重建。 首次构建后,后续重新构建仅会重新部署实际有变更的模组。该工具会将您当前的模组列表与已保存的快照进行比对,并跳过所有已是最新状态的模组。
  • 崩溃安全部署。 部署过程使用事务检查点。如果过程中断,它可以从上次中断的地方继续,而不是从头开始。

主要特性


部署
  • NTFS硬链接 — 将模组和游戏本体文件部署为硬链接。同一驱动器部署时不产生数据重复。
  • 复制回退 — 当独立目标位于不同驱动器时,自动回退为完整文件复制。
  • 增量重建 — 三重门脏数据检测(模组列表哈希 → 模组文件夹指纹 → 逐文件状态)可识别哪些模组发生了更改。仅重新部署这些模组。
  • 动作队列执行器 — 分阶段执行:先执行所有删除,再执行所有新链接。防止出现部分状态。
  • 受保护前缀守卫 — 核心游戏基础数据(如 Data/Update)绝不会被模组文件覆盖。

隔离
  • C# 会话启动器 — 在部署时通过 csc.exe 编译。将原始加载器 EXE 替换为一个包装程序,该程序在每次启动前将您的 MO2 配置文件的 INI 和加载顺序文件注入标准的 Windows 位置,备份现有文件,并在退出后恢复它们。存档在游戏过程中保存到 Windows 文档,并在游戏关闭时自动同步回您的 MO2 配置文件。
  • 延迟任务恢复 — _wrapper_state.json 文件用于追踪启动器的同步周期。如果游戏在启动或关闭过程中崩溃,下次运行将自动完成中断的存档同步。
  • 配置文件映射 读取您的MO2配置文件的plugins.txt、loadorder.txt和INI文件,以便启动器为每次会话注入正确的配置。

安全
  • 独立身份验证 — 该工具仅将包含 standalone_metadata 目录的文件夹识别为有效的独立构建版本。它会拒绝清理任何缺少此标记的文件夹。
  • 目标阻止列表 — Steam 文件夹、您的原版游戏文件夹以及 MO2 安装目录均被硬性禁止作为构建目标位置。
  • 清理前的预收获 — 在清空独立文件夹进行重建之前,工具会扫描游戏生成的文件(FNIS输出、JContainers数据、Bodyslide网格、崩溃日志),并将它们复制到MO2模组文件夹中名为standalone_generated_files的模组里。这些文件通过硬链接计数来识别:已部署的文件与其源文件共享同一个inode,而游戏生成的文件则不然。

构建后
  • 分级验证 — 部署后,工具会先进行快速检查(文件大小+时间戳),随后进行抽样检查(对5%的文件随机选取并进行SHA-256校验)。按需可进行完整检查(100% SHA-256)。
  • HTML 构建报告 — 生成 standalone_metadata/build_report.html。显示每个已部署文件、其来源模组、部署方式(硬链接 vs 复制)以及验证结果。可在浏览器中筛选和搜索。

存档管理
  • 自动会话同步 — C#启动器会在每次会话前将你MO2配置中的存档复制到Windows文档中,并在退出后将新存档同步回来。正常游玩期间无需手动操作。
  • 预清扫 — 在清除独立文件夹以进行重建之前,Windows 文档中的任何存档都会首先自动同步到你的 MO2 配置文件中。
  • 隔离系统 — 如果在任何同步过程中出现文件名冲突,现有文件会被移动到带时间戳的隔离文件夹,而非覆盖。该工具绝不会永久删除存档文件。

独立管理器
  • 建造注册表 — Tab 2 列出了系统中检测到的所有独立构建,数据来自其 standalone_metadata.json 文件。
  • 元数据视图 — 在界面中选择任意构建,即可直接查看其源路径、构建日期、游戏及配置文件信息。

前置条件


  • Mod Organizer 2 — 这是一个MO2插件。必须通过MO2运行。
  • NTFS 驱动器 — 硬链接是NTFS的一项功能。源和目标都必须位于NTFS卷上。
  • 零空间建造用同款驱动器 — 目标文件夹必须与你的MO2模组文件夹位于同一物理磁盘上,才能使用硬链接。跨磁盘部署可以工作,但会占用完整磁盘空间(复制模式)。
  • .NET Framework — C# 启动器编译需要 csc.exe,该程序随 .NET Framework 3.5 或 4.x 一同提供。大多数 Windows 系统均包含这两个版本。若不可用,工具将回退至 .bat 启动器。

安装


  • 下载MO2_Hardlink_Builder文件夹。
  • 打开您的Mod Organizer 2安装文件夹,并导航至plugins目录。
  • 将整个MO2_Hardlink_Builder文件夹复制到plugins中。
  • 如果你之前安装过这个工具的旧版本,请先从`plugins`文件夹中删除其目录。如果跳过此步骤,MO2将会同时加载两个版本,并显示该工具的两个重复条目。
  • 请重启 Mod Organizer 2。
  • 一个新的图标标记为 MO2 硬链接构建器 将出现在MO2工具栏或“工具”菜单下。

使用方法
第 0 步 — 在使用第 4 版之前,请先清理当前的独立构建


版本4采用了新的架构,不建议直接复用旧版本生成的独立构建。如果您已使用旧版本构建过独立应用,请先清理该构建,或选择全新的专用目标文件夹。首次进行版本4构建将创建后续增量重建所需的新元数据和基线。

步骤1 — 选择配置文件

打开插件。工具会自动加载你当前活跃的MO2配置。你可以使用下拉菜单切换配置,或点击 浏览 指向任意配置文件文件夹(包括当前MO2安装目录之外的配置文件)。

步骤2 — 选择目标文件夹

输入或拖放用于创建独立构建的文件夹。请使用专用文件夹——工具在清理时会清空整个目标目录,任何不属于先前独立构建的内容都将被删除。目标位置不能是你的Steam文件夹、游戏安装文件夹或MO2文件夹。出于安全考虑,这些位置已被硬性禁止。

如果目标位置与mod所在驱动器不同,将出现警告横幅,构建将使用复制模式(占用完整磁盘空间)。

第3步 — 建造

点击 构建独立版。该工具执行四个阶段:
  • 清理 — 清空目标文件夹(在收集完游戏生成的文件后)。
  • 扫描中 — 读取你当前启用的模组列表,并将每个文件映射到其来源模组或基础游戏。
  • 部署 — 将文件部署为硬链接(跨驱动器时则复制)。先执行删除,再创建链接。
  • 验证 — 确认所有已部署的文件均存在且完好无损。

完成后,standalone_metadata/build_report.html 会自动打开(或者你也可以通过 显示构建报告 按钮)。

第4步 — 启动游戏

前往您的独立目标文件夹。使用包装器EXE(例如skse64_loader.exe)运行游戏。原始加载器已重命名为_skse64_loader_original.exe,包装器取而代之。此重命名仅发生在独立构建文件夹内——您的原始游戏安装和MO2设置不会被修改。

启动器会在游戏启动前注入你的MO2配置文件的INI和加载顺序文件,并在游戏退出时将新存档同步回你的MO2配置文件。


部署模式
  • 最佳 — 所有源文件与目标文件位于同一驱动器: 硬链接模式 — 零额外磁盘空间。
  • 部分 — 仅同一驱动器上的模组: 模组为硬链接,基础游戏为复制。
  • 部分 — 同一驱动器上仅有基础游戏: 基础游戏为硬链接,模组为复制。
  • 最差——全部位于不同驱动器: 完整复制模式 — 将占用全部磁盘空间。

管理存档


存档管理是全自动的。C# 启动器处理所有同步——正常游玩无需任何手动操作。

  • 每次会话开始前: 来自您的MO2配置的存档已复制到Windows文档的存档文件夹中,以便游戏能够找到它们。
  • 每场会话结束后: 新存档通过暂存与完整性校验流程,从Windows文档的存档目录同步回你的MO2配置文件,随后从文档目录中移除。你的MO2配置文件始终是各个会话之间的持久存储。
  • 重建前: 点击“清理独立存档”后,Windows“文档”文件夹中存在的所有存档都会被移入你的MO2配置文件,之后该文件夹才会被清空。

如果在同步期间发生文件名冲突,现有文件将移动到目标存档目录内带时间戳的隔离文件夹中。该工具绝不会永久删除存档文件。

正在验证您的构建


检查你的构建是否正确,最快的方法是:
  • 在浏览器中打开standalone_metadata/build_report.html。顶部的验证结果框应显示 验证通过 背景为绿色。
  • 从独立文件夹启动游戏,加载存档,游玩一分钟,然后保存并退出。
  • 游戏退出后,请检查MO2配置文件的saves/文件夹——新存档应已被启动器自动同步到该位置。
  • 检查 %USERPROFILE%\Documents\My Games\<Game>\ — 会话期间的INI文件来自你的MO2配置文件。退出后,它们会被恢复为原始值。游戏内任何设置更改(音量、按键绑定)都会保存在启动器复制到此处的INI文件中,并在下次构建时反映到你的MO2配置文件的INI中。
  • 如果使用SKSE,请查看%LOCALAPPDATA%\<游戏>\SKSE\ — 日志应显示正确的模组列表已生效,确认启动器的plugins.txt注入已正常工作。

故障排除


如果构建看起来有问题,请检查 standalone_metadata/ 目录中的文件:
  • build_report.html — 交互式报告,显示每个文件、其来源及部署方式。使用搜索和筛选选项查找特定模组或文件类型。
  • 执行报告.json — 原始部署日志。显示每个文件所使用的精确方法(硬链接、复制、复制回退)及任何错误。
  • mapping_manifest.json — 工具在部署前构建的完整文件到源映射。用于确认某个特定文件本应被部署,以及它预期来自何处。

如果游戏在启动时崩溃,请查看独立版根目录下的wrapper_log.txt。这是C#启动器自身的日志,记录了存档同步和环境设置步骤。

如果启动器异常退出,且你的Windows“文档”或AppData文件似乎仍处于注入状态,请在 `%USERPROFILE%\Documents\My Games\<game>\` 和 `%LOCALAPPDATA%\<game>\` 中查找以 `.bak_standalone` 结尾的文件。如果存在,请将当前已注入的文件重命名移开,并将 `.bak_standalone` 文件恢复为原始名称(例如,将 `Skyrim.ini.bak_standalone` 重命名为 `Skyrim.ini`)。对AppData中的 `plugins.txt.bak_standalone` 和 `loadorder.txt.bak_standalone` 执行相同操作。在再次启动前,请运行构建验证步骤。

standalone_metadata 文件夹


此文件夹是构建版本的身份标识,请勿删除。
  • standalone_metadata.json - 源路径、游戏名称、配置文件名称、构建设置。工具需要这些信息来将此文件夹识别为有效的独立文件夹。
  • build_report.html - 构建后交互式报告
  • mapping_manifest.json 验证引擎与增量重建逻辑使用的文件到源映射。
  • execution_report.json - 原始部署执行日志。
没有 `standalone_metadata.json` 文件,出于安全考虑,清理按钮将拒绝对该文件夹执行操作。


已知不兼容项


带有基于DLL完整性检查的模组(例如:改进相机) 一些基于DLL的模组(例如“改进摄像机”Improved Camera)可能会在检查可执行文件路径或检测到启动器封装时拒绝独立环境。这是其完整性逻辑产生的误报,而非文件缺失问题。对于硬编码此行为的模组,没有可靠的变通方法。

云同步应用(Dropbox、OneDrive、Google Drive) 这些服务可以重新映射您的“文档”或“AppData”文件夹的物理位置。如果它们改变了C#启动器所期望的路径,备份-注入-恢复流程可能无法正常运行。在运行独立版本之前,请禁用游戏存档和设置文件夹的云同步功能。尤其是OneDrive,在Windows上已知有拦截“文档”路径的倾向。

GOG及其他非Steam版本 C# 启动器是围绕 Steam 版天际及其注册表结构设计的。GOG 及其他非 Steam 版本不受支持,我也没有计划为它们添加支持。我的主要测试环境是 Steam,我不想为无法测试的平台维护代码路径。

重要说明


  • 该版本为静态快照。 在MO2中添加模组、更改加载顺序或编辑INI不会更新独立版本。您必须再次点击“构建独立版本”才能应用任何更改。
  • 硬链接需要NTFS格式且位于同一驱动器。 如果你在构建后将MO2模组文件夹移动到其他驱动器,独立版中的硬链接仍会指向原始位置。除非你想更改启用的模组,否则无需更新构建。
  • 不要删除standalone_metadata。 这个文件夹是工具识别该目录为有效独立构建的关键。缺少它,安全检查将无法运行,清理操作也会被阻止。
  • 请先在MO2中进行测试。 独立版本的好坏取决于你的MO2配置。如果游戏无法通过MO2正常运行,那么从独立版本运行也不会顺畅。
  • 通过MO2运行该插件。 该工具通过MO2的内部API读取您的模组列表和个人配置。若以独立Python脚本方式运行,它将无法正常工作。

上古卷轴5:天际 特别版 的热门 MOD

探索适用于 上古卷轴5:天际 特别版 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

2025-12-16 11:53:50

前置必备Mod

修改与Mod必备前置工具

ModOrganizerTeam2024-08-04 16:31:44

Mod Organizer(MO)是一个用于管理任意大小的Mod集合的工具。它是专门为那些喜欢尝试mods的人设计的,因此需要一种简单可靠的方法来安装和卸载它们。

天空用户界面

schlangster2017-10-04 05:03:26

界面优雅,对电脑友好,并具有许多高级功能。

非官方《上古卷轴5:天际》特别版补丁 - USSEP

Arthmoor2025-09-01 07:56:09

一款针对《上古卷轴V:天际特别版》的综合性错误修复模组。非官方天际特别版补丁(简称USSEP)的目标是最终修复《天际特别版》中所有尚未被官方修复的错误。

静态网格改进模组 - SMIM

Brumbek2018-07-05 02:28:26

这是一个旨在大幅提升《上古卷轴5:天际》中无数静态3D模型外观的大型项目。简而言之,我希望通过这个项目让天际的建筑、杂物、家具和景观更加美观。

SKSE插件的地址库

meh3212024-02-14 09:19:54

包含头文件和数据库,以便轻松实现 SKSE DLL 插件的版本独立性。

比赛菜单

expired69782024-01-27 03:38:17

角色创建菜单全面改版,新增多种自定义功能,例如多种RGBA战纹、身体彩绘、手部彩绘和脚部彩绘。(需要SKSE)

Fores Skyrim SE-FNIS SE中的新闲置

NexusModsCaretaker2020-02-19 01:47:03

Skyrim没有可能的自定义动画?错误的。FNIS行为允许添加不同类型的动画到游戏:闲置/姿势,顺序,家具,配对,杀戮,生物,等等。

使用 Xmod 解锁 上古卷轴5:天际 特别版 的全部潜力 — 今天就探索这些顶级 MOD!