在clickonce应用程序中运行捆绑的python脚本

问题描述:

我试图从WPF应用程序运行Python脚本,但我无法弄清楚如何在客户端计算机上找到该文件。我知道ClickOnce会将这些文件安装到AppData \ Local \中,但这似乎是一种搜索脚本的糟糕方式。在clickonce应用程序中运行捆绑的python脚本

在我的代码,我开始一个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的点。

任何想法将不胜感激。

我得到了这个工作,但我不是100%确定如何。无论如何,这是我为了帮助其他人而做的。

不要设置过程中的工作目录(已经在我的问题注释掉) 设置Python脚本属性如下:

  1. 生成操作=内容
  2. 复制到输出目录=复制始终

在项目属性下的发布选项卡中,在应用程序文件中将脚本设置为Include

通过上述更改,我的应用程序在客户机上正确部署。