2014-09-12 1 views
0

Я пытаюсь запустить сценарий Python из приложения WPF, но не могу понять, как найти файл на клиентской машине. Я знаю, что ClickOnce устанавливает файлы в AppData \ Local \, но это похоже на плохой способ поиска сценария.запустить связанный скрипт python в приложении clickonce

В моем коде, я начинаю оболочку следующим образом:

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

Я получил это, чтобы работать, но я не уверен на 100% как. Независимо от того, что я сделал, если это помогает кому-то другому.

Не устанавливайте рабочий каталог процесса (уже комментировали в моем вопросе) Установите свойства Python скрипт следующим образом:

  1. Build Action = содержание
  2. Копировать в выходной каталог = Copy Всегда

На вкладке «Опубликовать» в разделе «Свойства проекта» установите сценарий в Include в файлах приложений.

С вышеуказанными изменениями мое приложение правильно развертывается на клиентских компьютерах.

 Смежные вопросы

  • Нет связанных вопросов^_^