CLI リファレンス

ドキュメントのバージョン v0.1.0-beta.3GitHub でソースを見る

このページは OmsiLaunch 0.1.0-beta3 の英語版の原文ページの翻訳です。規範となるのは英語版です。内容が異なる場合は、英語版のページとコードが優先されます。

このページは、OmsiLaunch 0.1.0-beta3 のコマンドラインに関する完全かつ規範的なリファレンスです。3 つの実行ファイル、引数の文法、ディスパッチ順序、すべてのコマンドワード、すべての階層ルート、すべてのフラグ、出力エンベロープ、および各コマンドのエラー時の動作を扱います。本ページは tools\OmsiLaunch.Cli\Program.cs(CliProgram.RunAsync、OwnerSession.RunAsync、CliInput.Parse、CliInput.KnownFlags、CliInput.AcceptedNoEffectFlags、CliInput.CommandWordsAccepted、CliInput.HierarchicalRoutes、CliInput.BuildSpecAsync、CliEventWatch)、tools\OmsiLaunch.Cli\LaunchSpecJson.cs、および tools\OmsiLaunch.Bootstrapper 配下の 2 つのネイティブシムから生成されています。プロセスの結果は終了コードに、エラーコードはエラーに、実際の呼び出し例は CLI の使用例に記載しています。

実行ファイル#

ファイルサブシステム役割相違点
OmsiLaunch.exeConsoleネイティブブートストラッパー(OmsiLaunch.Bootstrapper.cpp)です。自身のディレクトリを解決し、CommandLineToArgvW でコマンドラインをトークン化し、nethost.dll を介して hostfxr を探し、同じ引数で OmsiLaunch.Controller.dll を実行します。コンソール出力が書き込まれます。プロセスの終了コードはマネージドコントローラーの終了コードです。.NET ホストを開始できなかった場合はシムのコード 100..106 になります。
OmsiLaunchW.exeWindows (GUI)Windows サブシステム向けにビルドされた同じシム(OmsiLaunch.WindowsHost.cpp)です。コントローラーを開始する前に環境変数 OMSILAUNCH_WINDOWS_HOST=1 を設定します。コンソールはありません。--json が指定されない限りコンソール出力は抑止され(WindowsHost.SuppressConsole)、失敗はメッセージボックスで表示されます(WindowsHost.ShowFailure: メッセージ、Code: OL_E_...、およびヒント See .omsilaunch\diagnostics for details.)。シムの失敗 100..106 は OmsiLaunch could not start the .NET host (code N). と表示されます。動作の全容: OmsiLaunchW.exe リファレンス。
OmsiLaunch.Controller.dllマネージド(x64、net6.0-windows、Windows Forms)コントローラー本体です。利用者が直接呼び出すことはありません。両方のシムがコントローラーのパスを最初のホスト引数として渡すため、公開された引数リストには現れません。Microsoft.WindowsDesktop.App を含む x64 .NET 6 ランタイムが必要です。インストールを参照してください。

nethost.dll はシムと同じ場所に置く必要があります。シム自身は引数を読み取りません。すべての引数は変更されずに CliInput.Parse に届くため、OmsiLaunch.exe と OmsiLaunchW.exe はまったく同じ構文を受け付けます。

呼び出しモデル#

引数の文法(CliInput.Parse)#

形式意味
/key:value、/key、-key:value、-keyフラグです。キーは大文字と小文字を区別しません。値は最初の : 以降のすべてです。未知のキーは OL_E_INVALID_ARGUMENT(Unknown argument: ...)で失敗し、終了コードは 2 です。
--key=value選択されたランタイム操作に対するランタイム引数です(例: --handle=rv-000001)。= を含む -- トークンはすべてランタイム引数であり、フラグになることはありません。
--json、/json構造化出力です(出力形式を参照)。= を含まない -- トークンで意味を持つのは --json だけで、/json フラグとして解析されます。
裸の単語まだコマンドワードが現れておらず、その単語がコマンドワードのいずれかであれば、それがコマンドになります。コマンドワードが存在した後は、それ以降の裸の単語はすべてコマンドワード(ルート)になります。それ以外の場合、最初の裸の単語はインストールルートとなり、それ以降の裸の単語はルートに追加されます。

結果として、階層ルート(time get)の後ろにインストール引数を置いて組み合わせることはできません(time get D:\OMSI は未知のルート time get d:\omsi となり、終了コード 2)。D:\OMSI time get は受け付けられますが、これは オーナーモード です(新しいセッションが開始され、その中で操作が 1 回実行されます)。解析エラー(ArgumentException、FormatException、InvalidDataException、OverflowException)とセッションプロファイルのエラー(SessionProfileException)は、何かが実行される前に報告され、終了コードは常に 2 です。

インストールルート#

  • 明示的な裸の単語によるインストール引数は、/spec ファイル内の RootPath より優先されます(CliInput.BuildSpecAsync)。
  • . は実行ファイルを含むディレクトリ(AppContext.BaseDirectory)を意味し、呼び出し元の作業ディレクトリを意味することはありません(CliInput.ResolveInstallationRoot)。ポータブルパッケージはこの動作に依存しています。
  • 引数が省略された場合、オーナーモードの操作(/new、/saved、/spec、/list、/recovery-status、/recover)も実行ファイルのディレクトリを使用します。パスは Path.GetFullPath で正規化されます。
  • クライアントモードのコマンドはインストール引数を取りません。実行ファイルが置かれているインストール環境(AppContext.BaseDirectory)のローカル制御エンドポイントを対象とします。ローカル制御を参照してください。

オーナーとクライアント#

  • オーナー: セッションのプランを作成し、開始し、監視し、復元するプロセスです(OwnerSession.RunAsync)。インストールリース(Local\OmsiLaunch.Installation.<sha256(root)>)と設定トランザクションを保持し、セッションが生きている間はローカル制御エンドポイントを公開し、トレイアイコンを表示します。オーナーはインストール環境ごとに厳密に 1 つです。制御エンドポイントで既にオーナーが session.status に応答している場合、2 回目の起動は OL_E_SESSION_ALREADY_ACTIVE(終了コード 7)で失敗します。
  • クライアント: インストール引数なしで session status、session stop、events read、events watch、またはランタイム操作を送信する呼び出しです。ローカル制御パイプ経由で転送されます。オーナーが存在しない場合は OL_E_NO_ACTIVE_SESSION(終了コード 4)で失敗します。

