|
@@ -1,3 +1,4 @@
|
|
|
+using System.Diagnostics;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.IO;
|
|
@@ -18,6 +19,7 @@ namespace WingCloudServer
|
|
|
internal class WingApplicationBuilder
|
|
|
{
|
|
|
private WingApplication _app;
|
|
|
+ private List<string> _dependencieNames = new List<string>();
|
|
|
public WingApplicationBuilder(string[] args)
|
|
|
{
|
|
|
//TODO args ? when to use
|
|
@@ -39,16 +41,36 @@ namespace WingCloudServer
|
|
|
//=========================================================================//
|
|
|
|
|
|
//启动 工具
|
|
|
- if (ConfigurationManager.GetParammeter<BoolParameter>("StartTool", "Enable").Value)
|
|
|
+ var _dependencies = ConfigurationManager.GetParammeter<StringParameter>("Dependencies", "Data").Value;
|
|
|
+ if (!string.IsNullOrEmpty(_dependencies))
|
|
|
{
|
|
|
- //TODO 跨平台
|
|
|
- var startToolName = ConfigurationManager.GetParammeter<StringParameter>("StartTool", "StartToolName").Value;
|
|
|
- if (string.IsNullOrEmpty(startToolName))
|
|
|
+ var items = _dependencies.Split(',');
|
|
|
+ foreach (var item in items)
|
|
|
{
|
|
|
- startToolName = "startTool.bat";
|
|
|
+ var array = item.Split('-');
|
|
|
+ if (array == null || array.Length <= 1)
|
|
|
+ {
|
|
|
+ if (item.Contains('\\'))
|
|
|
+ {
|
|
|
+ ProcessStarter.StartProcess(item);
|
|
|
+ var arrayexe = item.Split('\\');
|
|
|
+ if (arrayexe.Length > 0)
|
|
|
+ {
|
|
|
+ _dependencieNames.Add(arrayexe[1]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ProcessStarter.StartTool(item);
|
|
|
+ _dependencieNames.Add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (array.Length == 2)
|
|
|
+ {
|
|
|
+ ProcessStarter.StartTool(array[0], array[1]);
|
|
|
+ _dependencieNames.Add(array[0]);
|
|
|
+ }
|
|
|
}
|
|
|
- var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, startToolName);
|
|
|
- ProcessStarter.StartProcess(path);
|
|
|
}
|
|
|
_app.Run();
|
|
|
}
|
|
@@ -56,16 +78,24 @@ namespace WingCloudServer
|
|
|
internal void Stop()
|
|
|
{
|
|
|
_app?.Stop();
|
|
|
- if (ConfigurationManager.GetParammeter<BoolParameter>("StartTool", "Enable").Value)
|
|
|
+
|
|
|
+ foreach (var processName in _dependencieNames)
|
|
|
{
|
|
|
- //TODO 跨平台
|
|
|
- var startToolName = ConfigurationManager.GetParammeter<StringParameter>("StartTool", "ClosedToolName").Value;
|
|
|
- if (string.IsNullOrEmpty(startToolName))
|
|
|
+ var proc = Process.GetProcesses();
|
|
|
+ foreach (var p in proc)
|
|
|
{
|
|
|
- startToolName = "closedTool.bat";
|
|
|
+ try
|
|
|
+ {
|
|
|
+ if (p.ProcessName.Contains(processName))
|
|
|
+ {
|
|
|
+ Process.GetProcessById(p.Id).Kill();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception pex)
|
|
|
+ {
|
|
|
+ Console.WriteLine($"{pex}");
|
|
|
+ }
|
|
|
}
|
|
|
- var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, startToolName);
|
|
|
- ProcessStarter.StartProcess(path);
|
|
|
}
|
|
|
}
|
|
|
}
|