Compatibilità

Documentazione della versione v0.1.0-beta.3Vedi il sorgente su GitHub

Traduzione della pagina originale in inglese di OmsiLaunch 0.1.0-beta3. La pagina inglese è normativa: in caso di differenze prevalgono la pagina inglese e il codice.

OmsiLaunch pilota OMSI applicando patch a indirizzi profilati all'interno di un build eseguibile esatto. Questa pagina indica quali build di OMSI sono supportati, che cosa accade con qualsiasi altro build e i requisiti di sistema operativo e di runtime dell'host e del plugin. Fonti: src/OmsiLaunch.Builds.Omsi23004/Profile.cs, src/OmsiLaunch.Core/SessionPlanner.cs, src/OmsiLaunch.Process/RuntimePlatform.cs, src/OmsiLaunch.Plugin/CurrentDnneAdapter.cs e i file di progetto.

Build di OMSI supportati#

Esiste esattamente un profilo di build, Omsi23004_692EBFBF (famiglia OMSI_2_3_004_COMMON). Accetta due eseguibili in base allo SHA-256 esatto:

VarianteSHA-256 di Omsi.exeDimensioneVersione file PE / prodottoStato
Eseguibile profilato (ALTERNATE_LAA)692EBFBF2CD32FAB05A8B934E52C2BE14594E939882F3DBF2BA4E2B66CCC62438,503,440 byte2.2.032 / 2.3.004STABLE_BETA; ogni validazione a runtime della matrice è stata eseguita su questo file
Steam LAA (STEAM_LAA)7DAB063D1F62E73B3A2C7A6AC1921D7EDF5E5DB0FBC731481D117EEC8DE7D759non verificataAccettato tramite allow-list perché condivide la struttura nativa profilata e differisce solo nelle intestazioni dell'eseguibile; non validato a runtime (profiles riporta runtime_validated=false, validation_status=pending_beta_field_validation). PARTIAL.

OmsiLaunch.exe profiles stampa questa tabella come JSON. I numeri di versione non vengono usati per l'accettazione: contano solo lo SHA-256 (e, per l'eseguibile principale, la dimensione esatta). Non è supportato nessun altro build di OMSI 2, nessun eseguibile modificato con patch e nessuna copia con patch 4 GB con un hash diverso.

Che cosa accade con un build sconosciuto#

FaseVerificaEsito
Pianificazione (PlanSessionAsync, /plan, /validate)Omsi23004.Profile.MatchesExecutable(<root>\Omsi.exe)La capability richiesta omsi.profile.OMSI23004 è UNAVAILABLE; diagnostica OL_E_UNSUPPORTED_BUILD; SessionPlan.IsRunnable=false. Uscita CLI 1 per un avvio, oppure 3 (UnsupportedProfile) quando l'errore sfugge come eccezione.
Avvio (StartSessionAsync)La spec viene ripianificata e l'hash di Omsi.exe viene ricalcolatoUn piano non più eseguibile (per esempio perché l'eseguibile è cambiato dopo la pianificazione, o perché un chiamante ha modificato IsRunnable) viene rifiutato con OL_E_PLAN_NOT_RUNNABLE; non viene aperta alcuna transazione e non viene avviato alcun processo.
Nel processo (PluginRuntime.Start)NativeServices.ValidateBuild richiede che il BuildProfileId dell'handoff sia Omsi23004_692EBFBF e che NativeValidateBuild() abbia esito positivo sull'immagine in esecuzioneTelemetria plugin.build.invalid; l'host fa fallire la sessione con OL_E_BUILD_VALIDATION_FAILED; nessun hook nativo viene armato; OMSI viene terminato e la transazione ripristinata.

Poiché l'hash dell'eseguibile viene confrontato con le dimensioni e i byte delle variabili globali profilate, la verifica nel processo è l'ultima linea di difesa contro una copia che ha superato la verifica dell'hash ma la cui immagine differisce al momento del caricamento. Non esiste un profilo di ripiego né una corrispondenza euristica.

Sistema operativo e architettura#

CurrentWindowsX64Platform.Detect calcola RuntimePlatformInfo. La piattaforma corrente è supportata solo quando sono soddisfatte tutte le condizioni seguenti:

RequisitoVerificaErrore in caso di violazione
WindowsOperatingSystem.IsWindows()OL_E_UNSUPPORTED_OPERATING_SYSTEM
Windows 10 o successivoEnvironment.OSVersion.Version.Major >= 10 (Windows 10, Windows 11, Server 2016+)OL_E_PLATFORM_CAPABILITY_MISSING
Windows a 64 bit e processo host a 64 bitOSArchitecture == X64 e ProcessArchitecture == X64OL_E_UNSUPPORTED_OS_ARCHITECTURE
Installazione scrivibileLa directory radice esiste, non è di sola lettura e contiene plugins\OL_E_INSTALLATION_NOT_WRITABLE

RuntimePlatformInfo riporta inoltre OmsiArchitecture e PluginArchitecture come X86 (OMSI è un processo a 32 bit; la chiusura del plugin è x86 e viene eseguita sotto WOW64), LegacyPlatform=false e Wow64Available. Windows ARM64 non è supportato, anche dove esiste l'emulazione x64, perché il processo host deve essere esso stesso x64.

Requisiti .NET#

ComponenteRuntimeNote
Controller (OmsiLaunch.exe, OmsiLaunchW.exe -> OmsiLaunch.Controller.dll).NET 6, x64Il bootstrapper nativo individua il runtime tramite hostfxr attraverso il nethost.dll incluso nel pacchetto. Un runtime mancante viene segnalato dallo shim (codici di uscita 100-106; vedere CLI e codici di uscita).
Chiusura del plugin (plugins\OmsiLaunch.Plugin.dll tramite OmsiLaunch.PluginNE.dll).NET 6, x86 (net6.0-windows, win-x86), ospitato da DNNE 2.0.6 all'interno di Omsi.exeRichiede che sul computer sia installato il runtime .NET 6 Desktop/Core x86; il solo runtime a 64 bit non è sufficiente per il plugin.
Bridge nativo (plugins\OmsiLaunch.Native.x86.dll)nativo x86Caricato solo da plugins\ (vedere plugin permanente).

Piattaforme legacy#

Windows 7, Windows 8.x, Windows XP e gli altri sistemi NT 6 e precedenti sono al di fuori dell'attuale perimetro di supporto. RuntimePlatformInfo.LegacyPlatform è sempre false e non esiste alcun adattatore legacy; il campo e il punto di separazione IPluginNativeServices esistono solo affinché un futuro adattatore legacy possa essere aggiunto senza modificare l'API pubblica (vedere docs/adr/ADR-0010-Legacy-Portability-Boundary.md). Nulla in questa release viene eseguito su tali sistemi.

Note su Steam e Large Address Aware#

  • La distribuzione Steam di OMSI 2.3.004 con l'intestazione LAA (7DAB063D...) è inclusa nell'allow-list perché i suoi indirizzi profilati sono identici a quelli dell'eseguibile principale. Finché nella matrice non viene registrata una sessione di validazione sul campo, considerare ogni capability su quel file come PARTIAL.
  • Steam avvia OMSI autonomamente; una sessione deve essere avviata tramite OmsiLaunch.exe affinché esista l'handoff. Se OMSI viene avviato da Steam, il plugin permanente resta inerte (nessun handoff, nessun hook).
  • L'applicazione di un diverso patcher LAA a Omsi.exe ne modifica l'hash e lo rende un build sconosciuto.