CLIのエラー処理方法

エラー処理コマンド

以下のコマンドと設定により、アプリケーションコマンドラインの処理中に発生する可能性のあるエラーを処理することができます。

コマンド名

必要なパラメータ

オプションのパラメータ

説明

silent

crashReportPath

 

警告ダイアログとクラッシュレポートのアップロードを抑制します。アップロードウィザードは表示されず、レポートは指定された場所に保存されます。

set

"key=value"

 

アプリケーションの状態変数を設定します。

writeProgress

fileName timeout

 

定義された期間(秒単位のタイムアウト)の間に、進行状況の変更を指定されたファイル(パスを含むfileName)に書き込みます。サンプルのファイル構造は下記を参照してください。

 

設定名

キー

デフォルト値

エラーで終了

appQuitOnError

bool

false

必要な再起動時に終了

appQuitOnReset

bool

false

最小処理時間

appProcessActionTime

int

15

アクション

appProcessAction

None

None

PlaySound

ExecuteProgram

コマンドライン処理*
*関連: "appProcessAction=ExecuteProgram"

appProcessExecCmd

string

 

サンプルと詳細情報

クラッシュ、エラー、警告ダイアログを非表示にする

RealityCapture.exe -silent c:\\CrashReportFolder ^  -set "appQuitOnError=true" ^  -set "appProcessActionTime=0" ^  -set "appProcessAction=ExecuteProgram" ^  -set "appProcessExecCmd=c:\\MyScripts\\ErrorWriter.bat $(processResult) $(processId) $(processDuration:d) c:\\ErrorReportFolder\\ErrorReport.txt"
  • パラメータ c:\ CrashReportFolderを指定した-silentコマンドは、クラッシュレポートのミニダンプをターゲットフォルダのCrashReportFolderにリダイレクトします。このコマンドにより警告ダイアログも非表示になります。

  • appQuitOnError をTrueに設定すると、エラーの発生時にアプリケーションが終了します。

  • 0に設定したappProcessActionTimeは、継続時間が0秒以上のすべてのプロセスに留意する、つまり実際にはすべてのプロセスに留意するという意味になります。

  • 2に設定したappProcessActionは、「プログラムを実行する」という意味です。

  • appProcessExecCmd は、そのフルパスの\MyScripts\ErrorWriter.bat と必要な入力パラメータの$(processResult) $(processId) $(processDuration:d) c:\ErrorReportFolder\ErrorReport.txtを使用して、特定のコマンド(バッチスクリプト)ErrorWriter.bat に設定されます。

これらの3つの設定は、プロセス期間が指定された最小時間(0秒)を超えると、アプリケーションがプログラムErrorWriter.batを実行するという方法で、まとめて解釈することができます。

実行されたプログラムの入力パラメータとして、アプリケーションからの値を使用できます。

例:
processResult - プロセスの結果を表す数値(processResultが0の場合、プロセスは正しく終了しています)
processId - プロセスのID
processDuration:d - プロセスを終了するのにかかった時間を示す数値


独自の入力パラメータ(c:\\ErrorReportFolder\\ErrorReport.txtなど)を使用して、名前や検出されたエラーのレポートが書き込まれるテキストファイルへのフルパスなど、必要なデータをスクリプトに送信することもできます。

これは、短いバッチスクリプトErrorWriter.batの簡単なサンプルです。

if /i "%1" NEQ "0" (                 if /i "%1" NEQ "1" (                     echo An error occured by process %2 which finished with result code %1 in %3 seconds. > %4                 ) )

ここで、%1, %2, %3, %4は、入力パラメータの$(processResult)、$(processId)、$(processDuration:d)、c:\\ErrorReportFolder\\ErrorReport.txtです。このスクリプトにより、入力パラメータprocessResultの値がチェックされます。値が0でない場合、プロセスはエラーで終了し、スクリプトは出力ErrorReportテキストファイルに短いレポートを書き込みます。

An error occurred by process 20599 which finished with result code 2181038335 in 0 seconds.

 

再起動時に終了

変更後にアプリケーションの再起動が必要なアプリケーション設定がいくつかあります。このような場合は、appQuitOnResetキーをTrueに設定して-setコマンドを使用し、ダイアログを非表示にすることができます。このキーを使用してそれぞれの設定を変更すると、アプリケーションが終了しますので注意してください。以下は、キャッシュディレクトリをカスタムの場所に変更して新しいシーンを開く方法についてのサンプルです。

RealityCapture.exe -set "appQuitOnReset=true" ^ -set "appCacheLocation=Custom" RealityCapture.exe -set "appQuitOnReset=true" ^ -set "appCacheCustomLocation=D:\cr-tmp" RealityCapture.exe -newScene

 

進行状況のモニタリング

-writeProgressコマンドを使用すると、定義された期間(タイムアウト)の間に、指定されたファイル(fileName)に進行状況の情報を書き込むことができます。

作成されたファイルは、次の5つの列で構成されます。


algId – プロセスの ID
progress – プロセスの段階を示すこの間隔<0,1>からの番号
duration – 秒単位の経過時間
estimation – 秒単位の推定残り時間
eventType – {started, progress, timeout, completed}、特定の記録を生成したイベント

20561 0.00 0.04 404.08 #started
20561 0.45 0.10 0.22 #progress
20561 0.85 14.76 3.26 #progress
20561 0.90 15.04 1.70 #progress
20561 0.91 16.18 1.76 #progress
20561 0.94 16.72 1.82 #progress
20561 0.96 16.78 1.42 #progress
20561 0.97 17.06 0.55 #progress
20561 1.00 17.10 0.10 #progress
20561 1.00 17.13 0.00 #completed