2017-03-08 12 views
1

パッチファイルのURLを渡してアップデータアプリケーションを起動する必要があります。基本的なProcess.Runは正常に動作しますが、引数を渡すと何も起こりません。 (これはLinux MintとMonoです)Process.Run()とMono(Linux)でプロセスを開始しない

私はすでにSO、netなどをチェックしており、UseShellExecuteをfalseに設定するか、ProcessStartInfoを使用するなどのソリューションを試しました。

私は間違っていますか? アップデータは、メインのexeと同じフォルダにあります。 モノコンソールにエラーが表示されません。

作品は:(?何も期待、起こりません)

Process.Start (Application.StartupPath + @"/Updater.exe"); 

が動作しない(そこに皆とても驚きの作品):私が試した他のソリューションから

Process.Start(Application.StartupPath + @"/Updater.exe", "URLToFile"); 

Process.Start(new ProcessStartInfo(Application.StartupPath + @"/Updater.exe", @"URLToFile.zip") { UseShellExecute = false }); 

私はまた、ここに提案された多くのソリューションを試しました: How to use Process.Start() or equivalent with Mono on a Mac and pass in arguments 他のブログやGoogleの結果を確認しました。私のために悲しいことに解決策はありませんでした。同様に重要ではないかもしれませんが、助けることができる

さらに詳しい情報:

  • コードは、Windows
  • で働く私は、プラットフォームに更新のため
  • アプリケーションのチェックをチェックすることによって、Windowsのコードから分離モノ・コードはその後、アップデータを開始し実行します
  • アップデータは、メインのexeファイルと同じフォルダにあります
  • アップデータは別プロジェクト
  • これは移植可能なアプリケーションです

私は間違っていますか?ありがとう。

答えて

2

実際には.exeを引数として使用してモノを実行したいので、 "mono"という接頭辞を付けてみてください。また、私は別の方法でアプリケーションのパスを調べる:

string sAppPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

Process.Start("mono " + sAppPath + @"/Updater.exe");

+0

私が提供した例を使用して、コンソールで「そのようなファイルやディレクトリを」取得していませんよ。 gvfs-open:mono/home/hrcak/Desktop/File/Updater.exe:場所を開く際にエラーが発生しました: '/ home/hrcakファイルの情報を取得中にエラーが発生しました。 /mono/home/hrcak/Desktop/File/Updater.exe ':そのようなファイルやディレクトリはありません "mono"と "open"を開始するプロセス情報を使用しようとしました。同じエラーが発生します。 – Hrcak

0

申し訳ありませんが、私は自分のコードをテストしませんでした。今私は小さなプロジェクトを行い、それをテストしました。ラベルとボタンのあるフォームだけです。うまく動作します。私は正しい経路を得ており、HelloWorld Appが起動し、CmdLineArgを処理します。ここで中核的なコンテンツが来る:

private void DoIt() { string sAppPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(); psi.FileName = "mono"; psi.Arguments = sAppPath + @"/HelloWorld.exe CmdLineArg"; System.Diagnostics.Process.Start(psi); }

関連する問題