在ClickOnce应用中运行打包的Python脚本
我正在尝试从一个WPF应用程序运行一个Python脚本,但我不知道怎么在客户端机器上找到这个文件。我知道ClickOnce会把文件安装到AppData\Local\目录下,但这样找脚本似乎不太方便。
在我的代码中,我是这样启动一个命令行的:
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的意义。
如果有任何建议,我将非常感激。
1 个回答
0
我把这个搞定了,但我不太确定具体是怎么做到的。无论如何,我把我做的事情分享出来,希望能帮到其他人。
不要设置进程的工作目录(我在问题中已经注释掉了这部分)。
把Python脚本的属性设置成这样:
- 构建操作 = 内容
- 复制到输出目录 = 始终复制
在项目属性的发布选项卡中,把脚本设置为 包含
在应用程序文件中。
做了以上这些修改后,我的应用程序在客户机器上可以正确部署了。