Compatibilidad
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:
| Variante | SHA-256 de Omsi.exe | Tamaño | Versión de archivo / producto PE | Estado |
|---|---|---|---|---|
Ejecutable perfilado (ALTERNATE_LAA) | 692EBFBF2CD32FAB05A8B934E52C2BE14594E939882F3DBF2BA4E2B66CCC6243 | 8,503,440 bytes | 2.2.032 / 2.3.004 | STABLE_BETA; todas las validaciones en runtime de la matriz se ejecutaron sobre este archivo |
Steam LAA (STEAM_LAA) | 7DAB063D1F62E73B3A2C7A6AC1921D7EDF5E5DB0FBC731481D117EEC8DE7D759 | no se comprueba | Aceptado 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#
| Etapa | Comprobación | Resultado |
|---|---|---|
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.exe | Un 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ón | Telemetrí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:
| Requisito | Comprobación | Error cuando no se cumple |
|---|---|---|
| Windows | OperatingSystem.IsWindows() | OL_E_UNSUPPORTED_OPERATING_SYSTEM |
| Windows 10 o posterior | Environment.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 bits | OSArchitecture == X64 y ProcessArchitecture == X64 | OL_E_UNSUPPORTED_OS_ARCHITECTURE |
| Instalación con permiso de escritura | El 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#
| Componente | Runtime | Notas |
|---|---|---|
Controlador (OmsiLaunch.exe, OmsiLaunchW.exe -> OmsiLaunch.Controller.dll) | .NET 6, x64 | El 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.exe | Requiere 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 nativo | Se 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 comoPARTIAL. - Steam inicia OMSI por su cuenta; una sesión debe iniciarse mediante
OmsiLaunch.exepara 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.execambia su hash y lo convierte en un build desconocido.