Спасибо @BugFinder за его поддержку. В конце это была орфографическая ошибка.
Пример решения:
Первый проект: Logic.csproj
using System;
using System.Diagnostics;
using System.IO;
namespace Logic
{
public class RunScript
{
string _parameterString = string.Format("{0} {1} {2} {3}","main.py", "Testuser", "TestPw", "MyEnviroment");
string _resultCon;
public string Start()
{
ProcessStartInfo _pySkript = new ProcessStartInfo();
_pySkript.WorkingDirectory = @"D:\GitRepos\ScriptRunner\PyScript\";
_pySkript.FileName = "python";
_pySkript.Arguments = _parameterString;
_pySkript.UseShellExecute = false;
_pySkript.RedirectStandardOutput = true;
_pySkript.CreateNoWindow = true;
_pySkript.RedirectStandardError = true;
_pySkript.RedirectStandardInput = true;
_pySkript.ErrorDialog = false;
_pySkript.WindowStyle = ProcessWindowStyle.Hidden;
try
{
using (Process process = Process.Start(_pySkript))
{
using (StreamReader reader = process.StandardOutput)
{
_resultCon = reader.ReadToEnd();
}
}
}
catch (Exception ex)
{
_resultCon = ex.ToString();
}
return _resultCon;
}
}
}
Второй проект: ScriptRunner.csproj
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Logic;
namespace ScriptRunner
{
class Program
{
static void Main(string[] args)
{
var runMyScript = new RunScript();
Console.WriteLine(runMyScript.Start());
}
}
}
Третий проект: ScriptRunnerService.csproj
using System.Diagnostics;
using System.ServiceProcess;
using Logic;
namespace ScriptRunnerService
{
public partial class ScriptRunService : ServiceBase
{
public ScriptRunService()
{
InitializeComponent();
eventLog1 = new EventLog();
if (!EventLog.SourceExists("MySource"))
{
EventLog.CreateEventSource(
"MySource", "MyNewLog");
}
eventLog1.Source = "MySource";
eventLog1.Log = "MyNewLog";
var runMyScript = new RunScript();
var output = runMyScript.Start();
eventLog1.WriteEntry(output.ToString(), EventLogEntryType.Information);
}
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("In OnStart.", EventLogEntryType.Information);
}
protected override void OnStop()
{
eventLog1.WriteEntry("In OnStop.", EventLogEntryType.Information);
}
}
}
Служба установки:
Вам необходим InstallUtil.exe для установки службы!
installutil -i ScriptRunnerService.exe
Ключ Windows: r services.msc -> Запуск службы eventvwr.msc -> Журналы проверок
Служба удаления:
installutil -u ScriptRunnerService.exe
Поиск готового решения вкл. скрипт на GitHub