動的フラグを使用してサードパーティの実行可能ファイルを実行する必要があるため、Go で少しハックしました (これはサーバー設定と一部のハードウェア仕様に依存するため、マシンごとに毎回異なります)。
私はいくつかのきちんとしたライブラリを使用して、Go 実行可能ファイルが配置されているパスを見つけられるようにしています。サードパーティのバイナリは Go one と同じフォルダーにあります。
path, err := osext.ExecutableFolder()
if err != nil {
log.Fatal(err)
}
path += "3rdparty.exe"
次に、fmt のSprintf
メソッドを実行して、パスとフラグを Command という単一の文字列に入れます。
私はそれを次のように呼び出そうとします:
out, err := exec.Command(Command).Output()
if err != nil {
fmt.Println("Command execution failed:", err)
}
ただし、エラーはゼロではありません。エラーを vmware からコピーすることはできません (コンパイルとテストのためだけにウィンドウをセットアップします) が、次のようになります。
Command execution failed: "C:\\PATH\\TO\\3rdparty.exe --flags-omitted" file does not exist
ただし、C:\\PATH\\TO\\3rdparty.exe --flags-omitted
cmdにコピーすると、完全に実行されます。
何か案は?