在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脚本属性如下:
- 生成操作=内容
- 复制到输出目录=复制始终
在项目属性下的发布选项卡中,在应用程序文件中将脚本设置为Include
。
通过上述更改,我的应用程序在客户机上正确部署。