我需要通过传递补丁文件的 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/