Test.EIImageViewer
hang 2023-05-05 10:07:35 +08:00
parent 6d62206791
commit 7de5056715
5 changed files with 553 additions and 101 deletions

View File

@ -38,6 +38,9 @@
tabControl1 = new TabControl(); tabControl1 = new TabControl();
tabPage1 = new TabPage(); tabPage1 = new TabPage();
groupBox4 = new GroupBox(); groupBox4 = new GroupBox();
serviceConfigSaveBtn = new Button();
servicePortTBox = new TextBox();
label6 = new Label();
serviceNameTBox = new TextBox(); serviceNameTBox = new TextBox();
label10 = new Label(); label10 = new Label();
deleteService_Btn = new Button(); deleteService_Btn = new Button();
@ -55,16 +58,18 @@
label2 = new Label(); label2 = new Label();
startOrStopServiceTbox = new TextBox(); startOrStopServiceTbox = new TextBox();
tabPage2 = new TabPage(); tabPage2 = new TabPage();
bakConfigSaveBtn = new Button();
startBakBtn = new Button(); startBakBtn = new Button();
bakPublishPath = new TextBox(); backPublishPath = new TextBox();
label5 = new Label(); label5 = new Label();
bakDbName = new TextBox(); bakDbName = new TextBox();
label4 = new Label(); label4 = new Label();
bakPathTBox = new TextBox(); backPathTBox = new TextBox();
label3 = new Label(); label3 = new Label();
groupBox5 = new GroupBox(); groupBox5 = new GroupBox();
netCorePublishBtn = new Button(); netCorePublishBtn = new Button();
vuePublishBtn = new Button(); vuePublishBtn = new Button();
openFileDialog1 = new OpenFileDialog();
groupBox1.SuspendLayout(); groupBox1.SuspendLayout();
groupBox3.SuspendLayout(); groupBox3.SuspendLayout();
tabControl1.SuspendLayout(); tabControl1.SuspendLayout();
@ -97,6 +102,7 @@
rb_production.TabIndex = 3; rb_production.TabIndex = 3;
rb_production.Text = "正式"; rb_production.Text = "正式";
rb_production.UseVisualStyleBackColor = true; rb_production.UseVisualStyleBackColor = true;
rb_production.Click += rb_Env_CheckedChanged;
// //
// rb_Verify // rb_Verify
// //
@ -107,6 +113,7 @@
rb_Verify.TabIndex = 2; rb_Verify.TabIndex = 2;
rb_Verify.Text = "验证"; rb_Verify.Text = "验证";
rb_Verify.UseVisualStyleBackColor = true; rb_Verify.UseVisualStyleBackColor = true;
rb_Verify.Click += rb_Env_CheckedChanged;
// //
// rb_test // rb_test
// //
@ -117,6 +124,7 @@
rb_test.TabIndex = 1; rb_test.TabIndex = 1;
rb_test.Text = "测试"; rb_test.Text = "测试";
rb_test.UseVisualStyleBackColor = true; rb_test.UseVisualStyleBackColor = true;
rb_test.Click += rb_Env_CheckedChanged;
// //
// rb_local // rb_local
// //
@ -129,13 +137,14 @@
rb_local.TabStop = true; rb_local.TabStop = true;
rb_local.Text = "本机"; rb_local.Text = "本机";
rb_local.UseVisualStyleBackColor = true; rb_local.UseVisualStyleBackColor = true;
rb_local.Click += rb_Env_CheckedChanged;
// //
// groupBox3 // groupBox3
// //
groupBox3.Controls.Add(logTBox); groupBox3.Controls.Add(logTBox);
groupBox3.Location = new Point(691, 24); groupBox3.Location = new Point(691, 24);
groupBox3.Name = "groupBox3"; groupBox3.Name = "groupBox3";
groupBox3.Size = new Size(412, 1048); groupBox3.Size = new Size(559, 1048);
groupBox3.TabIndex = 3; groupBox3.TabIndex = 3;
groupBox3.TabStop = false; groupBox3.TabStop = false;
groupBox3.Text = "日志"; groupBox3.Text = "日志";
@ -144,7 +153,7 @@
// //
logTBox.Location = new Point(23, 21); logTBox.Location = new Point(23, 21);
logTBox.Name = "logTBox"; logTBox.Name = "logTBox";
logTBox.Size = new Size(359, 1013); logTBox.Size = new Size(517, 1013);
logTBox.TabIndex = 1; logTBox.TabIndex = 1;
logTBox.Text = ""; logTBox.Text = "";
// //
@ -172,6 +181,9 @@
// //
// groupBox4 // groupBox4
// //
groupBox4.Controls.Add(serviceConfigSaveBtn);
groupBox4.Controls.Add(servicePortTBox);
groupBox4.Controls.Add(label6);
groupBox4.Controls.Add(serviceNameTBox); groupBox4.Controls.Add(serviceNameTBox);
groupBox4.Controls.Add(label10); groupBox4.Controls.Add(label10);
groupBox4.Controls.Add(deleteService_Btn); groupBox4.Controls.Add(deleteService_Btn);
@ -185,11 +197,37 @@
groupBox4.Controls.Add(selectPathBtn); groupBox4.Controls.Add(selectPathBtn);
groupBox4.Location = new Point(20, 28); groupBox4.Location = new Point(20, 28);
groupBox4.Name = "groupBox4"; groupBox4.Name = "groupBox4";
groupBox4.Size = new Size(538, 311); groupBox4.Size = new Size(538, 372);
groupBox4.TabIndex = 40; groupBox4.TabIndex = 40;
groupBox4.TabStop = false; groupBox4.TabStop = false;
groupBox4.Text = "服务创建与删除"; groupBox4.Text = "服务创建与删除";
// //
// serviceConfigSaveBtn
//
serviceConfigSaveBtn.Location = new Point(72, 278);
serviceConfigSaveBtn.Name = "serviceConfigSaveBtn";
serviceConfigSaveBtn.Size = new Size(128, 40);
serviceConfigSaveBtn.TabIndex = 41;
serviceConfigSaveBtn.Text = "服务配置保存";
serviceConfigSaveBtn.UseVisualStyleBackColor = true;
serviceConfigSaveBtn.Click += serviceConfigSaveBtn_Click;
//
// servicePortTBox
//
servicePortTBox.Location = new Point(141, 169);
servicePortTBox.Name = "servicePortTBox";
servicePortTBox.Size = new Size(259, 23);
servicePortTBox.TabIndex = 40;
//
// label6
//
label6.AutoSize = true;
label6.Location = new Point(71, 172);
label6.Name = "label6";
label6.Size = new Size(32, 17);
label6.TabIndex = 39;
label6.Text = "端口";
//
// serviceNameTBox // serviceNameTBox
// //
serviceNameTBox.Location = new Point(140, 33); serviceNameTBox.Location = new Point(140, 33);
@ -209,7 +247,6 @@
// //
// deleteService_Btn // deleteService_Btn
// //
deleteService_Btn.Enabled = false;
deleteService_Btn.Location = new Point(417, 33); deleteService_Btn.Location = new Point(417, 33);
deleteService_Btn.Name = "deleteService_Btn"; deleteService_Btn.Name = "deleteService_Btn";
deleteService_Btn.Size = new Size(95, 27); deleteService_Btn.Size = new Size(95, 27);
@ -229,8 +266,7 @@
// //
// createService_Btn // createService_Btn
// //
createService_Btn.Enabled = false; createService_Btn.Location = new Point(276, 278);
createService_Btn.Location = new Point(167, 232);
createService_Btn.Name = "createService_Btn"; createService_Btn.Name = "createService_Btn";
createService_Btn.Size = new Size(128, 40); createService_Btn.Size = new Size(128, 40);
createService_Btn.TabIndex = 37; createService_Btn.TabIndex = 37;
@ -248,11 +284,10 @@
// //
// en_TBox // en_TBox
// //
en_TBox.Location = new Point(140, 176); en_TBox.Location = new Point(141, 214);
en_TBox.Name = "en_TBox"; en_TBox.Name = "en_TBox";
en_TBox.Size = new Size(259, 23); en_TBox.Size = new Size(259, 23);
en_TBox.TabIndex = 36; en_TBox.TabIndex = 36;
en_TBox.Text = "Development";
// //
// label9 // label9
// //
@ -266,7 +301,7 @@
// label1 // label1
// //
label1.AutoSize = true; label1.AutoSize = true;
label1.Location = new Point(71, 176); label1.Location = new Point(72, 214);
label1.Name = "label1"; label1.Name = "label1";
label1.Size = new Size(44, 17); label1.Size = new Size(44, 17);
label1.TabIndex = 35; label1.TabIndex = 35;
@ -274,7 +309,6 @@
// //
// exePathTbox // exePathTbox
// //
exePathTbox.Enabled = false;
exePathTbox.Location = new Point(140, 126); exePathTbox.Location = new Point(140, 126);
exePathTbox.Name = "exePathTbox"; exePathTbox.Name = "exePathTbox";
exePathTbox.Size = new Size(259, 23); exePathTbox.Size = new Size(259, 23);
@ -282,7 +316,6 @@
// //
// selectPathBtn // selectPathBtn
// //
selectPathBtn.Enabled = false;
selectPathBtn.Location = new Point(417, 125); selectPathBtn.Location = new Point(417, 125);
selectPathBtn.Name = "selectPathBtn"; selectPathBtn.Name = "selectPathBtn";
selectPathBtn.Size = new Size(95, 27); selectPathBtn.Size = new Size(95, 27);
@ -297,7 +330,7 @@
groupBox2.Controls.Add(startServiceBtn); groupBox2.Controls.Add(startServiceBtn);
groupBox2.Controls.Add(label2); groupBox2.Controls.Add(label2);
groupBox2.Controls.Add(startOrStopServiceTbox); groupBox2.Controls.Add(startOrStopServiceTbox);
groupBox2.Location = new Point(20, 391); groupBox2.Location = new Point(19, 431);
groupBox2.Name = "groupBox2"; groupBox2.Name = "groupBox2";
groupBox2.Size = new Size(538, 187); groupBox2.Size = new Size(538, 187);
groupBox2.TabIndex = 39; groupBox2.TabIndex = 39;
@ -306,7 +339,6 @@
// //
// stopServiceBtn // stopServiceBtn
// //
stopServiceBtn.Enabled = false;
stopServiceBtn.Location = new Point(261, 101); stopServiceBtn.Location = new Point(261, 101);
stopServiceBtn.Name = "stopServiceBtn"; stopServiceBtn.Name = "stopServiceBtn";
stopServiceBtn.Size = new Size(128, 40); stopServiceBtn.Size = new Size(128, 40);
@ -317,7 +349,6 @@
// //
// startServiceBtn // startServiceBtn
// //
startServiceBtn.Enabled = false;
startServiceBtn.Location = new Point(94, 101); startServiceBtn.Location = new Point(94, 101);
startServiceBtn.Name = "startServiceBtn"; startServiceBtn.Name = "startServiceBtn";
startServiceBtn.Size = new Size(128, 40); startServiceBtn.Size = new Size(128, 40);
@ -341,16 +372,16 @@
startOrStopServiceTbox.Name = "startOrStopServiceTbox"; startOrStopServiceTbox.Name = "startOrStopServiceTbox";
startOrStopServiceTbox.Size = new Size(259, 23); startOrStopServiceTbox.Size = new Size(259, 23);
startOrStopServiceTbox.TabIndex = 31; startOrStopServiceTbox.TabIndex = 31;
startOrStopServiceTbox.Text = "EI_Image_Viewer";
// //
// tabPage2 // tabPage2
// //
tabPage2.Controls.Add(bakConfigSaveBtn);
tabPage2.Controls.Add(startBakBtn); tabPage2.Controls.Add(startBakBtn);
tabPage2.Controls.Add(bakPublishPath); tabPage2.Controls.Add(backPublishPath);
tabPage2.Controls.Add(label5); tabPage2.Controls.Add(label5);
tabPage2.Controls.Add(bakDbName); tabPage2.Controls.Add(bakDbName);
tabPage2.Controls.Add(label4); tabPage2.Controls.Add(label4);
tabPage2.Controls.Add(bakPathTBox); tabPage2.Controls.Add(backPathTBox);
tabPage2.Controls.Add(label3); tabPage2.Controls.Add(label3);
tabPage2.Location = new Point(4, 26); tabPage2.Location = new Point(4, 26);
tabPage2.Name = "tabPage2"; tabPage2.Name = "tabPage2";
@ -360,9 +391,19 @@
tabPage2.Text = "备份与发布"; tabPage2.Text = "备份与发布";
tabPage2.UseVisualStyleBackColor = true; tabPage2.UseVisualStyleBackColor = true;
// //
// bakConfigSaveBtn
//
bakConfigSaveBtn.Location = new Point(134, 207);
bakConfigSaveBtn.Name = "bakConfigSaveBtn";
bakConfigSaveBtn.Size = new Size(187, 53);
bakConfigSaveBtn.TabIndex = 42;
bakConfigSaveBtn.Text = "备份配置保存";
bakConfigSaveBtn.UseVisualStyleBackColor = true;
bakConfigSaveBtn.Click += bakConfigSaveBtn_Click;
//
// startBakBtn // startBakBtn
// //
startBakBtn.Location = new Point(160, 204); startBakBtn.Location = new Point(375, 207);
startBakBtn.Name = "startBakBtn"; startBakBtn.Name = "startBakBtn";
startBakBtn.Size = new Size(213, 53); startBakBtn.Size = new Size(213, 53);
startBakBtn.TabIndex = 6; startBakBtn.TabIndex = 6;
@ -370,56 +411,53 @@
startBakBtn.UseVisualStyleBackColor = true; startBakBtn.UseVisualStyleBackColor = true;
startBakBtn.Click += startBakBtn_Click; startBakBtn.Click += startBakBtn_Click;
// //
// bakPublishPath // backPublishPath
// //
bakPublishPath.Enabled = false; backPublishPath.Location = new Point(160, 125);
bakPublishPath.Location = new Point(117, 125); backPublishPath.Name = "backPublishPath";
bakPublishPath.Name = "bakPublishPath"; backPublishPath.Size = new Size(431, 23);
bakPublishPath.Size = new Size(474, 23); backPublishPath.TabIndex = 5;
bakPublishPath.TabIndex = 5;
// //
// label5 // label5
// //
label5.AutoSize = true; label5.AutoSize = true;
label5.Location = new Point(6, 128); label5.Location = new Point(61, 125);
label5.Name = "label5"; label5.Name = "label5";
label5.Size = new Size(104, 17); label5.Size = new Size(92, 17);
label5.TabIndex = 4; label5.TabIndex = 4;
label5.Text = "发布程序备份路径"; label5.Text = "备份程序根路径";
// //
// bakDbName // bakDbName
// //
bakDbName.Enabled = false; bakDbName.Location = new Point(160, 28);
bakDbName.Location = new Point(114, 28);
bakDbName.Name = "bakDbName"; bakDbName.Name = "bakDbName";
bakDbName.Size = new Size(474, 23); bakDbName.Size = new Size(428, 23);
bakDbName.TabIndex = 3; bakDbName.TabIndex = 3;
// //
// label4 // label4
// //
label4.AutoSize = true; label4.AutoSize = true;
label4.Location = new Point(20, 31); label4.Location = new Point(85, 28);
label4.Name = "label4"; label4.Name = "label4";
label4.Size = new Size(68, 17); label4.Size = new Size(68, 17);
label4.TabIndex = 2; label4.TabIndex = 2;
label4.Text = "备份数据库"; label4.Text = "备份数据库";
// //
// bakPathTBox // backPathTBox
// //
bakPathTBox.Enabled = false; backPathTBox.Location = new Point(160, 75);
bakPathTBox.Location = new Point(115, 75); backPathTBox.Name = "backPathTBox";
bakPathTBox.Name = "bakPathTBox"; backPathTBox.Size = new Size(429, 23);
bakPathTBox.Size = new Size(474, 23); backPathTBox.TabIndex = 1;
bakPathTBox.TabIndex = 1;
// //
// label3 // label3
// //
label3.AutoSize = true; label3.AutoSize = true;
label3.Location = new Point(6, 79); label3.Location = new Point(6, 79);
label3.Name = "label3"; label3.Name = "label3";
label3.Size = new Size(92, 17); label3.Size = new Size(152, 17);
label3.TabIndex = 0; label3.TabIndex = 0;
label3.Text = "数据库备份路径"; label3.Text = "数据库和发布程序备份路径";
// //
// groupBox5 // groupBox5
// //
@ -434,7 +472,6 @@
// //
// netCorePublishBtn // netCorePublishBtn
// //
netCorePublishBtn.Enabled = false;
netCorePublishBtn.Location = new Point(351, 50); netCorePublishBtn.Location = new Point(351, 50);
netCorePublishBtn.Name = "netCorePublishBtn"; netCorePublishBtn.Name = "netCorePublishBtn";
netCorePublishBtn.Size = new Size(128, 40); netCorePublishBtn.Size = new Size(128, 40);
@ -445,7 +482,6 @@
// //
// vuePublishBtn // vuePublishBtn
// //
vuePublishBtn.Enabled = false;
vuePublishBtn.Location = new Point(91, 50); vuePublishBtn.Location = new Point(91, 50);
vuePublishBtn.Name = "vuePublishBtn"; vuePublishBtn.Name = "vuePublishBtn";
vuePublishBtn.Size = new Size(128, 40); vuePublishBtn.Size = new Size(128, 40);
@ -454,18 +490,21 @@
vuePublishBtn.UseVisualStyleBackColor = true; vuePublishBtn.UseVisualStyleBackColor = true;
vuePublishBtn.Click += vuePublishBtn_Click; vuePublishBtn.Click += vuePublishBtn_Click;
// //
// openFileDialog1
//
openFileDialog1.FileName = "openFileDialog1";
//
// PublishForm // PublishForm
// //
AutoScaleDimensions = new SizeF(7F, 17F); AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(1131, 1074); ClientSize = new Size(1275, 1074);
Controls.Add(groupBox5); Controls.Add(groupBox5);
Controls.Add(tabControl1); Controls.Add(tabControl1);
Controls.Add(groupBox3); Controls.Add(groupBox3);
Controls.Add(groupBox1); Controls.Add(groupBox1);
Name = "PublishForm"; Name = "PublishForm";
Text = "PublishForm"; Text = "PublishForm";
Load += PublishForm_Load;
groupBox1.ResumeLayout(false); groupBox1.ResumeLayout(false);
groupBox1.PerformLayout(); groupBox1.PerformLayout();
groupBox3.ResumeLayout(false); groupBox3.ResumeLayout(false);
@ -509,15 +548,20 @@
private Label label2; private Label label2;
private TextBox startOrStopServiceTbox; private TextBox startOrStopServiceTbox;
private Label label4; private Label label4;
private TextBox bakPathTBox; private TextBox backPathTBox;
private Label label3; private Label label3;
private TextBox bakDbName; private TextBox bakDbName;
private TextBox bakPublishPath; private TextBox backPublishPath;
private Label label5; private Label label5;
private GroupBox groupBox4; private GroupBox groupBox4;
private Button startBakBtn; private Button startBakBtn;
private GroupBox groupBox5; private GroupBox groupBox5;
private Button netCorePublishBtn; private Button netCorePublishBtn;
private Button vuePublishBtn; private Button vuePublishBtn;
private TextBox servicePortTBox;
private Label label6;
private OpenFileDialog openFileDialog1;
private Button serviceConfigSaveBtn;
private Button bakConfigSaveBtn;
} }
} }

