c# - Mono (Linux) 中带有 Args 的 Process.Run(),不启动进程

标签 c# unix process mono arguments

我需要通过传递补丁文件的 URL 来启动更新程序应用程序。 Basic Process.Run 工作正常,但是当我传递参数时什么也没有发生。 (这是 Linux Mint 和 Mono)

我已经检查过 SO、net 等,并尝试了诸如将 UseShellExecute 设置为 false 或使用 ProcessStartInfo 等解决方案。

我做错了什么? 更新程序位于主 exe 所在的同一文件夹中。 Mono 控制台没有显示错误。

有效:(对每个人都有效,所以这并不奇怪)

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

不起作用(什么也没有发生,也是预期的吗?):

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

来 self 尝试过的其他解决方案:

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 我检查了其他一些博客和谷歌结果。遗憾的是,没有任何解决方案对我有用。

更多信息可能不那么重要,但可能有帮助:

  • 代码可在 Windows 中运行
  • 我通过检查平台来运行与 Windows 代码分离的 Mono 代码
  • 应用程序检查更新,然后启动更新程序并自行关闭
  • 更新程序与主 exe 位于同一文件夹中
  • 更新程序是独立的项目
  • 这是一个可移植应用程序

我做错了什么?谢谢。

最佳答案

尝试添加前缀“mono”,因为您实际上希望使用 .exe 作为参数来运行 mono。我还通过另一种方式确定应用程序路径:

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

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

关于c# - Mono (Linux) 中带有 Args 的 Process.Run(),不启动进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42670385/

相关文章:

linux - 即使某些进程完成,也要不断填充并行进程的四个槽

linux - "ls *"输出不一致

c# - 如何在不知道元素的情况下循环所有 XML 属性

c# - Linq 扩展方法和错误处理

c# - 无法识别的转义序列 C#6 字符串插值

linux - 为什么在 Unix 的 crontab 条目中包含 ". ./.profile"?

python - 当所有权正确时,为什么 `killpg` 会返回 “not permitted”?

android - 如何通过运行应用程序获取 CPU 使用率

python - 退出应用程序时如何终止 python.exe*32 进程?

c# - 如何在 Visual Studio 的 WPF Python 项目中手动创建 App.xaml 文件?