Instalação
Tradução da página original em inglês do OmsiLaunch 0.1.0-beta3. A página em inglês é a referência normativa: em caso de divergência, prevalecem a página em inglês e o código.
Esta página explica o que o OmsiLaunch 0.1.0-beta3 requer, que build do OMSI suporta, como o pacote de lançamento é instalado numa raiz de instalação do OMSI e como verificar a instalação com /version e /plan antes de iniciar uma sessão. O conteúdo do pacote é especificado em empacotamento; o primeiro lançamento é descrito em primeira sessão.
Requisitos#
| Requisito | Detalhe | Falha quando em falta |
|---|---|---|
| Windows 10 ou posterior, 64 bits | O controlador verifica Environment.OSVersion.Version.Major >= 10, um sistema operativo x64 e um processo x64. | Plano não executável com OL_E_UNSUPPORTED_OPERATING_SYSTEM (ou OL_E_UNSUPPORTED_OS_ARCHITECTURE), saída 1/3. |
| .NET 6 Desktop Runtime, x64 | OmsiLaunch.Controller.runtimeconfig.json requer Microsoft.NETCore.App 6.0 e Microsoft.WindowsDesktop.App 6.0 (o indicador da área de notificação usa Windows Forms). Os shims localizam-no com nethost.dll. | OmsiLaunch.exe termina com o código de shim 102..106 antes de qualquer saída; OmsiLaunchW.exe mostra OmsiLaunch could not start the .NET host (code N). |
| .NET 6 Runtime, x86 | plugins\OmsiLaunch.Plugin.runtimeconfig.json requer Microsoft.NETCore.App 6.0 para x86, porque o plugin é executado dentro do Omsi.exe de 32 bits. O pacote x86 do .NET 6 Desktop Runtime também satisfaz este requisito. | O plugin não arranca dentro do OMSI; a sessão não chega a Running (OL_E_PLUGIN_NOT_LOADED / OL_E_STARTUP_TIMEOUT), saída 1, ficheiros restaurados. |
| Build do OMSI 2 suportada | Omsi.exe com SHA-256 692EBFBF2CD32FAB05A8B934E52C2BE14594E939882F3DBF2BA4E2B66CCC6243 (8 503 440 bytes), perfil Omsi23004_692EBFBF, validado em runtime. O executável Steam LAA 7DAB063D1F62E73B3A2C7A6AC1921D7EDF5E5DB0FBC731481D117EEC8DE7D759 é aceite, mas o seu estado de validação é pending_beta_field_validation. O hash é novamente verificado em cada plano e em cada início. | OL_E_UNSUPPORTED_BUILD; plano não executável, saída 1. Ver compatibilidade. |
| Raiz de instalação com permissão de escrita | A transação escreve .omsilaunch\ e overlays em GUI\, Texture\ e options.cfg, e restaura-os; a raiz tem de ter permissão de escrita para o utilizador atual (evitar Program Files sem as permissões adequadas). | OL_E_INSTALLATION_NOT_WRITABLE, saída 1. |
| Um utilizador, um proprietário por instalação | O lease da instalação Local\OmsiLaunch.Installation.<sha256(root)> e o pipe de controlo são por sessão de início de sessão (logon) do Windows. | OL_E_INSTALLATION_BUSY / OL_E_SESSION_ALREADY_ACTIVE, saída 7. |
Ambos os runtimes são transferências separadas a partir da Microsoft; deve instalar-se o x64 Desktop Runtime e o x86 Runtime (ou o x86 Desktop Runtime) do .NET 6. Não é necessário nenhum outro componente. Nenhum dado sai da máquina.
Confirmar a build do OMSI#
Substituir <OMSI_PATH> pelo diretório do OMSI 2 (por exemplo C:\OMSI 2).
Get-FileHash '<OMSI_PATH>\Omsi.exe' -Algorithm SHA256
(Get-Item '<OMSI_PATH>\Omsi.exe').LengthO hash tem de ser um dos dois indicados acima. Após a instalação, OmsiLaunch.exe profiles imprime a mesma lista com o respetivo estado de validação.
Instalar o pacote#
- Transferir
OmsiLaunch-0.1.0-beta3.zipeOmsiLaunch-0.1.0-beta3.zip.sha256; verificar a soma de controlo (Get-FileHashtem de ser igual ao valor no ficheiro.sha256). - Extrair o ZIP diretamente para a raiz de instalação do OMSI (a pasta que contém
Omsi.exe). O ZIP está organizado para essa raiz:OmsiLaunch.exe,OmsiLaunchW.exe,nethost.dll,OmsiLaunch.Controller.dlle os restantes assemblies do controladorOmsiLaunch.*.dll,YamlDotNet.dll,release-manifest.json,LICENSE,THIRD-PARTY-NOTICES.mdna raiz;- o conjunto fechado do plugin permanente
plugins\OmsiLaunch.*(9 ficheiros) ao lado dos plugins já existentes, que nunca são tocados; .omsilaunch\com os recursos do ecrã de abertura (splash screen), a documentação offline e os exemplos.
- Manter
release-manifest.jsonao lado deOmsiLaunch.exe. É este ficheiro que permite a cada início verificar os ficheiros do plugin instalados por SHA-256 (plugin.integrity.reference = manifest); sem ele, apenas a presença e a coerência interna são verificadas (plugin.integrity.reference = self). - Não mover nem mudar o nome de nada em
plugins\OmsiLaunch.*e não colocar binários do plugin em.omsilaunch\.
A atualização é a mesma operação: extrair o novo pacote por cima dos ficheiros antigos enquanto nenhuma sessão está a executar e nenhuma recuperação está pendente (OmsiLaunch.exe /recovery-status). Os hashes do plugin e o manifesto têm sempre de vir do mesmo pacote (caso contrário, OL_E_PERMANENT_PLUGIN_HASH_MISMATCH).
Verificar#
Executar a partir da raiz do OMSI (o argumento de instalação tem como predefinição o diretório que contém OmsiLaunch.exe):
OmsiLaunch.exe /versionEsperado: "version": "0.1.0-beta3", "protocol_version": "0.1", "supported_family": "OMSI_2_3_004_COMMON"; saída 0. A saída 102..106 significa que o runtime x64 do .NET 6 está em falta ou que o pacote está incompleto.
OmsiLaunch.exe profiles
OmsiLaunch.exe /list:MapsEsperado: os hashes suportados e, em seguida, os mapas encontrados nesta instalação; saída 0.
OmsiLaunch.exe /new /map:maps\Grundorf\global.cfg /entrypoint-index:1 /planEsperado: Plan: READY profile=Omsi23004_692EBFBF e saída 0 (pode usar-se qualquer identidade de mapa de /list:Maps; o índice do ponto de entrada tem de ser um índice apresentado desse mapa, ver /list:Entrypoints /map:<identity>). Com --json, o plano lista TouchedFiles (os overlays do splash), PlannedMutations, RequiredCapabilities (todas STATICALLY_VALIDATED), Diagnostics (incluindo plugin.integrity.reference) e IsRunnable. Plan: NOT RUNNABLE com saída 1 indica o motivo em Diagnostics (OL_E_UNSUPPORTED_BUILD, OL_E_MAP_NOT_FOUND, OL_E_ENTRYPOINT_REQUIRED, OL_E_RUNTIME_ARTIFACT_MISSING, ...). O planeamento nunca inicia o OMSI e nunca escreve na instalação.
Onde ficam as coisas depois#
| Caminho | Conteúdo |
|---|---|
<root>\.omsilaunch\diagnostics\<sessionId>-host.log | Trace do host de cada sessão (são mantidas as 50 sessões mais recentes) |
<root>\.omsilaunch\diagnostics\tray-host.log | Registo (log) do indicador da área de notificação |
<root>\.omsilaunch\journal.json, backup\<sessionId>\ | Presentes apenas enquanto uma transação está pendente; ver transações e recuperação |
<root>\.omsilaunch\session-profiles\<id>\profile.yaml | Os perfis de sessão predefinidos do utilizador; ver perfis de sessão |
<root>\.omsilaunch\assets\splash\ | Recursos de splash geridos |
<root>\.omsilaunch\docs\ | Esta documentação, offline (começar em README.md; a referência da CLI é reference\cli.md) |
<root>\.omsilaunch\examples\ | LaunchSpec e perfil de sessão de exemplo |
Desinstalar#
Parar qualquer sessão, executar OmsiLaunch.exe /recovery-status (e /recover se houver algo pendente) e, em seguida, eliminar os ficheiros do produto na raiz, plugins\OmsiLaunch.* e .omsilaunch\. Detalhes em empacotamento.