ディスパッチ順序(CliProgram.RunAsync)#

  1. /silent(OmsiLaunchW.exe の下で既に実行中でない場合): 実行ファイルのディレクトリから ShellExecute を通じて(ハンドル継承なしで)OmsiLaunchW.exe を開始し、/silent/--silent を除いた同じ引数を渡し、silent エンベロープ(delegated、host_process_id)を書き込んで 0 を返します。コンソールプロセスはセッションを待機しません。OmsiLaunchW.exe を参照してください。OL_E_WINDOWS_HOST_MISSING / OL_E_WINDOWS_HOST_START_FAILED は 7 を返します。
  2. /version: product、version(アセンブリの informational version。OmsiLaunch.Version.props から刻印され、0.1.0-beta3)、protocol_version(0.1)、supported_family(OMSI_2_3_004_COMMON)を含むエンベロープ version。終了コード 0。
  3. capabilities: PublicCapabilityRegistry のすべての PublicStableBeta または PublicExperimental 記述子を含むエンベロープ。終了コード 0。
  4. help [family]: usage、product_version、protocol_version、family、および公開 commands(CliRoute、Description、Classification、RuntimeValidation)を含むエンベロープ help。family で絞り込むこともできます。終了コード 0。
  5. profiles: family と、supported の実行ファイルバリアント(ALTERNATE_LAA 692EBFBF...、runtime_validated=true、および validation_status=pending_beta_field_validation の Steam LAA ハッシュ 7DAB063D...)を含むエンベロープ。終了コード 0。
  6. クライアントのランタイム操作(インストール引数がなく、ルートまたは /runtime: がある場合): 引数は PublicCapabilityRegistry.ValidateRuntimeArguments に照らして検証され(OL_E_RUNTIME_OPERATION_UNKNOWN、OL_E_RUNTIME_ARGUMENT_REQUIRED、終了コード 2)、その後 runtime.execute が 8 s のタイムアウト(road-vehicles.spawn では 30 s)で転送されます。
  7. クライアントの session status(750 ms)、session stop(アクティブなセッション id に束縛、750 ms)、events read(750 ms)、events watch(Ctrl+C まで 250 ms ごとにポーリング)。
  8. detect、または 引数がまったくない場合(インストール、コマンド、/?、/spec、起動フラグ、リカバリフラグ、/list のいずれもない): Omsi プロセスを列挙し、制御エンドポイントを調べます(250 ms)。エンベロープ detect。終了コード 0。
  9. /? または /help: 使用方法のテキストを出力し、終了コード 0。コマンドワードはあるがディスパッチ可能なルートがないその他の呼び出し(例: d3d 単独や session status D:\OMSI)は、使用方法のテキストを出力して終了コード 2 で終了します。
  10. オーナーモード。前提条件: 実行ファイルと同じ場所に plugins\OmsiLaunch.Plugin.opl と plugins\OmsiLaunch.Native.x86.dll が存在する必要があります(OL_E_RUNTIME_INSTALLATION_INCOMPLETE、終了コード 7)。実行ファイルと同じ場所に release-manifest.json がある場合は、それが期待されるプラグインハッシュを提供します。
  11. /recovery-status / /recover: RecoverPendingAsync。pending、recovered、diagnostics を含むエンベロープ recover。復元が要求されたのに完了しなかった場合にのみ終了コード 8、それ以外は 0。
  12. /list:<category>: DiscoverAsync。エンベロープ content.list。終了コード 0。
  13. LaunchSpec を構築し(BuildSpecAsync)、プランを作成し(PlanSessionAsync)、プランを出力します。/plan または /validate: IsRunnable なら終了コード 0、そうでなければ 1。実行不可のプランが OMSI を起動することはありません(終了コード 1)。OmsiLaunchW.exe の下では、実行不可のプランでの起動は、その最後の OL_E_ 診断をメッセージボックスで表示します(ドキュメント監査 BUG-06)。プランニングでは、インストール済みの常駐プラグイン一式を release-manifest.json と照合する検証も行うため、プラグインが欠落または改変されているとプランは実行不可になります(OL_E_PERMANENT_PLUGIN_*)。
  14. 既存のオーナーの有無を調べ(OL_E_SESSION_ALREADY_ACTIVE、終了コード 7)、その後 OwnerSession.RunAsync を実行します。

オーナーのライフサイクル(OwnerSession.RunAsync)#

  1. StartSessionAsync(plan)。ここから先は、すべての終了経路が finally ブロック内の CloseAsync に到達します。例外、Ctrl+C(Console.CancelKeyPress)、コンソールのクローズ / ログオフ(停止 + 復元に 4 s の猶予を持つ AppDomain.ProcessExit。残ったものは次回の開始時にジャーナルによってリカバリされます)、トレイの "End session"、パイプの session.stop、および /observe-seconds がこれに含まれます。
  2. spec で Presentation.SuppressTrayIcon が設定されていない限り、トレイアイコンが作成されます。
  3. StartupTimeoutSeconds + 5 秒間 Running を待機します。ステータスが出力されます。状態が Running でない場合は終了コード 1 です(OmsiLaunchW.exe は、最後の OL_E_ 診断または OL_E_SESSION_START_FAILED とともに The OMSI session did not reach gameplay. を表示します)。
  4. 検証バッチ(/runtime-batch、/runtime-write-batch、/d3d-batch)が実行され、成果物を書き込みます。
  5. ローカル制御エンドポイントが開始されます。
  6. /runtime:<operation> が 1 回実行されます(5 s、road-vehicles.spawn では 15 s)。結果は <root>\.omsilaunch\diagnostics\<sessionId>-runtime-operation.json に書き込まれ、出力されます。ランタイムコマンドが失敗してもセッションが終了することはありません(代わりに runtime_error が出力されます)。
  7. 待機: /observe-seconds:n を指定した場合、セッションは n 秒後に停止されます。または、それより前にトレイ/パイプからの停止要求があった場合、あるいは OMSI が終了した場合に停止されます。指定しない場合、オーナーは OMSI が終了するか停止が要求されるまで待機します。
  8. 完了時のステータスが出力されます。Completed なら終了コード 0、それ以外は 1 です。

