【问题标题】:run bundled python script in clickonce application在 clickonce 应用程序中运行捆绑的 python 脚本
【发布时间】:2014-09-12 21:19:39
【问题描述】:

我正在尝试从 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 的意义。

任何想法将不胜感激。

【问题讨论】:

    标签: c# python wpf deployment clickonce


    【解决方案1】:

    我得到了这个工作,但我不是 100% 确定如何。无论如何,这就是我所做的,以防它帮助别人。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 2013-08-02
      相关资源
      最近更新 更多