Instalação

Documentação da versão v0.1.0-beta.3Ver código-fonte no GitHub

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#

RequisitoDetalheFalha quando em falta
Windows 10 ou posterior, 64 bitsO 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, x64OmsiLaunch.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, x86plugins\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 suportadaOmsi.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 escritaA 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çãoO 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').Length

O 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#

  1. Transferir OmsiLaunch-0.1.0-beta3.zip e OmsiLaunch-0.1.0-beta3.zip.sha256; verificar a soma de controlo (Get-FileHash tem de ser igual ao valor no ficheiro .sha256).
  2. 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.dll e os restantes assemblies do controlador OmsiLaunch.*.dll, YamlDotNet.dll, release-manifest.json, LICENSE, THIRD-PARTY-NOTICES.md na 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.
  3. Manter release-manifest.json ao lado de OmsiLaunch.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).
  4. 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 /version

Esperado: "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:Maps

Esperado: 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 /plan

Esperado: 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#

CaminhoConteúdo
<root>\.omsilaunch\diagnostics\<sessionId>-host.logTrace do host de cada sessão (são mantidas as 50 sessões mais recentes)
<root>\.omsilaunch\diagnostics\tray-host.logRegisto (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.yamlOs 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.

Seguinte#

Primeira sessão · Referência da CLI · limitações conhecidas