session.stop、トレイの "End session"、Ctrl+C、および CloseAsync はすべて正規の停止を要求します。OMSI は TerminateProcess で終了させられ(OMSI 自身のシャットダウン処理は実行されず、options.cfg が OMSI によって書き換えられることはありません)、その後セッションが所有するすべてのファイルが復元されます。セッションのライフサイクルとトランザクションとリカバリを参照してください。

コマンドワード#

先頭の位置で受け付けられるすべての単語(CliInput.CommandWordsAccepted):

単語目的モード注記
capabilities公開ケイパビリティを一覧表示ローカル、セッション不要エンベロープ capabilities。
profilesサポートされる Omsi.exe バリアントを一覧表示ローカル、セッション不要エンベロープ profiles。
detectOmsi.exe プロセスとアクティブなオーナーを報告ローカル、セッション不要引数が指定されない場合のデフォルトでもあります。状態: NO_OMSI_FOUND、OMSI_FOUND_UNMANAGED、バイナリを検査できない場合のプロセスごとの UNKNOWN_BINARY_FOUND、active_omsilaunch_instance、managed_session。
help使用方法と公開コマンドカタログローカル、セッション不要help <family> はケイパビリティファミリー(session、time、weather、map、camera、vehicles、player、humans、timetable、scripts、constants、curves、hof、drivers、tickets、d3d、events)で絞り込みます。
sessionsession status、session stopクライアント後続の単語はちょうど 1 つです。それ以外は使用方法を出力し、終了コード 2。session plan/session start は API のルート名であり、CLI の単語ではありません。/plan と /new を使用してください。
eventsevents read、events watchクライアントread は上限付きのイベントリストを 1 回返します。watch は新しいイベントごとに(Sequence に基づき)events.watch エンベロープとして 250 ms ごとに Ctrl+C まで出力し(終了コード 0)、オーナーが応答しない場合は 4、制御エラーの場合は 7 です。
timetime get、time setクライアントルート
weatherweather get、weather set、weather actual getクライアントルート
mapmap getクライアントルート
cameracamera get、camera set、camera lock、camera unlockクライアントルート
vehiclesvehicles list、vehicles get、vehicles summary、vehicles spawn、vehicles place-randomクライアントルート
playerplayer getクライアントルート
humanshumans list、humans get、humans summaryクライアントルート
timetabletimetable get、timetable <table> list、timetable logs listクライアントルート
scriptsscripts variable list|get|set、scripts string list|getクライアントルート
constantsconstants list、constants getクライアントルート
curvescurves list、curves evaluateクライアントルート
hofhof getクライアントルート
driversdrivers listクライアントルート
ticketstickets getクライアントルート
d3d予約済みのファミリーワードなしd3d には 階層ルートがありません。d3d texture ... は未知のルート(終了コード 2)であり、d3d 単独では使用方法を出力します(終了コード 2)。D3D 操作には /runtime:d3d.status、/runtime:d3d.texture.create などでアクセスします(ルートのない操作を参照)。

階層ルート#

CliInput.HierarchicalRoutes は、小文字化されたルートをランタイム操作 id に対応付けます。すべてのルートは Running セッションを必要とし、ランタイムメールボックス(ExecuteRuntimeAsync)を通じて実行されます。ランタイムの書き込みは OMSI のメモリ上の状態のみを変更します。ファイルには一切触れず、設定トランザクションの一部でもなく、停止時に元に戻されることは ありません(OMSI は強制終了されます)。安定性は PublicCapabilityRegistry と検証マトリクスに従います。詳細と結果フィールドはランタイム制御にあります。

