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 é a referência completa e normativa da linha de comandos do OmsiLaunch 0.1.0-beta3: os três executáveis, a gramática de argumentos, a ordem de despacho, todas as palavras de comando, todas as rotas hierárquicas, todas as flags, os envelopes de saída e o comportamento de erro de cada comando. É gerada a partir de tools\OmsiLaunch.Cli\Program.cs (CliProgram.RunAsync, OwnerSession.RunAsync, CliInput.Parse, CliInput.KnownFlags, CliInput.AcceptedNoEffectFlags, CliInput.CommandWordsAccepted, CliInput.HierarchicalRoutes, CliInput.BuildSpecAsync, CliEventWatch), de tools\OmsiLaunch.Cli\LaunchSpecJson.cs e dos dois shims nativos em tools\OmsiLaunch.Bootstrapper. Os resultados de processo estão listados em códigos de saída; os códigos de erro em erros; invocações comentadas em exemplos da CLI.
Bootstrapper nativo (OmsiLaunch.Bootstrapper.cpp): determina o seu próprio diretório, divide a linha de comandos em tokens com CommandLineToArgvW, localiza o hostfxr através de nethost.dll e executa OmsiLaunch.Controller.dll com os mesmos argumentos.
A saída de consola é escrita; o código de saída do processo é o código de saída do controlador gerido, ou um código do shim 100..106 se não tiver sido possível iniciar o host .NET.
OmsiLaunchW.exe
Windows (GUI)
O mesmo shim (OmsiLaunch.WindowsHost.cpp) compilado para o subsistema Windows. Define a variável de ambiente OMSILAUNCH_WINDOWS_HOST=1 antes de iniciar o controlador.
Sem consola: a saída de consola é suprimida, a menos que seja indicado --json (WindowsHost.SuppressConsole), as falhas são apresentadas em caixas de mensagem (WindowsHost.ShowFailure: mensagem, Code: OL_E_... e a indicação See .omsilaunch\diagnostics for details.), e uma falha do shim 100..106 é apresentada como OmsiLaunch could not start the .NET host (code N). Comportamento completo: referência de OmsiLaunchW.exe.
OmsiLaunch.Controller.dll
Gerido (x64, net6.0-windows, Windows Forms)
O próprio controlador. Nunca é invocado diretamente pelos utilizadores; ambos os shims passam o caminho do controlador como primeiro argumento do host, pelo que este nunca aparece na lista pública de argumentos.
Requer o runtime .NET 6 x64 com Microsoft.WindowsDesktop.App; ver instalação.
O nethost.dll tem de estar junto dos shims. Os próprios shims não leem nenhum argumento; todos os argumentos chegam inalterados a CliInput.Parse, pelo que OmsiLaunch.exe e OmsiLaunchW.exe aceitam exatamente a mesma sintaxe.
Uma flag. A chave não distingue maiúsculas de minúsculas; o valor é tudo o que vem depois do primeiro :. Chaves desconhecidas falham com OL_E_INVALID_ARGUMENT (Unknown argument: ...), saída 2.
--key=value
Um argumento de runtime para a operação de runtime selecionada (por exemplo --handle=rv-000001). Qualquer token -- que contenha = é um argumento de runtime, nunca uma flag.
--json, /json
Saída estruturada (ver Formatos de saída). --json é o único token -- sem = com significado; é interpretado como a flag /json.
palavra simples
Se ainda não tiver sido vista nenhuma palavra de comando e a palavra for uma das palavras de comando, torna-se o comando. Uma vez presente uma palavra de comando, todas as palavras simples seguintes são palavras de comando (a rota). Caso contrário, a primeira palavra simples é a raiz da instalação e qualquer palavra simples posterior é acrescentada à rota.
Consequências: uma rota hierárquica (time get) não pode ser combinada com um argumento de instalação colocado depois dela (time get D:\OMSI é a rota desconhecida time get d:\omsi, saída 2). D:\OMSI time get é aceite, mas é modo proprietário (é iniciada uma nova sessão e a operação é executada uma vez dentro dela). Os erros de interpretação (ArgumentException, FormatException, InvalidDataException, OverflowException) e os erros de perfil de sessão (SessionProfileException) são comunicados antes de qualquer execução, sempre com saída 2.
Um argumento de instalação explícito, sob a forma de palavra simples, prevalece sobre RootPath num ficheiro /spec (CliInput.BuildSpecAsync).
. significa o diretório que contém o executável (AppContext.BaseDirectory), nunca o diretório de trabalho do chamador (CliInput.ResolveInstallationRoot). Um pacote portátil depende disto.
Quando o argumento é omitido, as operações em modo proprietário (/new, /saved, /spec, /list, /recovery-status, /recover) também usam o diretório do executável. O caminho é normalizado com Path.GetFullPath.
Os comandos em modo cliente nunca recebem um argumento de instalação: dirigem-se ao endpoint de controlo local da instalação onde se encontra o executável (AppContext.BaseDirectory). Ver controlo local.
Proprietário: o processo que planeia, inicia, supervisiona e restaura uma sessão (OwnerSession.RunAsync). Detém o lease da instalação (Local\OmsiLaunch.Installation.<sha256(root)>) e a transação de configuração, expõe o endpoint de controlo local enquanto a sessão está ativa e mostra o ícone da área de notificação. Exatamente um proprietário por instalação: se um proprietário já responder a session.status no endpoint de controlo, um segundo lançamento falha com OL_E_SESSION_ALREADY_ACTIVE (saída 7).
Cliente: qualquer invocação sem argumento de instalação que envie session status, session stop, events read, events watch ou uma operação de runtime. É reencaminhada pelo pipe de controlo local; sem proprietário, falha com OL_E_NO_ACTIVE_SESSION (saída 4).
/silent (quando ainda não está a ser executado sob OmsiLaunchW.exe): iniciar OmsiLaunchW.exe a partir do diretório do executável através de ShellExecute (sem herança de handles) com os mesmos argumentos exceto /silent/--silent, escrever o envelope silent (delegated, host_process_id) e devolver 0. O processo de consola não espera pela sessão; ver OmsiLaunchW.exe. OL_E_WINDOWS_HOST_MISSING / OL_E_WINDOWS_HOST_START_FAILED devolvem 7.
/version: envelope version com product, version (versão informativa do assembly, carimbada a partir de OmsiLaunch.Version.props, 0.1.0-beta3), protocol_version (0.1), supported_family (OMSI_2_3_004_COMMON); saída 0.
capabilities: envelope com todos os descritores PublicStableBeta ou PublicExperimental de PublicCapabilityRegistry; saída 0.
help [family]: envelope help com usage, product_version, protocol_version, family e os commands públicos (CliRoute, Description, Classification, RuntimeValidation), opcionalmente filtrados por família; saída 0.
profiles: envelope com family e as variantes de executável supported (ALTERNATE_LAA692EBFBF..., runtime_validated=true; o hash Steam LAA 7DAB063D... com validation_status=pending_beta_field_validation); saída 0.
Operação de runtime do cliente (sem argumento de instalação e com uma rota ou /runtime:): argumentos validados com PublicCapabilityRegistry.ValidateRuntimeArguments (OL_E_RUNTIME_OPERATION_UNKNOWN, OL_E_RUNTIME_ARGUMENT_REQUIRED, saída 2); depois runtime.execute é reencaminhado com um timeout de 8 s (30 s para road-vehicles.spawn).
session status do cliente (750 ms), session stop (associado ao id da sessão ativa, 750 ms), events read (750 ms), events watch (consulta a cada 250 ms até Ctrl+C).
detect, ou nenhum argumento (sem instalação, sem comando, sem /?, sem /spec, sem flag de lançamento, sem flag de recuperação, sem /list): enumerar os processos Omsi e sondar o endpoint de controlo (250 ms); envelope detect; saída 0.
/? ou /help: imprimir o texto de utilização, saída 0. Qualquer outra invocação que tenha uma palavra de comando mas nenhuma rota despachável (por exemplo d3d sozinho ou session status D:\OMSI) imprime o texto de utilização e sai com 2.
Modo proprietário. Pré-condições: plugins\OmsiLaunch.Plugin.opl e plugins\OmsiLaunch.Native.x86.dll têm de existir junto do executável (OL_E_RUNTIME_INSTALLATION_INCOMPLETE, saída 7). O release-manifest.json junto do executável, quando presente, fornece os hashes esperados dos plugins.
/recovery-status / /recover: RecoverPendingAsync; envelope recover com pending, recovered, diagnostics; saída 8 apenas quando foi pedido um restauro que não foi concluído; caso contrário 0.
Construir o LaunchSpec (BuildSpecAsync), planeá-lo (PlanSessionAsync) e imprimir o plano. /plan ou /validate: saída 0 se IsRunnable, caso contrário 1. Um plano não executável nunca inicia o OMSI (saída 1); sob OmsiLaunchW.exe, um lançamento com um plano não executável mostra o seu último diagnóstico OL_E_ numa caixa de mensagem (auditoria de documentação BUG-06). O planeamento também verifica o conjunto de plugins permanentes instalados face ao release-manifest.json, pelo que um plugin em falta ou alterado torna o plano não executável (OL_E_PERMANENT_PLUGIN_*).
Sondar a existência de um proprietário (OL_E_SESSION_ALREADY_ACTIVE, saída 7) e depois OwnerSession.RunAsync.
Ciclo de vida do proprietário (OwnerSession.RunAsync)#
StartSessionAsync(plan). A partir daqui, todos os caminhos de saída chegam a CloseAsync num bloco finally: exceções, Ctrl+C (Console.CancelKeyPress), fecho da consola / fim de sessão do Windows (AppDomain.ProcessExit com um orçamento de 4 s para paragem + restauro; o que ficar por fazer é recuperado pelo journal no arranque seguinte), "End session" na área de notificação, session.stop pelo pipe e /observe-seconds.
O ícone da área de notificação é criado, a menos que Presentation.SuppressTrayIcon esteja definido na especificação.
Esperar por Running durante StartupTimeoutSeconds + 5 segundos. O estado é impresso. Se o estado não for Running, saída 1 (OmsiLaunchW.exe mostra The OMSI session did not reach gameplay. com o último diagnóstico OL_E_ ou OL_E_SESSION_START_FAILED).
Os lotes de validação (/runtime-batch, /runtime-write-batch, /d3d-batch) são executados e escrevem os seus artefactos.
O endpoint de controlo local é iniciado.
/runtime:<operation> é executado uma vez (5 s, 15 s para road-vehicles.spawn); o resultado é escrito em <root>\.omsilaunch\diagnostics\<sessionId>-runtime-operation.json e impresso. Um comando de runtime que falhe nunca termina a sessão (em vez disso é impresso runtime_error).
Espera: com /observe-seconds:n, a sessão é parada ao fim de n segundos ou antes, numa paragem pela área de notificação/pipe, ou quando o OMSI termina; sem essa flag, o proprietário espera até o OMSI terminar ou até ser pedida uma paragem.
O estado final é impresso; saída 0 se Completed, 1 caso contrário.
session.stop, "End session" na área de notificação, Ctrl+C e CloseAsync pedem todos a paragem canónica: o OMSI é terminado com TerminateProcess (a rotina de encerramento do próprio OMSI não é executada e o options.cfg não é reescrito pelo OMSI) e, em seguida, todos os ficheiros pertencentes à sessão são restaurados. Ver ciclo de vida da sessão e transações e recuperação.
Todas as palavras aceites na primeira posição (CliInput.CommandWordsAccepted):
Palavra
Finalidade
Modo
Notas
capabilities
Listar as capacidades públicas
Local, sem sessão
Envelope capabilities.
profiles
Listar as variantes suportadas de Omsi.exe
Local, sem sessão
Envelope profiles.
detect
Comunicar os processos Omsi.exe e um proprietário ativo
Local, sem sessão
É também a predefinição quando não são indicados argumentos. Estados: NO_OMSI_FOUND, OMSI_FOUND_UNMANAGED, UNKNOWN_BINARY_FOUND por processo quando o binário não pode ser inspecionado; active_omsilaunch_instance, managed_session.
help
Utilização e catálogo público de comandos
Local, sem sessão
help <family> filtra por família de capacidades (session, time, weather, map, camera, vehicles, player, humans, timetable, scripts, constants, curves, hof, drivers, tickets, d3d, events).
session
session status, session stop
Cliente
Exatamente uma palavra a seguir; qualquer outra coisa imprime a utilização, saída 2. session plan/session start são nomes de rotas da API, não palavras da CLI: usar /plan e /new.
events
events read, events watch
Cliente
read devolve uma vez a lista limitada de eventos; watch imprime cada novo evento (por Sequence) como um envelope events.watch a cada 250 ms até Ctrl+C (saída 0), 4 quando nenhum proprietário responde, 7 num erro de controlo.
time
time get, time set
Rota de cliente
weather
weather get, weather set, weather actual get
Rota de cliente
map
map get
Rota de cliente
camera
camera get, camera set, camera lock, camera unlock
d3dnão tem rota hierárquica: d3d texture ... é uma rota desconhecida (saída 2) e d3d sozinho imprime a utilização (saída 2). As operações D3D são acedidas com /runtime:d3d.status, /runtime:d3d.texture.create e assim por diante (ver Operações sem rota).
CliInput.HierarchicalRoutes faz corresponder uma rota em minúsculas a um id de operação de runtime. Todas as rotas requerem uma sessão Running e são executadas através da mailbox de runtime (ExecuteRuntimeAsync). As escritas de runtime alteram apenas o estado em memória do OMSI: nunca tocam em ficheiros, não fazem parte da transação de configuração e não são revertidas na paragem (o OMSI é terminado). A estabilidade segue o PublicCapabilityRegistry e a matriz de validação; os detalhes e os campos de resultado estão em controlo de runtime.
Rota
Operação de runtime
Tipo
Requer Running
Altera o OMSI
Participação no restauro
Estabilidade
Notas
time get
time.read
Read
Sim
Não
Nenhuma
STABLE_BETA
Campos de relógio e calendário.
time set
time.set
Write
Sim
Sim (relógio em memória)
Nenhuma, não revertida
EXPERIMENTAL
Por exemplo --minute=<0..59>; escrita, releitura e restauro validados a 2026-09-20.
weather get
weather.read
Read
Sim
Não
Nenhuma
STABLE_BETA
weather set
weather.set
Write
Sim
Não (sempre rejeitada)
Nenhuma
UNAVAILABLE
Devolve OL_E_RUNTIME_SETTING_NOT_PERSISTENT; o OMSI sobrescreve o valor no seu próximo ciclo meteorológico.
weather actual get
weather.actual.read
Read
Sim
Não
Nenhuma
EXPERIMENTAL
Estado do controlador de meteorologia real/ICAO.
map get
map.read
Read
Sim
Não
Nenhuma
STABLE_BETA
Nome do mapa, ficheiro, descrição, número de tiles, intervalo de anos e lado de circulação; revalidado em runtime no slot de mapa corrigido.
camera get
camera.read
Read
Sim
Não
Nenhuma
STABLE_BETA
camera set
camera.set
Write
Sim
Sim (escalares da câmara, p. ex. --field_of_view=)
Nenhuma, não revertida
EXPERIMENTAL
Escrita/releitura do FOV validada.
camera lock
camera.lock
Action
Sim
Sim (política de âmbito da sessão)
Nenhuma
EXPERIMENTAL
Requer --family=<0..3> (motorista=0, passageiro=1, exterior=2, mapa=3), --preset=<n> opcional (família 0 ou 1). Precisa de um veículo do jogador (por exemplo, uma situação guardada). Validado em runtime no fecho de runtime (CAM01); a string RuntimeValidation do registo continua a indicar STATICALLY_VALIDATED (ver capacidades).
camera unlock
camera.unlock
Action
Sim
Sim
Nenhuma
EXPERIMENTAL
Liberta a política definida por camera lock (CAM01).
Estes ids de operação públicos (PublicCapabilityRegistry.PublicRuntimeOperationIds) não têm rota hierárquica e são invocados com /runtime:<operation> mais --key=value ou /runtime-arg:key=value: timetable.rv-files.list, timetable.track-entries.list, timetable.tour-entries.list, d3d.status, d3d.texture.create (width, height, format obrigatórios; levels opcional), d3d.texture.describe (handle; level opcional), d3d.texture.update (handle, width, height, pixels_base64 obrigatórios; level, x, y opcionais), d3d.texture.release (handle). As operações D3D são EXPERIMENTAL; o ciclo de vida das texturas e a invalidação por reposição do dispositivo (reset) estão validados em runtime (fecho de runtime H02, D01; ver capacidades). timetable.track-entries.list e timetable.tour-entries.list são listas limitadas: um resultado que não caiba no slot de runtime é encurtado (truncated=true). internal.road-vehicles.make-basic é INTERNAL e é rejeitado com OL_E_RUNTIME_OPERATION_UNKNOWN tanto pela CLI como pela API.
Todas as flags de CliInput.KnownFlags. A "fase" é de lançamento (determina o LaunchSpec/plano de uma nova sessão), de runtime (atua sobre uma sessão em execução) ou de controlo (altera o comportamento da própria CLI). As flags interpretadas apenas por compatibilidade (CliInput.AcceptedNoEffectFlags) estão assinaladas na respetiva linha.
Igual a /?. (A palavra simples help devolve, em vez disso, o catálogo estruturado.)
/version
/version
desligada
controlo
STABLE_BETA
Envelope version, saída 0. Avaliada antes de qualquer outro comando, exceto /silent.
/json
/json ou --json
desligada
controlo
STABLE_BETA
Emitir envelopes JSON; também força a saída de consola, mesmo sob OmsiLaunchW.exe.
/quiet
/quiet
desligada
controlo
ACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT
Define CliInput.Quiet; nada a lê.
/silent
/silent (também --silent)
desligada
controlo
EXPERIMENTAL
Delegar toda a linha de comandos em OmsiLaunchW.exe e devolver 0 assim que o processo host tiver arrancado. O resultado da sessão é comunicado pelo OmsiLaunchW.exe (caixas de mensagem, ícone da área de notificação), por .omsilaunch\diagnostics e pelo endpoint de controlo local. A delegação e as caixas de diálogo de falha estão validadas em runtime (fecho de runtime T04); ver OmsiLaunchW.exe.
/serve
/serve
desligada
controlo
ACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT
Define CliInput.Serve; nada a lê. O endpoint de controlo é sempre iniciado por um proprietário.
/verbose
/verbose
desligada
lançamento
PARTIAL
DiagnosticsSpec.Verbose. Os valores são transportados na especificação; o seu efeito limita-se ao trace do host em .omsilaunch\diagnostics.
/log
/log
ligada (DiagnosticsSpec.Log tem como predefinição true)
lançamento
PARTIAL
DiagnosticsSpec.Log. Na prática, sempre ligada.
/logall
/logall
desligada
lançamento
PARTIAL
Define em conjunto Verbose, ProcessTrace, PluginTrace e NativeTrace.
Construir e imprimir o SessionPlan, sem iniciar o OMSI. Saída 0 quando IsRunnable, 1 caso contrário. Requer uma seleção de lançamento (/new, /saved, /spec ou um argumento de instalação); /plan sozinho, sem mais nada, executa detect.
/validate
/validate
desligada
lançamento
STABLE_BETA
Idêntica a /plan nesta build.
/runtime-batch
/runtime-batch
desligada
runtime (proprietário)
INTERNAL
Harness de validação: após Running, executa o conjunto de operações de leitura e escreve <sessionId>-runtime-read-batch.json.
/runtime-write-batch
/runtime-write-batch
desligada
runtime (proprietário)
INTERNAL
Harness de validação: leituras mais time.set, camera.set e vehicle.variable.set com restauro; escreve <sessionId>-runtime-write-batch.json.
/d3d-batch
/d3d-batch
desligada
runtime (proprietário)
INTERNAL
Harness de validação para o ciclo de vida das texturas D3D; escreve <sessionId>-d3d-wave-d-batch.json.
/runtime
/runtime:<operation>
nenhuma
runtime
STABLE_BETA (despacho)
Selecionar uma operação de runtime pública pelo id. Modo cliente (sem argumento de instalação): reencaminhada para o proprietário. Modo proprietário: executada uma vez após Running. Ids desconhecidos: OL_E_RUNTIME_OPERATION_UNKNOWN, saída 2.
/runtime-arg
/runtime-arg:<key>=<value> (repetível)
nenhuma
runtime
STABLE_BETA (despacho)
Argumento de runtime; equivalente a --key=value. Sem =: /runtime-arg requires key=value, saída 2.
WorldMode.NewMap é o modo predefinido, mas só é pedido um lançamento quando está presente uma de /new, /saved, /last, /spec
lançamento
STABLE_BETA
NEW_MAP. Requer /map e /entrypoint-index (um plano sem um índice de ponto de entrada apresentado comunica OL_E_ENTRYPOINT_REQUIRED; sem /map nenhum mapa é resolvido). /new nunca seleciona um mapa silenciosamente.
/saved
/saved:<file.osn>
nenhuma
lançamento
STABLE_BETA
SAVED_SITUATION. O mapa e a posição vêm do .osn; /map, /entrypoint, /entrypoint-index são rejeitadas com /saved (saída 2). Situação em falta: OL_E_SITUATION_NOT_FOUND; o respetivo mapa em falta: OL_E_SITUATION_MAP_NOT_FOUND.
/last
/last
nenhuma
lançamento
UNAVAILABLE
LAST_MAP_STATE. Produz sempre OL_E_CAPABILITY_UNAVAILABLE (não executável, saída 1) neste perfil; não é feito nenhum recurso a um .osn com base em carimbos temporais.
Identidade do mapa para /new, ou o âmbito para /list:Entrypoints. Desconhecida: OL_E_MAP_NOT_FOUND.
/entrypoint
/entrypoint:<identity>
nenhuma
lançamento
UNAVAILABLE
Ponto de entrada por etiqueta. Bloqueada por gate: o plano regista world.entrypoint-identity como RUNTIME_PARTIAL e torna-se não executável (OL_E_CAPABILITY_UNAVAILABLE). Mutuamente exclusiva com /entrypoint-index (a identidade prevalece e limpa o índice).
/entrypoint-index
/entrypoint-index:<n>, 0..2147483647
nenhuma
lançamento
STABLE_BETA
Índice do ponto de entrada na lista apresentada (a partir de 1, tal como o OMSI o apresenta). Obrigatório para um plano NEW_MAP executável.
As quatro são aceites e transportadas para o LaunchSpec, mas o caminho de arranque nativo não as aplica: o planeador regista-as como STATICALLY_PARTIALe acrescenta OL_E_CAPABILITY_UNAVAILABLE, pelo que o plano é NÃO EXECUTÁVEL (saída 1). Um ficheiro /spec ou um perfil de sessão que as defina tem o mesmo efeito.
Flag
Sintaxe e valores
Predefinição
Fase
Estabilidade
Comportamento
/date
/date:<yyyy-mm-dd> ou /date:system
não definida
lançamento
UNAVAILABLE
DateSpec explícita/do sistema. Valor impossível de interpretar: OL_E_INVALID_ARGUMENT, saída 2.
/time
/time:<hh:mm[:ss]> ou /time:system
não definida
lançamento
UNAVAILABLE
TimeSpec explícita/do sistema.
/year
/year:<n> ou /year:system
não definida
lançamento
UNAVAILABLE
YearSpec.
/weather
/weather:<preset>
não definida
lançamento
UNAVAILABLE
WeatherMode.Preset.
/weather-icao
/weather-icao:<code>
não definida
lançamento
UNAVAILABLE
WeatherMode.Icao.
/weather-real
/weather-real
não definida
lançamento
UNAVAILABLE
WeatherMode.RealCurrent. Prevalece a última de /weather, /weather-icao, /weather-real.
Aceites e resolvidas face à instalação, mas não aplicadas pelo runtime: cada campo definido fica STATICALLY_PARTIAL e acrescenta OL_E_CAPABILITY_UNAVAILABLE (plano NÃO EXECUTÁVEL, saída 1).
Flag
Sintaxe e valores
Predefinição
Fase
Estabilidade
Comportamento
/vehicle
/vehicle:<identity> (Vehicles\...\*.bus)
não definida
lançamento
UNAVAILABLE
Resolvida primeiro (OL_E_VEHICLE_NOT_FOUND se desconhecida).
/repaint
/repaint:<id>
não definida
lançamento
UNAVAILABLE
Resolvida apenas em conjunto com /vehicle (OL_E_REPAINT_NOT_FOUND).
/hof
/hof:<id>
não definida
lançamento
UNAVAILABLE
OL_E_HOF_NOT_FOUND se desconhecida.
/fleet
/fleet:<n>
não definida
lançamento
UNAVAILABLE
Número de frota.
/registration
/registration:<text>
não definida
lançamento
UNAVAILABLE
Matrícula.
/no-vehicle
/no-vehicle
desligada
lançamento
STABLE_BETA
Remove qualquer veículo do jogador da base (/spec ou perfil). Inofensiva.
/set:<key>=<value> (repetível; chaves sem distinção de maiúsculas/minúsculas)
nenhuma
lançamento
STABLE_BETA
Overlay semântico de options.cfg a partir de ConfigurationCatalog (por exemplo graphics.maxFPS=60, traffic.randomVehicles=150). Chave desconhecida: OL_E_UNKNOWN_SETTING (saída 2); chave só de leitura (advanced.multithreadingCalculate, advanced.multithreadingTextureLoad, graphics.texture, graphics.textureFilter): OL_E_SETTING_NOT_WRITABLE (saída 2); valor fora do intervalo ou malformado: OL_E_INVALID_SETTING_VALUE quando o overlay é construído. O overlay é uma mutação da sessão: é capturado em snapshot, aplicado antes de o OMSI arrancar e restaurado byte a byte na paragem (RV-005 RUNTIME_PASS). Conflitos com uma chave pertencente a uma predefinição (preset) de um perfil selecionado: OL_E_SESSION_PROFILE_OVERRIDE_CONFLICT.
/splash:Managed, /splash:Native, /splash:Unset (sem distinção de maiúsculas/minúsculas)
Managed
lançamento
STABLE_BETA
Managed: os BMP de 640x480 e 24 bits incluídos no pacote são copiados uma vez para <root>\.omsilaunch\assets\splash, e GUI\NewSplashscreen_ENG.bmp mais GUI\NewSplashscreen_<lang>.bmp são sobrepostos de forma transacional e restaurados exatamente (RV-006 RUNTIME_PASS). Native/Unset (aliases): ficheiros do OMSI intactos. Valor em falta: /splash requires Unset, Native, or Managed, saída 2.
/splash-language
/splash-language:PTB|ENG|DEU|FRA (também pt-BR, de, fr, en; qualquer outro valor recorre a ENG)
[language] de options.cfg, senão ENG
lançamento
STABLE_BETA
Seleciona o ficheiro de destino localizado.
/splash-assets
/splash-assets:<directory> (os caminhos relativos são resolvidos abaixo da raiz da instalação)
<root>\.omsilaunch\assets\splash, senão o conjunto incluído no pacote
lançamento
STABLE_BETA
Diretório de recursos personalizado; tem de conter ENG.bmp e, para uma língua que não o inglês, <lang>.bmp. Erros: OL_E_SPLASH_ASSET_DIRECTORY_MISSING, OL_E_SPLASH_ASSET_MISSING, OL_E_SPLASH_FORMAT_UNSUPPORTED (apresentados como OL_E_SESSION_PRESENTATION_INVALID no plano; não executável).
Native: intacto. Disabled: o mecanismo de transferência perfilado dentro do processo é suprimido. Override: o perfil .itx indicado é sobreposto como Texture\standard.itx; todos os destinos HTTP(S) nele listados, mais Texture\standard.ipr, tornam-se eliminações da sessão (removidos durante a sessão, restaurados na paragem). Valor em falta: saída 2.
/internet-textures-profile
/internet-textures-profile:<file.itx>
nenhuma
lançamento
EXPERIMENTAL
Obrigatória com Override (OL_E_ITX_PROFILE_REQUIRED, saída 2). OL_E_ITX_PROFILE_MISSING, OL_E_ITX_PROFILE_INVALID (tem de conter pares de linhas URL/destino com URLs http/https), OL_E_ITX_TARGET_OUTSIDE_TEXTURE_PATH (os destinos têm de ser resolvidos dentro de Texture\, sem caminhos absolutos, .. ou pontos de reanálise).
Carrega <root>\.omsilaunch\session-profiles\<id>\profile.yaml (ver perfis de sessão). Requer /predefined-profile-index (OL_E_SESSION_PROFILE_PRESET_NOT_FOUND, saída 2). O bloco new: só se aplica com /new; compatibility.maps é imposto para /new e /saved (OL_E_SESSION_PROFILE_MAP_MISMATCH). As flags explícitas que colidam com um campo pertencente ao perfil são rejeitadas com OL_E_SESSION_PROFILE_OVERRIDE_CONFLICT (CliInput.RejectProfileConflicts): mapa/ponto de entrada/data/hora/ano/meteorologia quando o bloco new: os define, chaves /set pertencentes à predefinição, flags de splash quando a predefinição tem presentation, flags de Internet Textures quando tem internet-textures, timeouts quando tem behavior.
/predefined-profile-index
/predefined-profile-index:<1..5>
nenhuma
lançamento
STABLE_BETA
Seleciona a predefinição por index. Fora do intervalo: saída 2.
STABLE_BETA (carregador testado offline; semântica da sessão idêntica à das flags)
Carrega um ficheiro JSON LaunchSpec como base (ver LaunchSpec) e marca um lançamento como pedido. Regras (LaunchSpecJson): o ficheiro tem de existir (OL_E_SPEC_NOT_FOUND, saída 6); no máximo 1 MiB (OL_E_SPEC_TOO_LARGE, saída 2); a raiz tem de ser um objeto (OL_E_SPEC_INVALID); nomes de propriedades sem distinção de maiúsculas/minúsculas; comentários // e vírgulas finais permitidos; profundidade máxima de 32; qualquer propriedade desconhecida é rejeitada com o respetivo caminho JSON (OL_E_SPEC_UNKNOWN_PROPERTY: $.Presentation.Foo, saída 2).
Precedência (CliInput.BuildSpecAsync): predefinições → ficheiro /spec → /predefined-profile (substitui Installation e World e depois aplica o perfil) → flags explícitas. Um argumento de instalação explícito prevalece sobre RootPath na especificação. /no-vehicle remove o veículo do jogador da especificação; /vehicle e as flags afins fundem-se com ele campo a campo. As chaves /set fundem-se em Environment.General. /splash, /splash-language, /splash-assets, /internet-textures, /internet-textures-profile só sobrepõem valores quando indicadas. /startup-timeout e /shutdown-timeout só sobrepõem valores quando indicadas; Presentation.SuppressTrayIcon provém apenas da especificação (não há flag). As flags de diagnóstico são combinadas por OU com o Diagnostics da especificação.
/list:<category>; as categorias são os valores de ContentQueryKindMaps, Situations, Vehicles, Repaints, Hofs, FleetNumbers, Registrations, Addons, Entrypoints (sem distinção de maiúsculas/minúsculas)
nenhuma
local, sem sessão
STABLE_BETA
DiscoverAsync sobre a instalação; envelope content.list com entradas Identity, Kind, DisplayName; saída 0. Categoria desconhecida: Unknown discovery category, saída 2. Os pontos de reanálise (junctions/ligações simbólicas) são ignorados; os ficheiros do OMSI são lidos como Windows-1252.
/vehicle-scope
/vehicle-scope:<vehicle identity>
nenhuma
local
STABLE_BETA
Âmbito reencaminhado para todas as categorias exceto Entrypoints, que usa /map como âmbito.
Behavior.StartupTimeoutSeconds. O proprietário espera por Running durante este valor mais 5 s; OL_E_STARTUP_TIMEOUT termina a sessão com saída 1.
/shutdown-timeout
/shutdown-timeout:<1..600> segundos
valor da especificação/perfil, senão 30
lançamento
ACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT
Transportado para Behavior.ShutdownTimeoutSeconds; o supervisor não o utiliza nesta build (o OMSI é terminado, não se lhe pede que feche).
/observe-seconds
/observe-seconds:<0..2147483647>
nenhuma (executar até o OMSI terminar ou até ser pedida uma paragem)
runtime (proprietário)
STABLE_BETA
Limite superior da fase de execução: após n segundos em Running, é pedida a paragem canónica. Uma paragem pela área de notificação ou pelo pipe, ou o fim do OMSI, termina-a mais cedo. 0 para imediatamente após Running.
Indicar se <root>\.omsilaunch\journal.json está pendente (pending); nunca restaura; saída 0. Obtém o lease da instalação: OL_E_INSTALLATION_BUSY (saída 7) enquanto um proprietário o detiver.
/recover
/recover
desligada
local
STABLE_BETA
Restaurar um journal pendente (as cópias de segurança são primeiro verificadas face ao SHA-256 do snapshot; OL_E_RECOVERY_BACKUP_CORRUPT, OL_E_RECOVERY_ABSENT_OWNERSHIP_MISMATCH, OL_W_RESTORE_FOREIGN_FILE_RETAINED comunicados em diagnostics). Saída 0 quando nada estava pendente ou o restauro foi concluído; 8 quando havia um journal pendente e este se mantém. Recusado com OL_E_INSTALLATION_BUSY enquanto o processo OMSI registado no journal (PID, hora de criação, caminho do executável) estiver ativo ou, para um journal posterior a HandoffCreated sem PID, enquanto estiver ativo qualquer Omsi.exe dessa raiz. Cada arranque de sessão executa automaticamente a mesma recuperação antes de ler a instalação.
Envelope de sucesso (CliInput.WriteEnvelope, com --json): {"ok": true, "command": "<name>", "protocol_version": "0.1", "result": <object>}, indentado. As respostas reencaminhadas de session status e events read acrescentam um membro metadata quando foram omitidos eventos mais antigos para caber no frame de controlo (events_dropped_count, ver controlo local). Sem --json só é impresso <object> como JSON indentado, seguido de Note: <n> older events were omitted to fit the control frame. quando foram descartados eventos.
Envelope de erro (CliInput.WriteError, com --json): {"ok": false, "command": "<name>", "protocol_version": "0.1", "error": {"code": "OL_E_...", "category": "<category>", "message": "..."}}. Sem --json: OL_E_<CODE>: message numa linha. Categorias: invalid_argument, unsupported_profile, session, runtime, not_found, transaction, internal. Sob OmsiLaunchW.exe, o mesmo código e mensagem são apresentados numa caixa de mensagem.
Plano e estado (CliInput.Write): os registos SessionPlan, SessionStatus e RuntimeCommandResult são impressos como JSON indentado sem envelope. Sem --json, um plano é resumido como Plan: READY profile=Omsi23004_692EBFBF ou Plan: NOT RUNNABLE profile=...; os outros registos continuam a ser impressos como JSON. Os valores de enumeração são serializados como inteiros (SessionState.Running é 14, Completed é 18, Failed é 19).
Nomes de comando usados nos envelopes: silent, version, capabilities, help, profiles, detect, recover, content.list, session, session.status, session.stop, events.read, events.watch, events watch, installation, cli, session profile e o id da operação de runtime para comandos de runtime reencaminhados.
Sob OmsiLaunchW.exe (OMSILAUNCH_WINDOWS_HOST=1) nada é escrito na consola, a menos que seja indicado --json.
OL_E_PLAN_NOT_RUNNABLE (novo planeamento no arranque, 1); OL_E_PERMANENT_PLUGIN_MISSING, OL_E_PERMANENT_PLUGIN_HASH_MISMATCH, OL_E_PERMANENT_PLUGIN_MANIFEST_INCOMPLETE, OL_E_RELEASE_MANIFEST_INVALID (normalmente comunicados pelo planeamento como diagnóstico do plano, saída 1; 7 apenas se os ficheiros dos plugins mudarem entre o planeamento e o arranque), OL_E_INSTALLATION_BUSY (7); OL_E_PROCESS_START_FAILED, OL_E_PROCESS_EXITED_EARLY, OL_E_STARTUP_TIMEOUT, OL_E_WORLD_START_FAILED, OL_E_SITUATION_LOAD_FAILED, OL_E_PLUGIN_NOT_LOADED (sessão Failed, 1)