Compatibilidad

Documentación de la versión v0.1.0-beta.3Ver código fuente en GitHub

Traducción de la página original en inglés de OmsiLaunch 0.1.0-beta3. La página en inglés es la referencia normativa: si hay diferencias, prevalecen la página en inglés y el código.

OmsiLaunch controla OMSI parcheando direcciones perfiladas dentro de un build exacto del ejecutable. Esta página indica qué builds de OMSI son compatibles, qué sucede con cualquier otro build y cuáles son los requisitos de sistema operativo y de runtime del host y del plugin. Fuentes: src/OmsiLaunch.Builds.Omsi23004/Profile.cs, src/OmsiLaunch.Core/SessionPlanner.cs, src/OmsiLaunch.Process/RuntimePlatform.cs, src/OmsiLaunch.Plugin/CurrentDnneAdapter.cs y los archivos de proyecto.

Builds de OMSI compatibles#

Hay exactamente un perfil de build, Omsi23004_692EBFBF (familia OMSI_2_3_004_COMMON). Acepta dos ejecutables por su SHA-256 exacto:

VarianteSHA-256 de Omsi.exeTamañoVersión de archivo / producto PEEstado
Ejecutable perfilado (ALTERNATE_LAA)692EBFBF2CD32FAB05A8B934E52C2BE14594E939882F3DBF2BA4E2B66CCC62438,503,440 bytes2.2.032 / 2.3.004STABLE_BETA; todas las validaciones en runtime de la matriz se ejecutaron sobre este archivo
Steam LAA (STEAM_LAA)7DAB063D1F62E73B3A2C7A6AC1921D7EDF5E5DB0FBC731481D117EEC8DE7D759no se compruebaAceptado por lista de permitidos porque comparte la disposición nativa perfilada y solo difiere en los encabezados del ejecutable; no validado en runtime (profiles informa runtime_validated=false, validation_status=pending_beta_field_validation). PARTIAL.

OmsiLaunch.exe profiles imprime esta tabla como JSON. Los números de versión no se usan para la aceptación: solo cuentan el SHA-256 (y, para el ejecutable principal, el tamaño exacto). No es compatible ningún otro build de OMSI 2, ningún ejecutable parcheado ni ninguna copia con el parche de 4 GB que tenga un hash distinto.

Qué sucede con un build desconocido#

EtapaComprobaciónResultado
Planificación (PlanSessionAsync, /plan, /validate)Omsi23004.Profile.MatchesExecutable(<root>\Omsi.exe)La capacidad requerida omsi.profile.OMSI23004 es UNAVAILABLE; diagnóstico OL_E_UNSUPPORTED_BUILD; SessionPlan.IsRunnable=false. Salida 1 de la CLI para un inicio, o 3 (UnsupportedProfile) cuando el error escapa como excepción.
Inicio (StartSessionAsync)La especificación se vuelve a planificar y se vuelve a calcular el hash de Omsi.exeUn plan que ya no es ejecutable (por ejemplo, porque el ejecutable cambió después de la planificación o porque un llamador editó IsRunnable) se rechaza con OL_E_PLAN_NOT_RUNNABLE; no se abre ninguna transacción ni se inicia ningún proceso.
Dentro del proceso (PluginRuntime.Start)NativeServices.ValidateBuild exige que el BuildProfileId del handoff sea Omsi23004_692EBFBF y que NativeValidateBuild() tenga éxito contra la imagen en ejecuciónTelemetría plugin.build.invalid; el host hace fallar la sesión con OL_E_BUILD_VALIDATION_FAILED; no se activa ningún hook nativo; se termina OMSI y se restaura la transacción.

Como el hash del ejecutable se compara con los tamaños y bytes de las variables globales perfiladas, la comprobación dentro del proceso es la última línea de defensa contra una copia que superó la comprobación del hash pero cuya imagen difiere en el momento de la carga. No hay perfil de respaldo ni coincidencia heurística.

Sistema operativo y arquitectura#

CurrentWindowsX64Platform.Detect calcula RuntimePlatformInfo. La plataforma actual es compatible solo cuando se cumplen todas las condiciones siguientes:

RequisitoComprobaciónError cuando no se cumple
WindowsOperatingSystem.IsWindows()OL_E_UNSUPPORTED_OPERATING_SYSTEM
Windows 10 o posteriorEnvironment.OSVersion.Version.Major >= 10 (Windows 10, Windows 11, Server 2016+)OL_E_PLATFORM_CAPABILITY_MISSING
Windows de 64 bits y un proceso host de 64 bitsOSArchitecture == X64 y ProcessArchitecture == X64OL_E_UNSUPPORTED_OS_ARCHITECTURE
Instalación con permiso de escrituraEl directorio raíz existe, no es de solo lectura y contiene plugins\OL_E_INSTALLATION_NOT_WRITABLE

RuntimePlatformInfo también informa OmsiArchitecture y PluginArchitecture como X86 (OMSI es un proceso de 32 bits; el conjunto del plugin es x86 y se ejecuta bajo WOW64), LegacyPlatform=false y Wow64Available. Windows ARM64 no es compatible, aunque exista emulación x64, porque el propio proceso host debe ser x64.

Requisitos de .NET#

ComponenteRuntimeNotas
Controlador (OmsiLaunch.exe, OmsiLaunchW.exe -> OmsiLaunch.Controller.dll).NET 6, x64El bootstrapper nativo localiza el runtime a través de hostfxr mediante el nethost.dll incluido en el paquete. El shim informa la ausencia del runtime (códigos de salida 100-106; consulte CLI y códigos de salida).
Conjunto del plugin (plugins\OmsiLaunch.Plugin.dll mediante OmsiLaunch.PluginNE.dll).NET 6, x86 (net6.0-windows, win-x86), alojado por DNNE 2.0.6 dentro de Omsi.exeRequiere que el runtime Desktop/Core de .NET 6 x86 esté instalado en la computadora; el runtime de 64 bits por sí solo no es suficiente para el plugin.
Puente nativo (plugins\OmsiLaunch.Native.x86.dll)x86 nativoSe carga solo desde plugins\ (consulte plugin permanente).

Plataformas heredadas#

Windows 7, Windows 8.x, Windows XP y otros sistemas NT 6 y anteriores quedan fuera del límite de compatibilidad actual. RuntimePlatformInfo.LegacyPlatform siempre es false y no existe ningún adaptador heredado; el campo y el punto de extensión IPluginNativeServices existen solo para que en el futuro se pueda agregar un adaptador heredado sin cambiar la API pública (consulte docs/adr/ADR-0010-Legacy-Portability-Boundary.md). Nada de esta release se ejecuta en esos sistemas.

Notas sobre Steam y Large Address Aware#

  • La distribución de Steam de OMSI 2.3.004 con el encabezado LAA (7DAB063D...) está en la lista de permitidos porque sus direcciones perfiladas son idénticas a las del ejecutable principal. Hasta que se registre en la matriz una sesión de validación de campo, trate cada capacidad sobre ese archivo como PARTIAL.
  • Steam inicia OMSI por su cuenta; una sesión debe iniciarse mediante OmsiLaunch.exe para que exista el handoff. Si se inicia desde Steam, el plugin permanente permanece inactivo (sin handoff, sin hooks).
  • Aplicar un parcheador LAA diferente a Omsi.exe cambia su hash y lo convierte en un build desconocido.