ルートランタイム操作種別Running が必要OMSI を変更復元への関与安定性注記
time gettime.readReadはいいいえなしSTABLE_BETA時計とカレンダーのフィールド。
time settime.setWriteはいはい(メモリ上の時計)なし、元に戻されないEXPERIMENTAL例: --minute=<0..59>。書き込み、読み戻し、復元は 2026-09-20 に検証済み。
weather getweather.readReadはいいいえなしSTABLE_BETA
weather setweather.setWriteはいいいえ(常に拒否)なしUNAVAILABLEOL_E_RUNTIME_SETTING_NOT_PERSISTENT を返します。OMSI は次の天候ティックで値を上書きします。
weather actual getweather.actual.readReadはいいいえなしEXPERIMENTAL実天候/ICAO コントローラーの状態。
map getmap.readReadはいいいえなしSTABLE_BETAマップ名、ファイル、説明、タイル数、年の範囲、通行区分。修正後のマップスロットでランタイム再検証済み。
camera getcamera.readReadはいいいえなしSTABLE_BETA
camera setcamera.setWriteはいはい(カメラのスカラー値。例: --field_of_view=)なし、元に戻されないEXPERIMENTALFOV の書き込み/読み戻しは検証済み。
camera lockcamera.lockActionはいはい(セッションスコープのポリシー)なしEXPERIMENTAL--family=<0..3>(運転席=0、乗客=1、外部=2、マップ=3)が必須、--preset=<n> は任意(family 0 または 1)。プレイヤー車両が必要です(例: 保存済みシチュエーション)。ランタイムクロージャ(CAM01)でランタイム検証済みですが、レジストリの RuntimeValidation 文字列は依然として STATICALLY_VALIDATED のままです(ケイパビリティを参照)。
camera unlockcamera.unlockActionはいはいなしEXPERIMENTALcamera lock で設定したポリシーを解除します(CAM01)。
vehicles listroad-vehicles.listReadはいいいえなしSTABLE_BETAセッションスコープの rv-NNNNNN ハンドルを返します。
vehicles getroad-vehicle.readReadはいいいえなしSTABLE_BETA--handle= が必須。失効したハンドル: OL_E_RUNTIME_OBJECT_HANDLE_STALE。
vehicles summaryroad-vehicles.readReadはいいいえなしSTABLE_BETA件数とプレイヤーの状態。ハンドルは含みません。
vehicles spawnroad-vehicles.spawnActionはいはい(RoadVehicle を 1 台追加)なし、削除されないEXPERIMENTAL--model=Vehicles\...\*.bus が必須。クライアントのタイムアウト 30 s、オーナーのタイムアウト 15 s。プレイヤー車両は割り当てません。RV-003 RUNTIME_PASS。
vehicles place-randomroad-vehicles.place-randomActionはいはいなしEXPERIMENTALプロファイル済みの PlaceRandomBus。
player getplayer-vehicle.readReadはいいいえなしSTABLE_BETAプレイヤー車両がない場合はセマンティックな null。
humans listhumans.listReadはいいいえなしEXPERIMENTALhb-NNNNNN ハンドルを返します。
humans gethuman.readReadはいいいえなしEXPERIMENTAL--handle= が必須。
humans summaryhumans.readReadはいいいえなしEXPERIMENTAL件数のみ。
timetable gettimetable.readReadはいいいえなしSTABLE_BETA時刻表マネージャーの状態。
timetable tracks listtimetable.tracks.listReadはいいいえなしSTABLE_BETAtimetable.read ケイパビリティの一部。2026-09-20 のバッチ読み取りエビデンス。
timetable trips listtimetable.trips.listReadはいいいえなしSTABLE_BETA同上。
timetable lines listtimetable.lines.listReadはいいいえなしSTABLE_BETA同上。
timetable tours listtimetable.tours.listReadはいいいえなしSTABLE_BETA同上。
timetable profiles listtimetable.profiles.listReadはいいいえなしSTABLE_BETA同上。
timetable bus-stops listtimetable.bus-stops.listReadはいいいえなしSTABLE_BETA同上。
timetable station-links listtimetable.station-links.listReadはいいいえなしSTABLE_BETA同上。
timetable logs listtimetable.logs.readReadはいいいえなしSTABLE_BETA同上。
drivers listdrivers.readReadはいいいえなしEXPERIMENTAL運転士のレコード。
tickets gettickets.readReadはいいいえなしEXPERIMENTAL乗車券パックのレコード。
hof getvehicle.hofs.readReadはいいいえなしSTABLE_BETA--handle= が必須。
constants listvehicle.constants.listReadはいいいえなしSTABLE_BETA--handle= が必須。
constants getvehicle.constant.getReadはいいいえなしSTABLE_BETA--handle=、--name= が必須。
curves listvehicle.curves.listReadはいいいえなしSTABLE_BETA--handle= が必須。
curves evaluatevehicle.curve.evaluateReadはいいいえなしSTABLE_BETA--handle=、--name=、--x= が必須。
scripts variable listvehicle.variables.listReadはいいいえなしEXPERIMENTAL--handle= が必須。
scripts variable getvehicle.variable.getReadはいいいえなしEXPERIMENTAL--handle=、--name= が必須。
scripts variable setvehicle.variable.setWriteはいはい(スクリプト変数)なし、元に戻されないEXPERIMENTAL--handle=、--name=、--value=(有限の数値)が必須。
scripts string listvehicle.string-variables.listReadはいいいえなしEXPERIMENTAL--handle= が必須。
scripts string getvehicle.string-variable.getReadはいいいえなしEXPERIMENTAL--handle=、--name= が必須。

ルートのない操作#

以下の公開操作 id(PublicCapabilityRegistry.PublicRuntimeOperationIds)には階層ルートがなく、/runtime:<operation> に --key=value または /runtime-arg:key=value を付けて呼び出します: timetable.rv-files.list、timetable.track-entries.list、timetable.tour-entries.list、d3d.status、d3d.texture.create(width、height、format が必須、levels は任意)、d3d.texture.describe(handle、level は任意)、d3d.texture.update(handle、width、height、pixels_base64 が必須、level、x、y は任意)、d3d.texture.release(handle)。D3D 操作は EXPERIMENTAL です。テクスチャのライフサイクルとデバイスリセットによる無効化はランタイム検証済みです(ランタイムクロージャ H02、D01。ケイパビリティを参照)。timetable.track-entries.list と timetable.tour-entries.list は上限付きリストです。ランタイムスロットに収まらない結果は短縮されます(truncated=true)。internal.road-vehicles.make-basic は INTERNAL であり、CLI と API の両方で OL_E_RUNTIME_OPERATION_UNKNOWN により拒否されます。

フラグ#

CliInput.KnownFlags のすべてのフラグです。「フェーズ」は launch-time(新しいセッションの LaunchSpec/プランを形作る)、runtime(実行中のセッションに作用する)、control(CLI 自体の動作を変える)のいずれかです。互換性のためだけに解析されるフラグ(CliInput.AcceptedNoEffectFlags)は、その行に明記しています。

制御と出力#

