我试图从WPF应用程序运行Python脚本,但我无法弄清楚如何在客户端计算机上找到该文件。我知道ClickOnce将文件安装到AppData \ Local \,但这似乎是搜索脚本的一种不好的方式。
在我的代码中,我按如下方式启动shell:
var p = new Process();
p.StartInfo.FileName = @"C:\Python27\python.exe";
p.StartInfo.Arguments = String.Format("{0} {1}", ScriptName, args);
//p.StartInfo.WorkingDirectory = @"<path\to\project>";
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
在我的开发机器上,如果我将它设置为项目路径,那么WorkingDirectory
参数会使它全部工作,因为Python脚本所在的位置。
我在ClickOnce文件清单中包含了该脚本,并且我已经验证它在每个版本的应用程序部署中都会结束。我还验证了文件最终在混淆的层次结构中的客户端计算机上,所以一切都已到位,除了我无法让我的WPF应用程序实际运行它。我总是可以将文件复制到机器上的已知位置,但这完全违背了ClickOnce的要点。
非常感谢任何想法。
答案 0 :(得分:0)
我让这个工作,但我不是百分百确定如何。无论如何,这是我所做的,以防它帮助其他人。
不要设置流程工作目录(已在我的问题中注释掉) 设置Python脚本属性如下:
在“项目属性”下的“发布”选项卡中,将脚本设置为“应用程序文件”中的Include
。
通过上述更改,我的应用程序可以在客户端计算机上正确部署。