diff --git a/Stardust.Data/Deployment/Model.xml b/Stardust.Data/Deployment/Model.xml
index 23a2cbf0..2b1799d8 100644
--- a/Stardust.Data/Deployment/Model.xml
+++ b/Stardust.Data/Deployment/Model.xml
@@ -63,6 +63,8 @@
+
+
diff --git a/Stardust.Data/Deployment/Stardust.htm b/Stardust.Data/Deployment/Stardust.htm
index 4db3246a..81c40af3 100644
--- a/Stardust.Data/Deployment/Stardust.htm
+++ b/Stardust.Data/Deployment/Stardust.htm
@@ -291,6 +291,28 @@
应用部署(AppDeploy)
0默认exe/zip;1仅解压;2解压后运行;3仅运行一次;4多实例exe/zip |
+
+ AutoStop |
+ 是否自动停止 |
+ Boolean |
+ |
+ |
+ |
+ N |
+ 随着宿主的退出,同时停止该应用进程 |
+
+
+
+ ReloadOnChange |
+ 检测文件变动 |
+ Boolean |
+ |
+ |
+ |
+ N |
+ 当文件发生改变时,自动重启应用 |
+
+
CreateUserId |
创建者 |
diff --git "a/Stardust.Data/Deployment/\345\272\224\347\224\250\351\203\250\347\275\262.cs" "b/Stardust.Data/Deployment/\345\272\224\347\224\250\351\203\250\347\275\262.cs"
index 6ee0843b..74f71ab0 100644
--- "a/Stardust.Data/Deployment/\345\272\224\347\224\250\351\203\250\347\275\262.cs"
+++ "b/Stardust.Data/Deployment/\345\272\224\347\224\250\351\203\250\347\275\262.cs"
@@ -210,6 +210,22 @@ public partial class AppDeploy
[BindColumn("Mode", "工作模式。0默认exe/zip;1仅解压;2解压后运行;3仅运行一次;4多实例exe/zip", "")]
public Stardust.Models.ServiceModes Mode { get => _Mode; set { if (OnPropertyChanging("Mode", value)) { _Mode = value; OnPropertyChanged("Mode"); } } }
+ private Boolean _AutoStop;
+ /// 是否自动停止。随着宿主的退出,同时停止该应用进程
+ [DisplayName("是否自动停止")]
+ [Description("是否自动停止。随着宿主的退出,同时停止该应用进程")]
+ [DataObjectField(false, false, false, 0)]
+ [BindColumn("AutoStop", "是否自动停止。随着宿主的退出,同时停止该应用进程", "")]
+ public Boolean AutoStop { get => _AutoStop; set { if (OnPropertyChanging("AutoStop", value)) { _AutoStop = value; OnPropertyChanged("AutoStop"); } } }
+
+ private Boolean _ReloadOnChange;
+ /// 检测文件变动。当文件发生改变时,自动重启应用
+ [DisplayName("检测文件变动")]
+ [Description("检测文件变动。当文件发生改变时,自动重启应用")]
+ [DataObjectField(false, false, false, 0)]
+ [BindColumn("ReloadOnChange", "检测文件变动。当文件发生改变时,自动重启应用", "")]
+ public Boolean ReloadOnChange { get => _ReloadOnChange; set { if (OnPropertyChanging("ReloadOnChange", value)) { _ReloadOnChange = value; OnPropertyChanged("ReloadOnChange"); } } }
+
private Int32 _CreateUserId;
/// 创建者
[Category("扩展")]
@@ -304,6 +320,8 @@ public override Object this[String name]
"UserName" => _UserName,
"MaxMemory" => _MaxMemory,
"Mode" => _Mode,
+ "AutoStop" => _AutoStop,
+ "ReloadOnChange" => _ReloadOnChange,
"CreateUserId" => _CreateUserId,
"CreateTime" => _CreateTime,
"CreateIP" => _CreateIP,
@@ -339,6 +357,8 @@ public override Object this[String name]
case "UserName": _UserName = Convert.ToString(value); break;
case "MaxMemory": _MaxMemory = value.ToInt(); break;
case "Mode": _Mode = (Stardust.Models.ServiceModes)value.ToInt(); break;
+ case "AutoStop": _AutoStop = value.ToBoolean(); break;
+ case "ReloadOnChange": _ReloadOnChange = value.ToBoolean(); break;
case "CreateUserId": _CreateUserId = value.ToInt(); break;
case "CreateTime": _CreateTime = value.ToDateTime(); break;
case "CreateIP": _CreateIP = Convert.ToString(value); break;
@@ -433,6 +453,12 @@ public partial class _
/// 工作模式。0默认exe/zip;1仅解压;2解压后运行;3仅运行一次;4多实例exe/zip
public static readonly Field Mode = FindByName("Mode");
+ /// 是否自动停止。随着宿主的退出,同时停止该应用进程
+ public static readonly Field AutoStop = FindByName("AutoStop");
+
+ /// 检测文件变动。当文件发生改变时,自动重启应用
+ public static readonly Field ReloadOnChange = FindByName("ReloadOnChange");
+
/// 创建者
public static readonly Field CreateUserId = FindByName("CreateUserId");
@@ -526,6 +552,12 @@ public partial class __
/// 工作模式。0默认exe/zip;1仅解压;2解压后运行;3仅运行一次;4多实例exe/zip
public const String Mode = "Mode";
+ /// 是否自动停止。随着宿主的退出,同时停止该应用进程
+ public const String AutoStop = "AutoStop";
+
+ /// 检测文件变动。当文件发生改变时,自动重启应用
+ public const String ReloadOnChange = "ReloadOnChange";
+
/// 创建者
public const String CreateUserId = "CreateUserId";
diff --git a/Stardust/Managers/ServiceController.cs b/Stardust/Managers/ServiceController.cs
index 2d50500f..4e0e231a 100644
--- a/Stardust/Managers/ServiceController.cs
+++ b/Stardust/Managers/ServiceController.cs
@@ -677,6 +677,8 @@ private void StartMonitor()
private void MonitorFileChange(Object? state)
{
+ if (Info?.ReloadOnChange == false) return;
+
var first = _files.Count == 0;
var changed = "";