フラグ構文と値デフォルトフェーズ安定性動作
/?/?オフcontrolSTABLE_BETA使用方法のテキストを出力し、終了コード 0。
/help/helpオフcontrolSTABLE_BETA/? と同じです。(裸の単語 help は代わりに構造化されたカタログを返します。)
/version/versionオフcontrolSTABLE_BETAversion エンベロープ、終了コード 0。/silent を除く他のすべてのコマンドより先に評価されます。
/json/json または --jsonオフcontrolSTABLE_BETAJSON エンベロープを出力します。OmsiLaunchW.exe の下でもコンソール出力を強制します。
/quiet/quietオフcontrolACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECTCliInput.Quiet を設定しますが、これを読み取る箇所はありません。
/silent/silent(--silent も可)オフcontrolEXPERIMENTALコマンドライン全体を OmsiLaunchW.exe に委譲し、ホストプロセスが開始された時点で 0 を返します。セッションの結果は OmsiLaunchW.exe(メッセージボックス、トレイアイコン)、.omsilaunch\diagnostics、およびローカル制御エンドポイントによって報告されます。委譲とエラーダイアログはランタイム検証済みです(ランタイムクロージャ T04)。OmsiLaunchW.exe を参照してください。
/serve/serveオフcontrolACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECTCliInput.Serve を設定しますが、これを読み取る箇所はありません。制御エンドポイントは常にオーナーによって開始されます。
/verbose/verboseオフlaunch-timePARTIALDiagnosticsSpec.Verbose。値は spec に保持されますが、その効果は .omsilaunch\diagnostics 配下のホストトレースに限られます。
/log/logオン(DiagnosticsSpec.Log のデフォルトは true)launch-timePARTIALDiagnosticsSpec.Log。事実上常にオンです。
/logall/logallオフlaunch-timePARTIALVerbose、ProcessTrace、PluginTrace、NativeTrace をまとめて設定します。
/omsi-logall/omsi-logallオフlaunch-timePARTIALDiagnosticsSpec.OmsiLogAll。
/trace/traceオフlaunch-timePARTIAL/trace-process の別名です。
/trace-process/trace-processオフlaunch-timePARTIALDiagnosticsSpec.ProcessTrace。
/trace-plugin/trace-pluginオフlaunch-timePARTIALDiagnosticsSpec.PluginTrace。
/trace-native/trace-nativeオフlaunch-timePARTIALDiagnosticsSpec.NativeTrace。

プランニング、検証、ハーネス#

フラグ構文と値デフォルトフェーズ安定性動作
/plan/planオフlaunch-timeSTABLE_BETASessionPlan を構築して出力し、OMSI は起動しません。IsRunnable なら終了コード 0、それ以外は 1。起動対象の選択(/new、/saved、/spec、またはインストール引数)が必要です。他に何も指定しない /plan 単独では detect が実行されます。
/validate/validateオフlaunch-timeSTABLE_BETAこのビルドでは /plan と同一です。
/runtime-batch/runtime-batchオフruntime(オーナー)INTERNAL検証ハーネス: Running の後、読み取り操作のセットを実行し、<sessionId>-runtime-read-batch.json を書き込みます。
/runtime-write-batch/runtime-write-batchオフruntime(オーナー)INTERNAL検証ハーネス: 読み取りに加えて、復元付きで time.set、camera.set、vehicle.variable.set を実行し、<sessionId>-runtime-write-batch.json を書き込みます。
/d3d-batch/d3d-batchオフruntime(オーナー)INTERNALD3D テクスチャのライフサイクル用の検証ハーネスです。<sessionId>-d3d-wave-d-batch.json を書き込みます。
/runtime/runtime:<operation>なしruntimeSTABLE_BETA(ディスパッチ)公開ランタイム操作を id で選択します。クライアントモード(インストール引数なし): オーナーに転送されます。オーナーモード: Running の後に 1 回実行されます。未知の id: OL_E_RUNTIME_OPERATION_UNKNOWN、終了コード 2。
/runtime-arg/runtime-arg:<key>=<value>(繰り返し可)なしruntimeSTABLE_BETA(ディスパッチ)ランタイム引数です。--key=value と同等です。= がない場合: /runtime-arg requires key=value、終了コード 2。

ワールドの選択#

フラグ構文と値デフォルトフェーズ安定性動作
/new/newWorldMode.NewMap がデフォルトのモードですが、起動が要求されるのは /new、/saved、/last、/spec のいずれかが指定された場合のみですlaunch-timeSTABLE_BETANEW_MAP。/map と /entrypoint-index が必須です(表示上のエントリポイントインデックスがないプランは OL_E_ENTRYPOINT_REQUIRED を報告し、/map がない場合はマップが解決されません)。/new が暗黙のうちにマップを選択することはありません。
/saved/saved:<file.osn>なしlaunch-timeSTABLE_BETASAVED_SITUATION。マップと位置は .osn から取得されます。/saved と一緒に指定した /map、/entrypoint、/entrypoint-index は拒否されます(終了コード 2)。シチュエーションがない場合: OL_E_SITUATION_NOT_FOUND。そのマップがない場合: OL_E_SITUATION_MAP_NOT_FOUND。
/last/lastなしlaunch-timeUNAVAILABLELAST_MAP_STATE。このプロファイルでは常に OL_E_CAPABILITY_UNAVAILABLE(実行不可、終了コード 1)になります。タイムスタンプに基づく .osn へのフォールバックは行われません。
/map/map:<identity>(例: maps\Grundorf\global.cfg)なしlaunch-timeSTABLE_BETA/new 用のマップ識別子、または /list:Entrypoints のスコープです。未知の場合: OL_E_MAP_NOT_FOUND。
/entrypoint/entrypoint:<identity>なしlaunch-timeUNAVAILABLEラベルによるエントリポイント指定です。ゲートされています。プランは world.entrypoint-identity を RUNTIME_PARTIAL として記録し、実行不可になります(OL_E_CAPABILITY_UNAVAILABLE)。/entrypoint-index とは排他です(識別子が優先され、インデックスはクリアされます)。
/entrypoint-index/entrypoint-index:<n>、0..2147483647なしlaunch-timeSTABLE_BETAエントリポイントの表示リスト上のインデックスです(OMSI が表示するとおり 1 始まり)。実行可能な NEW_MAP プランには必須です。

日付、時刻、天候#

これら 4 つはすべて受け付けられ、LaunchSpec に保持されますが、ネイティブの開始経路はこれらを適用しません。プランナーはこれらを STATICALLY_PARTIAL として記録し、さらに OL_E_CAPABILITY_UNAVAILABLE を追加するため、プランは NOT RUNNABLE(実行不可)になります(終了コード 1)。これらを設定する /spec ファイルやセッションプロファイルも同じ結果になります。

