Test.EIImageViewer
parent
0c2951c96b
commit
94dc00ddec
|
@ -1,39 +0,0 @@
|
|||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft": "Warning",
|
||||
"Microsoft.Hosting.Lifetime": "Information"
|
||||
}
|
||||
},
|
||||
//"RootUrl": "http://123.56.181.144:8060/",
|
||||
"ConnectionStrings": {
|
||||
"RemoteNew": "Server=101.132.193.237,1433;Database=IRaCIS.Production;User ID=sa;Password=zhanying2021;TrustServerCertificate=true",
|
||||
"Hangfire": "Server=101.132.193.237,1433;Database=Hangfire.IRaCIS.Production;User ID=sa;Password=zhanying2021;TrustServerCertificate=true"
|
||||
},
|
||||
"BasicSystemConfig": {
|
||||
|
||||
"OpenUserComplexPassword": true,
|
||||
|
||||
"OpenSignDocumentBeforeWork": true,
|
||||
|
||||
"OpenLoginLimit": true
|
||||
},
|
||||
//"SystemEmailSendConfig": {
|
||||
// "Port": 465,
|
||||
// "Host": "smtp.163.com",
|
||||
// "FromEmail": "zhou941003@qq.com",
|
||||
// "FromName": "hangZhou",
|
||||
// "AuthorizationCode": "sqfhlpfdvnexbcab"
|
||||
//}
|
||||
|
||||
"SystemEmailSendConfig": {
|
||||
"Port": 465,
|
||||
"Host": "smtp.qiye.aliyun.com",
|
||||
"FromEmail": "IRC@extimaging.com",
|
||||
"FromName": "IRC",
|
||||
"AuthorizationCode": "ExtImg@2022"
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -541,10 +541,12 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
_mapper.Map(model, user);
|
||||
|
||||
if (user.IsZhiZhun)
|
||||
{
|
||||
user.OrganizationName = AppSettings.DefaultInternalOrganizationName;
|
||||
}
|
||||
//if (user.IsZhiZhun)
|
||||
//{
|
||||
// user.OrganizationName = AppSettings.DefaultInternalOrganizationName;
|
||||
//}
|
||||
|
||||
|
||||
var success = await _userRepository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok(success);
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
label2 = new Label();
|
||||
label1 = new Label();
|
||||
groupBox2 = new GroupBox();
|
||||
confimDeployBtn = new Button();
|
||||
testDBBtn = new Button();
|
||||
testServicebtn = new Button();
|
||||
serviceDisplayNameTBox = new TextBox();
|
||||
|
@ -63,7 +64,6 @@
|
|||
groupBox4 = new GroupBox();
|
||||
logTBox = new RichTextBox();
|
||||
folderBrowserDialog1 = new FolderBrowserDialog();
|
||||
confimDeployBtn = new Button();
|
||||
groupBox1.SuspendLayout();
|
||||
groupBox2.SuspendLayout();
|
||||
groupBox3.SuspendLayout();
|
||||
|
@ -173,9 +173,21 @@
|
|||
groupBox2.TabStop = false;
|
||||
groupBox2.Text = "第二步: 部署配置";
|
||||
//
|
||||
// confimDeployBtn
|
||||
//
|
||||
confimDeployBtn.Enabled = false;
|
||||
confimDeployBtn.Location = new Point(220, 369);
|
||||
confimDeployBtn.Name = "confimDeployBtn";
|
||||
confimDeployBtn.Size = new Size(128, 49);
|
||||
confimDeployBtn.TabIndex = 19;
|
||||
confimDeployBtn.Text = "确认部署配置";
|
||||
confimDeployBtn.UseVisualStyleBackColor = true;
|
||||
confimDeployBtn.Click += confimDeployBtn_Click;
|
||||
//
|
||||
// testDBBtn
|
||||
//
|
||||
testDBBtn.Location = new Point(423, 191);
|
||||
testDBBtn.Enabled = false;
|
||||
testDBBtn.Location = new Point(417, 196);
|
||||
testDBBtn.Name = "testDBBtn";
|
||||
testDBBtn.Size = new Size(128, 49);
|
||||
testDBBtn.TabIndex = 18;
|
||||
|
@ -185,7 +197,8 @@
|
|||
//
|
||||
// testServicebtn
|
||||
//
|
||||
testServicebtn.Location = new Point(418, 271);
|
||||
testServicebtn.Enabled = false;
|
||||
testServicebtn.Location = new Point(417, 276);
|
||||
testServicebtn.Name = "testServicebtn";
|
||||
testServicebtn.Size = new Size(128, 49);
|
||||
testServicebtn.TabIndex = 17;
|
||||
|
@ -195,7 +208,7 @@
|
|||
//
|
||||
// serviceDisplayNameTBox
|
||||
//
|
||||
serviceDisplayNameTBox.Location = new Point(198, 303);
|
||||
serviceDisplayNameTBox.Location = new Point(197, 308);
|
||||
serviceDisplayNameTBox.Name = "serviceDisplayNameTBox";
|
||||
serviceDisplayNameTBox.Size = new Size(197, 23);
|
||||
serviceDisplayNameTBox.TabIndex = 16;
|
||||
|
@ -203,7 +216,7 @@
|
|||
//
|
||||
// serviceNameTBox
|
||||
//
|
||||
serviceNameTBox.Location = new Point(198, 246);
|
||||
serviceNameTBox.Location = new Point(197, 251);
|
||||
serviceNameTBox.Name = "serviceNameTBox";
|
||||
serviceNameTBox.Size = new Size(197, 23);
|
||||
serviceNameTBox.TabIndex = 15;
|
||||
|
@ -212,7 +225,7 @@
|
|||
// label11
|
||||
//
|
||||
label11.AutoSize = true;
|
||||
label11.Location = new Point(21, 303);
|
||||
label11.Location = new Point(20, 308);
|
||||
label11.Name = "label11";
|
||||
label11.Size = new Size(128, 17);
|
||||
label11.TabIndex = 14;
|
||||
|
@ -221,7 +234,7 @@
|
|||
// label10
|
||||
//
|
||||
label10.AutoSize = true;
|
||||
label10.Location = new Point(21, 249);
|
||||
label10.Location = new Point(20, 254);
|
||||
label10.Name = "label10";
|
||||
label10.Size = new Size(104, 17);
|
||||
label10.TabIndex = 13;
|
||||
|
@ -229,7 +242,8 @@
|
|||
//
|
||||
// selectPathBtn
|
||||
//
|
||||
selectPathBtn.Location = new Point(418, 39);
|
||||
selectPathBtn.Enabled = false;
|
||||
selectPathBtn.Location = new Point(417, 44);
|
||||
selectPathBtn.Name = "selectPathBtn";
|
||||
selectPathBtn.Size = new Size(128, 31);
|
||||
selectPathBtn.TabIndex = 12;
|
||||
|
@ -240,7 +254,7 @@
|
|||
// folderPathTbox
|
||||
//
|
||||
folderPathTbox.Enabled = false;
|
||||
folderPathTbox.Location = new Point(120, 43);
|
||||
folderPathTbox.Location = new Point(119, 48);
|
||||
folderPathTbox.Name = "folderPathTbox";
|
||||
folderPathTbox.Size = new Size(271, 23);
|
||||
folderPathTbox.TabIndex = 11;
|
||||
|
@ -248,7 +262,7 @@
|
|||
// label9
|
||||
//
|
||||
label9.AutoSize = true;
|
||||
label9.Location = new Point(21, 46);
|
||||
label9.Location = new Point(20, 51);
|
||||
label9.Name = "label9";
|
||||
label9.Size = new Size(92, 17);
|
||||
label9.TabIndex = 10;
|
||||
|
@ -256,7 +270,7 @@
|
|||
//
|
||||
// dbNameTBox
|
||||
//
|
||||
dbNameTBox.Location = new Point(199, 191);
|
||||
dbNameTBox.Location = new Point(198, 196);
|
||||
dbNameTBox.Name = "dbNameTBox";
|
||||
dbNameTBox.Size = new Size(197, 23);
|
||||
dbNameTBox.TabIndex = 9;
|
||||
|
@ -265,7 +279,7 @@
|
|||
// label8
|
||||
//
|
||||
label8.AutoSize = true;
|
||||
label8.Location = new Point(21, 196);
|
||||
label8.Location = new Point(20, 201);
|
||||
label8.Name = "label8";
|
||||
label8.Size = new Size(92, 17);
|
||||
label8.TabIndex = 8;
|
||||
|
@ -273,7 +287,8 @@
|
|||
//
|
||||
// portBtn
|
||||
//
|
||||
portBtn.Location = new Point(423, 109);
|
||||
portBtn.Enabled = false;
|
||||
portBtn.Location = new Point(417, 114);
|
||||
portBtn.Name = "portBtn";
|
||||
portBtn.Size = new Size(128, 49);
|
||||
portBtn.TabIndex = 7;
|
||||
|
@ -283,7 +298,7 @@
|
|||
//
|
||||
// apiPortTBox
|
||||
//
|
||||
apiPortTBox.Location = new Point(199, 146);
|
||||
apiPortTBox.Location = new Point(198, 151);
|
||||
apiPortTBox.Name = "apiPortTBox";
|
||||
apiPortTBox.Size = new Size(197, 23);
|
||||
apiPortTBox.TabIndex = 5;
|
||||
|
@ -291,7 +306,7 @@
|
|||
//
|
||||
// nginxPortTBox
|
||||
//
|
||||
nginxPortTBox.Location = new Point(198, 98);
|
||||
nginxPortTBox.Location = new Point(197, 103);
|
||||
nginxPortTBox.Name = "nginxPortTBox";
|
||||
nginxPortTBox.Size = new Size(197, 23);
|
||||
nginxPortTBox.TabIndex = 4;
|
||||
|
@ -300,7 +315,7 @@
|
|||
// label4
|
||||
//
|
||||
label4.AutoSize = true;
|
||||
label4.Location = new Point(21, 152);
|
||||
label4.Location = new Point(20, 157);
|
||||
label4.Name = "label4";
|
||||
label4.Size = new Size(128, 17);
|
||||
label4.TabIndex = 3;
|
||||
|
@ -309,7 +324,7 @@
|
|||
// label5
|
||||
//
|
||||
label5.AutoSize = true;
|
||||
label5.Location = new Point(21, 102);
|
||||
label5.Location = new Point(20, 107);
|
||||
label5.Name = "label5";
|
||||
label5.Size = new Size(104, 17);
|
||||
label5.TabIndex = 2;
|
||||
|
@ -332,6 +347,7 @@
|
|||
//
|
||||
// activeBtn
|
||||
//
|
||||
activeBtn.Enabled = false;
|
||||
activeBtn.Location = new Point(430, 69);
|
||||
activeBtn.Name = "activeBtn";
|
||||
activeBtn.Size = new Size(128, 49);
|
||||
|
@ -385,31 +401,21 @@
|
|||
// groupBox4
|
||||
//
|
||||
groupBox4.Controls.Add(logTBox);
|
||||
groupBox4.Location = new Point(618, 32);
|
||||
groupBox4.Location = new Point(618, 25);
|
||||
groupBox4.Name = "groupBox4";
|
||||
groupBox4.Size = new Size(391, 791);
|
||||
groupBox4.Size = new Size(391, 851);
|
||||
groupBox4.TabIndex = 4;
|
||||
groupBox4.TabStop = false;
|
||||
groupBox4.Text = "运行日志";
|
||||
groupBox4.Text = "部署提示日志";
|
||||
//
|
||||
// logTBox
|
||||
//
|
||||
logTBox.Location = new Point(6, 35);
|
||||
logTBox.Location = new Point(6, 22);
|
||||
logTBox.Name = "logTBox";
|
||||
logTBox.Size = new Size(359, 738);
|
||||
logTBox.Size = new Size(359, 816);
|
||||
logTBox.TabIndex = 0;
|
||||
logTBox.Text = "";
|
||||
//
|
||||
// confimDeployBtn
|
||||
//
|
||||
confimDeployBtn.Location = new Point(198, 370);
|
||||
confimDeployBtn.Name = "confimDeployBtn";
|
||||
confimDeployBtn.Size = new Size(128, 49);
|
||||
confimDeployBtn.TabIndex = 19;
|
||||
confimDeployBtn.Text = "确认部署配置";
|
||||
confimDeployBtn.UseVisualStyleBackColor = true;
|
||||
confimDeployBtn.Click += confimDeployBtn_Click;
|
||||
//
|
||||
// Main
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 17F);
|
||||
|
@ -421,7 +427,6 @@
|
|||
Controls.Add(groupBox1);
|
||||
Name = "Main";
|
||||
Text = "EI Image Viewer";
|
||||
Load += Main_Load;
|
||||
groupBox1.ResumeLayout(false);
|
||||
groupBox1.PerformLayout();
|
||||
groupBox2.ResumeLayout(false);
|
||||
|
|
158
Start/Main.cs
158
Start/Main.cs
|
@ -35,9 +35,9 @@ namespace Start
|
|||
|
||||
private bool isPortTestOk = false;
|
||||
|
||||
private bool isServiceTestOk=false;
|
||||
private bool isServiceTestOk = false;
|
||||
|
||||
private bool isDBNameTestOK=false;
|
||||
private bool isDBNameTestOK = false;
|
||||
|
||||
public Main()
|
||||
{
|
||||
|
@ -50,34 +50,6 @@ namespace Start
|
|||
this.KeySecreteTextBox.Text = Md5($"{this.machineTextBox.Text}_XINGCANG");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void Main_Load(object sender, EventArgs e)
|
||||
{
|
||||
portBtn.Enabled = false;
|
||||
activeBtn.Enabled = false;
|
||||
|
||||
//serverTextBox.DataBindings.Add(new Binding("Enabled", this, "isCanDBConfig"));
|
||||
//usernameTextBox.DataBindings.Add(new Binding("Enabled", this, "isCanDBConfig"));
|
||||
//passwordTextBox.DataBindings.Add(new Binding("Enabled", this, "isCanDBConfig"));
|
||||
|
||||
|
||||
|
||||
//nginxPortTBox.DataBindings.Add(new Binding("Enabled", this, "isCanServerConfig"));
|
||||
//apiPortTBox.DataBindings.Add(new Binding("Enabled", this, "isCanServerConfig"));
|
||||
//dbNameTBox.DataBindings.Add(new Binding("Enabled", this, "isCanServerConfig"));
|
||||
|
||||
|
||||
|
||||
//connectButton.DataBindings.Add(new Binding("Enabled", this, "isCanDBConfig"));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int apiPort = 7100;
|
||||
int vuePort = 9527;
|
||||
private void connectButton_Click(object sender, EventArgs e)
|
||||
|
@ -89,7 +61,7 @@ namespace Start
|
|||
{
|
||||
connection.Open();
|
||||
|
||||
Log("数据库连接成功!", Color.Green);
|
||||
Log("数据库连接测试成功!", Color.Green);
|
||||
|
||||
isCanDBConfig = false;
|
||||
serverTextBox.Enabled = isCanDBConfig;
|
||||
|
@ -97,13 +69,18 @@ namespace Start
|
|||
passwordTextBox.Enabled = isCanDBConfig;
|
||||
connectButton.Enabled = false;
|
||||
|
||||
|
||||
selectPathBtn.Enabled = true;
|
||||
portBtn.Enabled = true;
|
||||
testDBBtn.Enabled = true;
|
||||
testServicebtn.Enabled = true;
|
||||
confimDeployBtn.Enabled = true;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Log($"数据库连接失败:{ex.Message}", Color.Red);
|
||||
Log($"数据库连接测试失败:{ex.Message}", Color.Red);
|
||||
|
||||
}
|
||||
finally
|
||||
|
@ -114,39 +91,6 @@ namespace Start
|
|||
|
||||
private async void portBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
#region 测试 停止Nginx
|
||||
string nginxPath = Path.Combine(AppContext.BaseDirectory, @$"deploy\nginx-1.20.1\");
|
||||
|
||||
var serviceConfig = await File.ReadAllTextAsync("deploy/ServiceConfig.json");
|
||||
|
||||
var jObject = JObject.Parse(serviceConfig);
|
||||
|
||||
#region 创建进程执行命令
|
||||
|
||||
Process process = new Process();
|
||||
process.StartInfo.FileName = "cmd.exe";
|
||||
process.StartInfo.RedirectStandardInput = true;
|
||||
process.StartInfo.UseShellExecute = false;
|
||||
process.StartInfo.CreateNoWindow = true; // 不创建新窗口
|
||||
process.Start();
|
||||
|
||||
var proList = Process.GetProcesses().Where(t => t.ProcessName.Contains("nginx") && t.MainModule.FileName.Contains(nginxPath));
|
||||
|
||||
foreach (var item in proList)
|
||||
{
|
||||
item.Kill();
|
||||
}
|
||||
|
||||
|
||||
await ProcessStandardInputAsync(process, $"sc stop {jObject["serviceName"].ToString()}");
|
||||
|
||||
process.StandardInput.Close();
|
||||
process.WaitForExit();
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
if (int.TryParse(nginxPortTBox.Text, out vuePort) == false || int.TryParse(apiPortTBox.Text, out apiPort) == false)
|
||||
{
|
||||
|
@ -187,7 +131,7 @@ namespace Start
|
|||
|
||||
return;
|
||||
}
|
||||
|
||||
Log($"测试服务名称成功", Color.Green);
|
||||
isServiceTestOk = true;
|
||||
}
|
||||
|
||||
|
@ -224,9 +168,10 @@ namespace Start
|
|||
|
||||
}
|
||||
|
||||
Log($"数据库名称测试成功", Color.Green);
|
||||
isDBNameTestOK = true;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -234,13 +179,29 @@ namespace Start
|
|||
private void confimDeployBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
if (string.IsNullOrWhiteSpace(this.folderPathTbox.Text) || isDBNameTestOK == false || isPortTestOk == false || isServiceTestOk == false)
|
||||
{
|
||||
Log($"请选择部署路径,并分别测试端口,数据库名,服务名都成功才可以进行确认", Color.Red);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Log($"部署配置确认成功", Color.Green);
|
||||
|
||||
activeBtn.Enabled = true;
|
||||
|
||||
confimDeployBtn.Enabled = false;
|
||||
portBtn.Enabled = false;
|
||||
selectPathBtn.Enabled = false;
|
||||
testDBBtn.Enabled = false;
|
||||
testServicebtn.Enabled = false;
|
||||
|
||||
|
||||
nginxPortTBox.Enabled = false;
|
||||
apiPortTBox.Enabled = false;
|
||||
portBtn.Enabled = false;
|
||||
|
||||
dbNameTBox.Enabled = false;
|
||||
serviceNameTBox.Enabled = false;
|
||||
serviceDisplayNameTBox.Enabled = false;
|
||||
}
|
||||
|
||||
private static bool IsPortInUse(int port)
|
||||
|
@ -296,6 +257,13 @@ namespace Start
|
|||
|
||||
private async void activeBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Md5($"{machineTextBox.Text}_XINGCANG") != KeySecreteTextBox.Text.Trim())
|
||||
{
|
||||
Log($"秘钥不正确,请联系供应商", Color.Red);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
this.activeBtn.Enabled = false;
|
||||
|
||||
|
@ -326,7 +294,7 @@ namespace Start
|
|||
startInfo.FileName = "cmd.exe"; // 指定要启动的应用程序
|
||||
startInfo.RedirectStandardInput = true;
|
||||
startInfo.UseShellExecute = false;
|
||||
//startInfo.CreateNoWindow = true;
|
||||
startInfo.CreateNoWindow = true;
|
||||
|
||||
// 创建新进程并启动
|
||||
var process = new Process();
|
||||
|
@ -487,9 +455,9 @@ namespace Start
|
|||
// 删除已存在的服务
|
||||
|
||||
|
||||
await ProcessStandardInputAsync(process, $"sc delete {serviceName}");
|
||||
//await ProcessStandardInputAsync(process, $"sc delete {serviceName}");
|
||||
|
||||
Log($"删除服务{serviceName}...", Color.Green);
|
||||
//Log($"删除服务{serviceName}...", Color.Green);
|
||||
|
||||
// 执行 sc create 命令来创建服务
|
||||
await ProcessStandardInputAsync(process, createStr);
|
||||
|
@ -522,8 +490,12 @@ namespace Start
|
|||
{
|
||||
Log($"后端服务启动成功", Color.Green);
|
||||
|
||||
|
||||
Log($"部署工作已完成", Color.Green);
|
||||
|
||||
try
|
||||
{
|
||||
Log($"现在打开浏览器...", Color.Green);
|
||||
// Use ProcessStartInfo class
|
||||
var start = new ProcessStartInfo($"http://127.0.0.1:{vuePort}")
|
||||
{
|
||||
|
@ -551,15 +523,53 @@ namespace Start
|
|||
#endregion
|
||||
}
|
||||
|
||||
private void selectPathBtn_Click(object sender, EventArgs e)
|
||||
private async void selectPathBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
FolderBrowserDialog dialog = new FolderBrowserDialog();
|
||||
if (dialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
folderPathTbox.Text = dialog.SelectedPath;
|
||||
|
||||
Log($"部署路径选择成功", Color.Green);
|
||||
|
||||
#region 测试 停止Nginx
|
||||
|
||||
var deployFoder = this.folderPathTbox.Text;
|
||||
|
||||
string nginxExtractName = "nginx-1.20.1";
|
||||
|
||||
string nginxStartPath = Path.Combine(deployFoder, @$"{nginxExtractName}\");
|
||||
|
||||
|
||||
#region 创建进程执行命令
|
||||
|
||||
Process process = new Process();
|
||||
process.StartInfo.FileName = "cmd.exe";
|
||||
process.StartInfo.RedirectStandardInput = true;
|
||||
process.StartInfo.UseShellExecute = false;
|
||||
process.StartInfo.CreateNoWindow = true; // 不创建新窗口
|
||||
process.Start();
|
||||
|
||||
var proList = Process.GetProcesses().Where(t => t.ProcessName.Contains("nginx") && t.MainModule.FileName.Contains(nginxStartPath));
|
||||
|
||||
foreach (var item in proList)
|
||||
{
|
||||
item.Kill();
|
||||
}
|
||||
|
||||
|
||||
await ProcessStandardInputAsync(process, $"sc stop {serviceNameTBox.Text}");
|
||||
await ProcessStandardInputAsync(process, $"sc delete {serviceNameTBox.Text}");
|
||||
|
||||
process.StandardInput.Close();
|
||||
process.WaitForExit();
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
<Content Include="deploy\nginx-1.20.1.rar">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="deploy\ServiceConfig.Json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="deploy\sql\bin.bat">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"serviceName": "CertificateApply.NetCore.Api",
|
||||
"serviceDisplayName": "CertificateApplyServiceDisplayName",
|
||||
"binPath": "/IRacIS.Core.API.exe"
|
||||
}
|
Loading…
Reference in New Issue