Установка
Перевод исходной страницы на английском языке для OmsiLaunch 0.1.0-beta3. Нормативной является английская страница: при расхождениях приоритет имеют английская страница и код.
На этой странице описано, что требуется для OmsiLaunch 0.1.0-beta3, какую сборку OMSI он поддерживает, как релизный пакет устанавливается в корневой каталог установки OMSI и как проверить установку с помощью /version и /plan перед запуском сеанса. Состав пакета описан в разделе упаковка; первый запуск описан на странице первый сеанс.
Требования#
| Требование | Подробности | Что происходит при невыполнении |
|---|---|---|
| Windows 10 или новее, 64-разрядная | Контроллер проверяет Environment.OSVersion.Version.Major >= 10, 64-разрядную (x64) операционную систему и x64-процесс. | План неисполним с OL_E_UNSUPPORTED_OPERATING_SYSTEM (или OL_E_UNSUPPORTED_OS_ARCHITECTURE), код выхода 1/3. |
| .NET 6 Desktop Runtime, x64 | OmsiLaunch.Controller.runtimeconfig.json требует Microsoft.NETCore.App 6.0 и Microsoft.WindowsDesktop.App 6.0 (индикатор в трее использует Windows Forms). Shim-загрузчики находят среду выполнения с помощью nethost.dll. | OmsiLaunch.exe завершается с кодом shim-загрузчика 102..106 до какого-либо вывода; OmsiLaunchW.exe показывает OmsiLaunch could not start the .NET host (code N). |
| .NET 6 Runtime, x86 | plugins\OmsiLaunch.Plugin.runtimeconfig.json требует Microsoft.NETCore.App 6.0 для x86, потому что плагин работает внутри 32-разрядного Omsi.exe. Это требование также удовлетворяет пакет x86 .NET 6 Desktop Runtime. | Плагин не запускается внутри OMSI; сеанс не достигает состояния Running (OL_E_PLUGIN_NOT_LOADED / OL_E_STARTUP_TIMEOUT), код выхода 1, файлы восстановлены. |
| Поддерживаемая сборка OMSI 2 | Omsi.exe с SHA-256 692EBFBF2CD32FAB05A8B934E52C2BE14594E939882F3DBF2BA4E2B66CCC6243 (8 503 440 байт), профиль Omsi23004_692EBFBF, проверено в runtime. Исполняемый файл Steam LAA 7DAB063D1F62E73B3A2C7A6AC1921D7EDF5E5DB0FBC731481D117EEC8DE7D759 принимается, но его статус проверки — pending_beta_field_validation. Хеш повторно проверяется при каждом планировании и при каждом запуске. | OL_E_UNSUPPORTED_BUILD; план неисполним, код выхода 1. См. совместимость. |
| Корневой каталог установки доступен для записи | Транзакция записывает .omsilaunch\, overlay (временная замена файла на время сеанса) в GUI\, Texture\ и options.cfg и затем восстанавливает их; корневой каталог должен быть доступен для записи текущему пользователю (избегайте Program Files без соответствующих прав). | OL_E_INSTALLATION_NOT_WRITABLE, код выхода 1. |
| Один пользователь, один владелец на установку | Аренда установки (lease) Local\OmsiLaunch.Installation.<sha256(root)> и управляющий канал (pipe) действуют в пределах сеанса входа в систему. | OL_E_INSTALLATION_BUSY / OL_E_SESSION_ALREADY_ACTIVE, код выхода 7. |
Обе среды выполнения загружаются отдельно с сайта Microsoft; установите x64 Desktop Runtime и x86 Runtime (или x86 Desktop Runtime) для .NET 6. Никакие другие компоненты не требуются. Никакие данные не покидают компьютер.
Проверка сборки OMSI#
Замените <OMSI_PATH> на свой каталог OMSI 2 (например, C:\OMSI 2).
Get-FileHash '<OMSI_PATH>\Omsi.exe' -Algorithm SHA256
(Get-Item '<OMSI_PATH>\Omsi.exe').LengthХеш должен совпадать с одним из двух, приведённых выше. После установки OmsiLaunch.exe profiles выводит тот же список вместе со статусом проверки.
Установка пакета#
- Загрузите
OmsiLaunch-0.1.0-beta3.zipиOmsiLaunch-0.1.0-beta3.zip.sha256; проверьте контрольную сумму (результатGet-FileHashдолжен совпадать со значением в файле.sha256). - Распакуйте архив непосредственно в корневой каталог установки OMSI (каталог, в котором находится
Omsi.exe). Структура архива рассчитана на этот корневой каталог:OmsiLaunch.exe,OmsiLaunchW.exe,nethost.dll,OmsiLaunch.Controller.dllи остальные сборки контроллераOmsiLaunch.*.dll,YamlDotNet.dll,release-manifest.json,LICENSE,THIRD-PARTY-NOTICES.md— в корне;- замыкание постоянного плагина (набор его файлов)
plugins\OmsiLaunch.*(9 файлов) — рядом с уже установленными плагинами, которые никогда не затрагиваются; .omsilaunch\с ресурсами заставки (splash), офлайн-документацией и примерами.
- Оставьте
release-manifest.jsonрядом сOmsiLaunch.exe. Именно он позволяет при каждом запуске проверять установленные файлы плагина по SHA-256 (plugin.integrity.reference = manifest); без него проверяются только наличие файлов и их внутренняя согласованность (plugin.integrity.reference = self). - Не перемещайте и не переименовывайте ничего в
plugins\OmsiLaunch.*и не размещайте двоичные файлы плагина в.omsilaunch\.
Обновление выполняется так же: распакуйте новый пакет поверх старых файлов, пока ни один сеанс не запущен и нет незавершённого восстановления после сбоя (OmsiLaunch.exe /recovery-status). Хеши плагина и манифест всегда должны быть из одного и того же пакета (иначе OL_E_PERMANENT_PLUGIN_HASH_MISMATCH).
Проверка#
Запустите из корневого каталога OMSI (аргумент установки по умолчанию равен каталогу, в котором находится OmsiLaunch.exe):
OmsiLaunch.exe /versionОжидаемый результат: "version": "0.1.0-beta3", "protocol_version": "0.1", "supported_family": "OMSI_2_3_004_COMMON"; код выхода 0. Код выхода 102..106 означает, что отсутствует x64-среда выполнения .NET 6 или пакет неполон.
OmsiLaunch.exe profiles
OmsiLaunch.exe /list:MapsОжидаемый результат: поддерживаемые хеши, затем карты, обнаруженные в этой установке; код выхода 0.
OmsiLaunch.exe /new /map:maps\Grundorf\global.cfg /entrypoint-index:1 /planОжидаемый результат: Plan: READY profile=Omsi23004_692EBFBF и код выхода 0 (можно использовать любой идентификатор карты из /list:Maps; индекс точки входа должен быть одним из индексов, которые предоставляет эта карта, см. /list:Entrypoints /map:<identity>). С --json план содержит TouchedFiles (overlay заставки), PlannedMutations, RequiredCapabilities (все со статусом STATICALLY_VALIDATED), Diagnostics (включая plugin.integrity.reference) и IsRunnable. При Plan: NOT RUNNABLE с кодом выхода 1 причина указана в Diagnostics (OL_E_UNSUPPORTED_BUILD, OL_E_MAP_NOT_FOUND, OL_E_ENTRYPOINT_REQUIRED, OL_E_RUNTIME_ARTIFACT_MISSING, ...). Планирование никогда не запускает OMSI и никогда не записывает в установку.
Что где находится после установки#
| Путь | Содержимое |
|---|---|
<root>\.omsilaunch\diagnostics\<sessionId>-host.log | Трассировка хоста для каждого сеанса (хранятся 50 последних сеансов) |
<root>\.omsilaunch\diagnostics\tray-host.log | Лог индикатора в трее |
<root>\.omsilaunch\journal.json, backup\<sessionId>\ | Присутствуют только пока есть незавершённая транзакция; см. транзакции и восстановление после сбоя |
<root>\.omsilaunch\session-profiles\<id>\profile.yaml | Ваши предопределённые профили сеанса; см. профили сеанса |
<root>\.omsilaunch\assets\splash\ | Ресурсы управляемой заставки |
<root>\.omsilaunch\docs\ | Эта документация в офлайн-виде (начните с README.md; справочник CLI — reference\cli.md) |
<root>\.omsilaunch\examples\ | Пример LaunchSpec и профиля сеанса |
Удаление#
Остановите все сеансы, выполните OmsiLaunch.exe /recovery-status (и /recover, если есть незавершённое восстановление), затем удалите файлы продукта в корне, plugins\OmsiLaunch.* и .omsilaunch\. Подробности — в разделе упаковка.