フラグ構文と値デフォルトフェーズ安定性動作
/date/date:<yyyy-mm-dd> または /date:system未設定launch-timeUNAVAILABLEDateSpec の明示指定/システム。解析できない値: OL_E_INVALID_ARGUMENT、終了コード 2。
/time/time:<hh:mm[:ss]> または /time:system未設定launch-timeUNAVAILABLETimeSpec の明示指定/システム。
/year/year:<n> または /year:system未設定launch-timeUNAVAILABLEYearSpec。
/weather/weather:<preset>未設定launch-timeUNAVAILABLEWeatherMode.Preset。
/weather-icao/weather-icao:<code>未設定launch-timeUNAVAILABLEWeatherMode.Icao。
/weather-real/weather-real未設定launch-timeUNAVAILABLEWeatherMode.RealCurrent。/weather、/weather-icao、/weather-real のうち最後に指定したものが優先されます。

プレイヤー車両#

受け付けられ、インストール環境に照らして解決されますが、ランタイムでは適用されません。設定された各フィールドは STATICALLY_PARTIAL となり、OL_E_CAPABILITY_UNAVAILABLE を追加します(プランは NOT RUNNABLE、終了コード 1)。

フラグ構文と値デフォルトフェーズ安定性動作
/vehicle/vehicle:<identity>(Vehicles\...\*.bus)未設定launch-timeUNAVAILABLE最初に解決されます(未知の場合は OL_E_VEHICLE_NOT_FOUND)。
/repaint/repaint:<id>未設定launch-timeUNAVAILABLE/vehicle と一緒に指定した場合にのみ解決されます(OL_E_REPAINT_NOT_FOUND)。
/hof/hof:<id>未設定launch-timeUNAVAILABLE未知の場合は OL_E_HOF_NOT_FOUND。
/fleet/fleet:<n>未設定launch-timeUNAVAILABLE車両番号。
/registration/registration:<text>未設定launch-timeUNAVAILABLE登録番号。
/no-vehicle/no-vehicleオフlaunch-timeSTABLE_BETAシード(/spec またはプロファイル)からプレイヤー車両をすべてクリアします。無害です。

設定オーバーレイ#

フラグ構文と値デフォルトフェーズ安定性動作
/set/set:<key>=<value>(繰り返し可、キーは大文字と小文字を区別しない)なしlaunch-timeSTABLE_BETAConfigurationCatalog に基づく、セマンティックな options.cfg オーバーレイです(例: graphics.maxFPS=60、traffic.randomVehicles=150)。未知のキー: OL_E_UNKNOWN_SETTING(終了コード 2)。読み取り専用のキー(advanced.multithreadingCalculate、advanced.multithreadingTextureLoad、graphics.texture、graphics.textureFilter): OL_E_SETTING_NOT_WRITABLE(終了コード 2)。範囲外または不正な形式の値: オーバーレイの構築時に OL_E_INVALID_SETTING_VALUE。オーバーレイはセッションによる変更です。スナップショットが取られ、OMSI の起動前に適用され、停止時にバイト単位で正確に復元されます(RV-005 RUNTIME_PASS)。選択したプロファイルのプリセットが所有するキーと競合する場合: OL_E_SESSION_PROFILE_OVERRIDE_CONFLICT。

スプラッシュの表示#

フラグ構文と値デフォルトフェーズ安定性動作
/splash/splash:Managed、/splash:Native、/splash:Unset(大文字と小文字を区別しない)Managedlaunch-timeSTABLE_BETAManaged: パッケージに同梱された 640x480 24 ビットの BMP が <root>\.omsilaunch\assets\splash に一度だけコピーされ、GUI\NewSplashscreen_ENG.bmp と GUI\NewSplashscreen_<lang>.bmp がトランザクションとしてオーバーレイされ、正確に復元されます(RV-006 RUNTIME_PASS)。Native/Unset(別名): OMSI のファイルには触れません。値がない場合: /splash requires Unset, Native, or Managed、終了コード 2。
/splash-language/splash-language:PTB|ENG|DEU|FRA(pt-BR、de、fr、en も可。それ以外はすべて ENG にフォールバック)options.cfg の [language]、なければ ENGlaunch-timeSTABLE_BETAローカライズされた対象ファイルを選択します。
/splash-assets/splash-assets:<directory>(相対パスはインストールルート配下として解決)<root>\.omsilaunch\assets\splash、なければパッケージ同梱のセットlaunch-timeSTABLE_BETAカスタムのアセットディレクトリです。ENG.bmp と、英語以外の言語の場合は <lang>.bmp を含む必要があります。エラー: OL_E_SPLASH_ASSET_DIRECTORY_MISSING、OL_E_SPLASH_ASSET_MISSING、OL_E_SPLASH_FORMAT_UNSUPPORTED(プランでは OL_E_SESSION_PRESENTATION_INVALID として表面化し、実行不可)。

Internet Textures#

フラグ構文と値デフォルトフェーズ安定性動作
/internet-textures/internet-textures:Native|Disabled|OverrideNativelaunch-timeEXPERIMENTALNative: 変更しません。Disabled: プロファイル済みのプロセス内ダウンローダーが抑止されます。Override: 指定した .itx プロファイルが Texture\standard.itx としてオーバーレイされます。そこに列挙されたすべての HTTP(S) ターゲットと Texture\standard.ipr は、セッション削除(セッション中は削除され、停止時に復元)になります。値がない場合: 終了コード 2。
/internet-textures-profile/internet-textures-profile:<file.itx>なしlaunch-timeEXPERIMENTALOverride の場合は必須です(OL_E_ITX_PROFILE_REQUIRED、終了コード 2)。OL_E_ITX_PROFILE_MISSING、OL_E_ITX_PROFILE_INVALID(http/https URL を持つ URL/ターゲット行のペアである必要があります)、OL_E_ITX_TARGET_OUTSIDE_TEXTURE_PATH(ターゲットは Texture\ 配下に解決される必要があり、ルート付きパス、..、リパースポイントは不可)。

セッションプロファイル#