View File

@ -13,6 +13,12 @@ using System.Security;
using System.Diagnostics; using System.Diagnostics;
using System.Net; using System.Net;
using Renci.SshNet; using Renci.SshNet;
using Serilog;
using Newtonsoft.Json.Linq;
using System.ServiceProcess;
using Renci.SshNet.Messages;
using System.Management;
using System.IO;
namespace PublishSite namespace PublishSite
{ {
@ -21,10 +27,16 @@ namespace PublishSite
public PublishForm() public PublishForm()
{ {
InitializeComponent(); InitializeComponent();
Serilog.Log.Logger = new LoggerConfiguration()
.WriteTo.File("logs\\log.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();
} }
public string EnvName = "";
public string CurrentEnv = "Local"; public JObject jObjectCofig;
public string Host = ""; public string Host = "";
@ -32,27 +44,227 @@ namespace PublishSite
public string Password = ""; public string Password = "";
private void WinformLog(string message, Color? color = null)
private void PublishForm_Load(object sender, EventArgs e)
{ {
string remoteComputerName = "123.56.94.154"; // 远程计算机名称 if (InvokeRequired)
string userName = "Administrator"; // 用户名 {
string password = "WHxckj2019"; // 密码 Invoke(new Action(() => WinformLog(message, color)));
return;
string localFilePath = $@"D:\testUpload.txt";
string remoteFilePath = $@"C:\temp\testUpload.txt";
CopyFileToRemote(localFilePath, remoteFilePath, remoteComputerName, userName, password);
} }
private void startBakBtn_Click(object sender, EventArgs e)
logTBox.SelectionColor = color == null ? Color.Green : (Color)color;
logTBox.AppendText($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}: {message}" + Environment.NewLine);
Serilog.Log.Information(message);
}
#region 切换环境 配置回写
private void rb_Env_CheckedChanged(object sender, EventArgs e)
{
//本地
if (rb_local.Checked)
{
EnvName = "本地";
WinformLog($"当前操作环境切换为: 本地", Color.DarkRed);
var configJson = File.ReadAllText("appsettings.local.json");
jObjectCofig = JObject.Parse(configJson);
}
//测试
if (rb_test.Checked)
{
EnvName = "测试";
WinformLog($"当前操作环境切换为: 测试", Color.DarkRed);
var configJson = File.ReadAllText("appsettings.Development.json");
jObjectCofig = JObject.Parse(configJson);
}
//验证
if (rb_Verify.Checked)
{
EnvName = "验证";
WinformLog($"当前操作环境切换为: 验证", Color.DarkRed);
var configJson = File.ReadAllText("appsettings.Verify.json");
jObjectCofig = JObject.Parse(configJson);
}
//生产
if (rb_production.Checked)
{
EnvName = "生产";
WinformLog($"当前操作环境切换为: 生产", Color.DarkRed);
var configJson = File.ReadAllText("appsettings.Production.json");
jObjectCofig = JObject.Parse(configJson);
}
#region 界面控件赋值
Host = rb_local.Checked ? "" : jObjectCofig["Credential"]["Host"].ToString();
UserName = rb_local.Checked ? "" : jObjectCofig["Credential"]["UserName"].ToString();
Password = rb_local.Checked ? "" : jObjectCofig["Credential"]["Password"].ToString();
serviceNameTBox.Text = jObjectCofig["DefaultService"]["ServiceName"].ToString();
serviceDisplayNameTBox.Text = jObjectCofig["DefaultService"]["ServiceDisplayName"].ToString();
servicePortTBox.Text = jObjectCofig["DefaultService"]["ServicePort"].ToString();
exePathTbox.Text = jObjectCofig["DefaultService"]["BinPath"].ToString();
en_TBox.Text = jObjectCofig["DefaultService"]["Env"].ToString();
startOrStopServiceTbox.Text = jObjectCofig["DefaultService"]["ServiceName"].ToString();
bakDbName.Text = jObjectCofig["BackUp"]["DataBaseName"].ToString();
backPathTBox.Text = jObjectCofig["BackUp"]["BackPath"].ToString();
backPublishPath.Text = jObjectCofig["BackUp"]["ProgramRootPath"].ToString();
var credentialNode = jObjectCofig["Credential"];
var defaultServiceNode = jObjectCofig["DefaultService"];
var BackUpNode = jObjectCofig["BackUp"];
#endregion
}
private void serviceConfigSaveBtn_Click(object sender, EventArgs e)
{
var serviceName = serviceNameTBox.Text;
DialogResult dr = MessageBox.Show($"{EnvName}环境服务配置回写 ", "保存提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (dr == DialogResult.OK)
{
var path = string.Empty;
if (rb_local.Checked)
{
path = "appsettings.local.json";
}
if (rb_test.Checked)
{
path = "appsettings.Development.json";
}
if (rb_Verify.Checked)
{
path = "appsettings.Verify.json";
}
if (rb_production.Checked)
{
path = "appsettings.Production.json";
}
var configJson = File.ReadAllText(path);
jObjectCofig = JObject.Parse(configJson);
jObjectCofig["DefaultService"]["ServiceName"] = serviceNameTBox.Text.Trim();
jObjectCofig["DefaultService"]["ServiceDisplayName"] = serviceDisplayNameTBox.Text.Trim();
jObjectCofig["DefaultService"]["ServicePort"] = servicePortTBox.Text.Trim();
jObjectCofig["DefaultService"]["BinPath"] = exePathTbox.Text.Trim();
jObjectCofig["DefaultService"]["Env"] = en_TBox.Text.Trim();
File.WriteAllText(path, jObjectCofig.ToString());
WinformLog("服务配置回写成功!");
}
}
private void bakConfigSaveBtn_Click(object sender, EventArgs e)
{
var serviceName = serviceNameTBox.Text;
DialogResult dr = MessageBox.Show($"{EnvName}环境备份配置回写 ", "保存提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (dr == DialogResult.OK)
{
var path = string.Empty;
if (rb_local.Checked)
{
path = "appsettings.local.json";
}
if (rb_test.Checked)
{
path = "appsettings.Development.json";
}
if (rb_Verify.Checked)
{
path = "appsettings.Verify.json";
}
if (rb_production.Checked)
{
path = "appsettings.Production.json";
}
var configJson = File.ReadAllText(path);
jObjectCofig = JObject.Parse(configJson);
jObjectCofig["BackUp"]["DataBaseName"] = bakDbName.Text.Trim();
jObjectCofig["BackUp"]["BackPath"] = backPathTBox.Text.Trim();
jObjectCofig["BackUp"]["ProgramRootPath"] = backPublishPath.Text.Trim();
File.WriteAllText(path, jObjectCofig.ToString());
WinformLog("备份配置回写成功!");
}
}
#endregion
#region 备份
private async void startBakBtn_Click(object sender, EventArgs e)
{
await Task.Run(() =>
{
if (rb_local.Checked)
{ {
} }
else
{
using (var client = new SshClient(Host, UserName, Password))
{
var backRootPath = jObjectCofig[]
// 判断文件夹是否存在
var backupFolderPath = "/path/to/backup/folder";
var command = $"if [ ! -d '{backupFolderPath}' ]; then mkdir {backupFolderPath}; fi";
var result = client.RunCommand(command);
}
}
});
}
#endregion
#region 服务的创建与删除 #region 服务的创建与删除
@ -62,14 +274,101 @@ namespace PublishSite
} }
private void deleteService_Btn_Click(object sender, EventArgs e) private async void deleteService_Btn_Click(object sender, EventArgs e)
{ {
var serviceName = serviceNameTBox.Text;
DialogResult dr = MessageBox.Show($"{EnvName}环境删除服务:{serviceName}", "删除提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (dr == DialogResult.OK)
{
await Task.Run(() =>
{
if (rb_local.Checked)
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe";
startInfo.Arguments = $"/c sc query {serviceName} | find \"STATE\" | find /i \"RUNNING\" && net stop {serviceName} & sc delete {serviceName}";
// 在后台运行命令行窗口
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.CreateNoWindow = true;
using (Process process = new Process())
{
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
if (process.ExitCode == 0)
{
WinformLog($"{serviceName} 服务已经成功删除!");
}
else
{
WinformLog($"尝试停止并删除 {serviceName} 服务失败,请检查是否拥有管理员权限或服务是否存在。", Color.Red);
}
}
}
else
{
using (var client = new SshClient(Host, UserName, Password))
{
// 连接到远程服务器
client.Connect();
// 停止服务
string stopCommand = $"sc stop {serviceName}";
using (var stopCmd = client.CreateCommand(stopCommand))
{
WinformLog(stopCommand);
var stopOutput = stopCmd.Execute();
WinformLog(stopOutput);
}
// 删除服务
string deleteCommand = $"sc delete {serviceName}";
using (var deleteCmd = client.CreateCommand(deleteCommand))
{
WinformLog(deleteCommand);
var deleteOutput = deleteCmd.Execute();
WinformLog(deleteOutput);
}
// 断开SSH连接
client.Disconnect();
}
}
});
}
} }
private void selectPathBtn_Click(object sender, EventArgs e) private void selectPathBtn_Click(object sender, EventArgs e)
{
if (rb_local.Checked)
{ {
OpenFileDialog dialog = new OpenFileDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
exePathTbox.Text = dialog.FileName;
WinformLog($"部署启动文件选择成功", Color.Green);
}
}
else
{
WinformLog("远程环境不支持直接选择目录", Color.Red);
}
} }
#endregion #endregion
@ -78,9 +377,13 @@ namespace PublishSite
#region 测试环境发布 #region 测试环境发布
private void vuePublishBtn_Click(object sender, EventArgs e) private async void vuePublishBtn_Click(object sender, EventArgs e)
{ {
vuePublishBtn.Enabled = false;
await Task.Run(() =>
{
using (var client = new SshClient("123.56.94.154", "Administrator", "WHxckj2019")) using (var client = new SshClient("123.56.94.154", "Administrator", "WHxckj2019"))
{ {
@ -94,56 +397,70 @@ namespace PublishSite
using (var cmd = client.CreateCommand(command)) using (var cmd = client.CreateCommand(command))
{ {
Console.WriteLine("开始执行"); WinformLog("测试环境:开始执行前端发布");
Console.WriteLine(command); WinformLog(command);
var output = cmd.Execute(); var output = cmd.Execute();
Console.WriteLine(output); WinformLog(output);
var output3 = cmd.Execute($@"xcopy /Y /Q ""C:\Users\Administrator\VueSourceCode\dist\index.html"" ""D:\Develop\PublishSite\IRaCIS.Vue.Web\dist\"""); var output3 = cmd.Execute($@"xcopy /Y /Q ""C:\Users\Administrator\VueSourceCode\dist\index.html"" ""D:\Develop\PublishSite\IRaCIS.Vue.Web\dist\""");
Console.WriteLine(output); WinformLog(output);
Console.WriteLine("发布成功"); WinformLog("测试环境:前端发布成功");
} }
// 断开SSH连接 // 断开SSH连接
client.Disconnect(); client.Disconnect();
} }
});
vuePublishBtn.Enabled = true;
} }
private void netCorePublishBtn_Click(object sender, EventArgs e) private async void netCorePublishBtn_Click(object sender, EventArgs e)
{ {
netCorePublishBtn.Enabled = false;
await Task.Run(() =>
{
using (var client = new SshClient("123.56.94.154", "Administrator", "WHxckj2019")) using (var client = new SshClient("123.56.94.154", "Administrator", "WHxckj2019"))
{ {
// 连接到远程服务器 // 连接到远程服务器
client.Connect(); client.Connect();
//&& ./IRaCIS_Vue_Web.bat string command = $@"C:\Users\Administrator\bat\IRaCIS_Core_API.bat";
string command = $@"cd C:\Users\Administrator\bat\ && ./IRaCIS_Core_API.bat";
using (var cmd = client.CreateCommand(command)) using (var cmd = client.CreateCommand(command))
{ {
Console.WriteLine("开始执行"); WinformLog("测试环境:开始执行后端发布");
Console.WriteLine(command); WinformLog(command);
var output = cmd.Execute(); var output = cmd.Execute();
Console.WriteLine(output); WinformLog(output);
Console.WriteLine("发布成功"); WinformLog("测试环境:后端发布成功");
} }
// 断开SSH连接 // 断开SSH连接
client.Disconnect(); client.Disconnect();
} }
});
netCorePublishBtn.Enabled = true;
} }
#endregion #endregion
@ -151,19 +468,105 @@ namespace PublishSite
#region 服务的启动与停止 #region 服务的启动与停止
private void startServiceBtn_Click(object sender, EventArgs e) private async void startServiceBtn_Click(object sender, EventArgs e)
{ {
startServiceBtn.Enabled = false;
await Task.Run(() =>
{
if (rb_local.Checked)
{
ServiceController controller = new ServiceController($"{startOrStopServiceTbox.Text}");
if (controller?.Status == ServiceControllerStatus.Running)
{
controller.Stop();
controller.WaitForStatus(ServiceControllerStatus.Stopped);
}
else
{
WinformLog("服务不是停止状态", Color.Red);
}
return;
} }
private void stopServiceBtn_Click(object sender, EventArgs e) using (var client = new SshClient(Host, UserName, Password))
{ {
// 连接到远程服务器
client.Connect();
string command = $@"sc start {startOrStopServiceTbox.Text}";
using (var cmd = client.CreateCommand(command))
{
WinformLog(command);
var output = cmd.Execute();
WinformLog(output);
}
// 断开SSH连接
client.Disconnect();
}
});
startServiceBtn.Enabled = true;
}
private async void stopServiceBtn_Click(object sender, EventArgs e)
{
startServiceBtn.Enabled = false;
await Task.Run(() =>
{
if (rb_local.Checked)
{
ServiceController controller = new ServiceController($"{startOrStopServiceTbox.Text}");
if (controller?.Status == ServiceControllerStatus.Running)
{
controller.Stop();
controller.WaitForStatus(ServiceControllerStatus.Stopped);
}
else
{
WinformLog("服务不是启动状态", Color.Red);
}
return;
}
using (var client = new SshClient(Host, UserName, Password))
{
// 连接到远程服务器
client.Connect();
string command = $@"sc stop {startOrStopServiceTbox.Text}";
using (var cmd = client.CreateCommand(command))
{
WinformLog(command);
var output = cmd.Execute();
WinformLog(output);
}
// 断开SSH连接
client.Disconnect();
}
});
startServiceBtn.Enabled = true;
} }
#endregion #endregion
} }
} }

View File

@ -57,4 +57,7 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root> </root>

View File

@ -44,8 +44,10 @@
<PackageReference Include="Microsoft.PowerShell.Commands.Management" Version="7.2.10" /> <PackageReference Include="Microsoft.PowerShell.Commands.Management" Version="7.2.10" />
<PackageReference Include="Microsoft.PowerShell.Commands.Utility" Version="7.2.10" /> <PackageReference Include="Microsoft.PowerShell.Commands.Utility" Version="7.2.10" />
<PackageReference Include="Microsoft.PowerShell.ConsoleHost" Version="7.2.10" /> <PackageReference Include="Microsoft.PowerShell.ConsoleHost" Version="7.2.10" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
<PackageReference Include="Microsoft.WSMan.Management" Version="7.2.10" /> <PackageReference Include="Microsoft.WSMan.Management" Version="7.2.10" />
<PackageReference Include="SSH.NET" Version="2020.0.2" /> <PackageReference Include="SSH.NET" Version="2020.0.2" />
<PackageReference Include="System.Management" Version="6.0.0" />
<PackageReference Include="System.Management.Automation" Version="7.2.10" /> <PackageReference Include="System.Management.Automation" Version="7.2.10" />
</ItemGroup> </ItemGroup>

View File

@ -1,7 +1,7 @@
{ {
"BackUp": { "BackUp": {
"DataBaseName": "IRaCIS_New_Tet", "DataBaseName": "IRaCIS_New_Tet",
"FullDBRootPath": "Warning", "BackPath": "D:\\Develop\\PublishSite\\发布备份",
"ProgramRootPath": "D:\\Develop\\PublishSite\\发布备份", "ProgramRootPath": "D:\\Develop\\PublishSite\\发布备份",
"ConnectionStrings": "Server=.;Database=IRaCIS;Trusted_Connection=True;TrustServerCertificate=true" "ConnectionStrings": "Server=.;Database=IRaCIS;Trusted_Connection=True;TrustServerCertificate=true"
}, },