フラグ構文と値デフォルトフェーズ安定性動作
/predefined-profile/predefined-profile:<id>なしlaunch-timeSTABLE_BETA(コンパイル。オフラインの OmsiLaunch.ProfileTests)<root>\.omsilaunch\session-profiles\<id>\profile.yaml を読み込みます(セッションプロファイルを参照)。/predefined-profile-index が必須です(OL_E_SESSION_PROFILE_PRESET_NOT_FOUND、終了コード 2)。new: ブロックは /new の場合にのみ適用されます。compatibility.maps は /new と /saved に対して強制されます(OL_E_SESSION_PROFILE_MAP_MISMATCH)。プロファイルが所有するフィールドと衝突する明示的なフラグは OL_E_SESSION_PROFILE_OVERRIDE_CONFLICT で拒否されます(CliInput.RejectProfileConflicts)。対象は、new: ブロックが所有する場合の map/entrypoint/date/time/year/weather、プリセットが所有する /set キー、プリセットに presentation がある場合のスプラッシュフラグ、internet-textures がある場合の Internet Textures フラグ、behavior がある場合のタイムアウトです。
/predefined-profile-index/predefined-profile-index:<1..5>なしlaunch-timeSTABLE_BETAindex によってプリセットを選択します。範囲外: 終了コード 2。

LaunchSpec ファイル#

フラグ構文と値デフォルトフェーズ安定性動作
/spec/spec:<path.json>なしlaunch-timeSTABLE_BETA(ローダーはオフラインテスト済み。セッションのセマンティクスはフラグと同一)LaunchSpec JSON ファイルをシードとして読み込み(LaunchSpec を参照)、起動が要求されたものとして扱います。規則(LaunchSpecJson): ファイルが存在すること(OL_E_SPEC_NOT_FOUND、終了コード 6)。最大 1 MiB(OL_E_SPEC_TOO_LARGE、終了コード 2)。ルートはオブジェクトであること(OL_E_SPEC_INVALID)。プロパティ名は大文字と小文字を区別しない。// コメントと末尾のカンマは許可。深さは最大 32。未知のプロパティはすべて、その JSON パスとともに拒否されます(OL_E_SPEC_UNKNOWN_PROPERTY: $.Presentation.Foo、終了コード 2)。

優先順位(CliInput.BuildSpecAsync): デフォルト → /spec ファイル → /predefined-profile(Installation と World を置き換えてから、プロファイルを適用) → 明示的なフラグ。明示的なインストール引数は spec 内の RootPath より優先されます。/no-vehicle は spec のプレイヤー車両をクリアします。/vehicle とその関連フラグはフィールド単位で spec にマージされます。/set キーは Environment.General にマージされます。/splash、/splash-language、/splash-assets、/internet-textures、/internet-textures-profile は指定された場合にのみ上書きします。/startup-timeout と /shutdown-timeout は指定された場合にのみ上書きします。Presentation.SuppressTrayIcon は spec からのみ取得されます(フラグはありません)。診断フラグは spec の Diagnostics と OR で結合されます。

コンテンツの検出#

フラグ構文と値デフォルトフェーズ安定性動作
/list/list:<category>。カテゴリは ContentQueryKind の値 Maps、Situations、Vehicles、Repaints、Hofs、FleetNumbers、Registrations、Addons、Entrypoints(大文字と小文字を区別しない)なしローカル、セッション不要STABLE_BETAインストール環境に対する DiscoverAsync です。Identity、Kind、DisplayName のエントリを含むエンベロープ content.list。終了コード 0。未知のカテゴリ: Unknown discovery category、終了コード 2。リパースポイント(ジャンクション/シンボリックリンク)はスキップされ、OMSI のファイルは Windows-1252 として読み取られます。
/vehicle-scope/vehicle-scope:<vehicle identity>なしローカルSTABLE_BETAEntrypoints を除くすべてのカテゴリに転送されるスコープです。Entrypoints は /map をスコープとして使用します。

タイムアウトと観察#

フラグ構文と値デフォルトフェーズ安定性動作
/startup-timeout/startup-timeout:<1..600> 秒spec/プロファイルの値、なければ 180launch-timeSTABLE_BETABehavior.StartupTimeoutSeconds。オーナーはこの値に 5 s を加えた時間だけ Running を待機します。OL_E_STARTUP_TIMEOUT はセッションを終了させ、終了コードは 1 です。
/shutdown-timeout/shutdown-timeout:<1..600> 秒spec/プロファイルの値、なければ 30launch-timeACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECTBehavior.ShutdownTimeoutSeconds に保持されますが、このビルドのスーパーバイザーはこれを使用しません(OMSI は終了を依頼されるのではなく、強制終了されます)。
/observe-seconds/observe-seconds:<0..2147483647>なし(OMSI が終了するか停止が要求されるまで実行)runtime(オーナー)STABLE_BETA実行フェーズの上限です。Running になってから n 秒後に正規の停止が要求されます。トレイやパイプからの停止、または OMSI の終了があれば、それより早く終わります。0 は Running の直後に停止します。

リカバリ#

フラグ構文と値デフォルトフェーズ安定性動作
/recovery-status/recovery-statusオフローカルSTABLE_BETA<root>\.omsilaunch\journal.json が保留中かどうか(pending)を報告し、復元は決して行いません。終了コード 0。インストールリースを取得します。オーナーがリースを保持している間は OL_E_INSTALLATION_BUSY(終了コード 7)です。
/recover/recoverオフローカルSTABLE_BETA保留中のジャーナルを復元します(まずバックアップをスナップショットの SHA-256 と照合して検証します。OL_E_RECOVERY_BACKUP_CORRUPT、OL_E_RECOVERY_ABSENT_OWNERSHIP_MISMATCH、OL_W_RESTORE_FOREIGN_FILE_RETAINED は diagnostics に報告されます)。何も保留されていなかった場合、または復元が完了した場合は終了コード 0。ジャーナルが保留中で、そのまま残っている場合は 8。ジャーナルに記録された OMSI プロセス(PID、作成時刻、exe パス)、または PID を持たない HandoffCreated 以降のジャーナルの場合はそのルートの任意の Omsi.exe が生存している間は、OL_E_INSTALLATION_BUSY で拒否されます。すべてのセッション開始時には、インストール環境を読み取る前に同じリカバリが自動的に実行されます。

出力形式#

  • 成功エンベロープ(CliInput.WriteEnvelope、--json 指定時): {"ok": true, "command": "<name>", "protocol_version": "0.1", "result": <object>}(インデント付き)。転送された session status および events read の応答では、制御フレームに収めるために古いイベントが除外された場合、metadata メンバーが追加されます(events_dropped_count、ローカル制御を参照)。--json がない場合は <object> のみがインデント付き JSON として出力され、イベントが除外された場合はその後に Note: <n> older events were omitted to fit the control frame. が続きます。
  • エラーエンベロープ(CliInput.WriteError、--json 指定時): {"ok": false, "command": "<name>", "protocol_version": "0.1", "error": {"code": "OL_E_...", "category": "<category>", "message": "..."}}。--json がない場合: 1 行の OL_E_<CODE>: message。カテゴリ: invalid_argument、unsupported_profile、session、runtime、not_found、transaction、internal。OmsiLaunchW.exe の下では、同じコードとメッセージがメッセージボックスで表示されます。
  • プランとステータス(CliInput.Write): SessionPlan、SessionStatus、RuntimeCommandResult の各レコードは、エンベロープ なし でインデント付き JSON として出力されます。--json がない場合、プランは Plan: READY profile=Omsi23004_692EBFBF または Plan: NOT RUNNABLE profile=... と要約されます。その他のレコードは引き続き JSON として出力されます。列挙値は整数としてシリアル化されます(SessionState.Running は 14、Completed は 18、Failed は 19)。
  • エンベロープで使用されるコマンド名: silent、version、capabilities、help、profiles、detect、recover、content.list、session、session.status、session.stop、events.read、events.watch、events watch、installation、cli、session profile、および転送されたランタイムコマンドのランタイム操作 id。
  • OmsiLaunchW.exe(OMSILAUNCH_WINDOWS_HOST=1)の下では、--json が指定されない限りコンソールには何も書き込まれません。

コマンドごとのエラー#

コマンド代表的なエラーコード終了コード
任意の解析失敗OL_E_INVALID_ARGUMENT、セッションプロファイルのコード(OL_E_SESSION_PROFILE_*)2
/silentOL_E_WINDOWS_HOST_MISSING、OL_E_WINDOWS_HOST_START_FAILED7
クライアントルート、/runtime(クライアント)OL_E_RUNTIME_OPERATION_UNKNOWN、OL_E_RUNTIME_ARGUMENT_REQUIRED(2)。OL_E_NO_ACTIVE_SESSION(4)。オーナーが返す OL_E_CONTROL_*、OL_E_RUNTIME_*。例: OL_E_RUNTIME_REQUEST_TIMEOUT、OL_E_RUNTIME_OBJECT_HANDLE_STALE、OL_E_RUNTIME_SETTING_NOT_PERSISTENT、OL_E_RUNTIME_RESPONSE_TOO_LARGE、OL_E_SESSION_NOT_RUNNING(7)2、4、7
session status、session stop、events read、events watchOL_E_NO_ACTIVE_SESSION(4)。OL_E_CONTROL_SESSION_MISMATCH、OL_E_CONTROL_PROTOCOL、OL_E_CONTROL_FAILED(7)4、7
オーナーの事前チェックOL_E_RUNTIME_INSTALLATION_INCOMPLETE、OL_E_SESSION_ALREADY_ACTIVE7
/recovery-status、/recoverOL_E_INSTALLATION_BUSY(7)。OL_E_RECOVERY_*、OL_E_RESTORE_FAILED(8)。保留中だがリカバリされなかった場合(8)7、8
/list未知のカテゴリ(2)。OL_E_INSTALLATION_NOT_FOUND/ディレクトリの欠落(6)2、6
/specOL_E_SPEC_NOT_FOUND(6)。OL_E_SPEC_TOO_LARGE、OL_E_SPEC_INVALID、OL_E_SPEC_UNKNOWN_PROPERTY(2)2、6
/setOL_E_UNKNOWN_SETTING、OL_E_SETTING_NOT_WRITABLE、OL_E_INVALID_SETTING_VALUE2
/plan、/validate、起動プラン診断: OL_E_PERMANENT_PLUGIN_MISSING、OL_E_PERMANENT_PLUGIN_HASH_MISMATCH、OL_E_PERMANENT_PLUGIN_MANIFEST_INCOMPLETE(インストール済みのプラグイン一式)、OL_E_UNSUPPORTED_BUILD、OL_E_UNSUPPORTED_OPERATING_SYSTEM、OL_E_INSTALLATION_NOT_WRITABLE、OL_E_MAP_NOT_FOUND、OL_E_ENTRYPOINT_REQUIRED、OL_E_SITUATION_NOT_FOUND、OL_E_SITUATION_MAP_NOT_FOUND、OL_E_VEHICLE_NOT_FOUND、OL_E_REPAINT_NOT_FOUND、OL_E_HOF_NOT_FOUND、OL_E_CAPABILITY_UNAVAILABLE、OL_E_SESSION_PRESENTATION_INVALID、OL_E_RUNTIME_ARTIFACT_MISSING、plugin.integrity.reference(情報提供)1
セッションの開始OL_E_PLAN_NOT_RUNNABLE(開始時の再プランニング、1)。OL_E_PERMANENT_PLUGIN_MISSING、OL_E_PERMANENT_PLUGIN_HASH_MISMATCH、OL_E_PERMANENT_PLUGIN_MANIFEST_INCOMPLETE、OL_E_RELEASE_MANIFEST_INVALID(通常はプランニングがプラン診断として報告し、終了コード 1。プランニングから開始までの間にプラグインファイルが変化した場合にのみ 7)、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(セッションは Failed、1)1、7
任意の場所での未処理例外CliProgram.Classify によって分類されます(終了コードを参照)2..10

環境#

変数設定元効果
OMSILAUNCH_WINDOWS_HOST=1OmsiLaunchW.exeWindowsHost.IsActive: コンソール出力は抑止され、失敗はメッセージボックスで表示され、/silent は再委譲されません。

関連項目#

CLI の使用例 · OmsiLaunchW.exe · 終了コード · エラー · ローカル制御 · Windows トレイ · ランタイム制御 · ケイパビリティ · LaunchSpec · セッションプロファイル · パッケージング · 互換性 · 既知の制限事項 · 公開 API