Compare commits

..

No commits in common. "029072d5c281027577eeb2744abc5abf7408d4e3" and "76c301cedebc99f349dca8a21fbae40078adb63a" have entirely different histories.

17 changed files with 171 additions and 824 deletions

View File

@ -16,9 +16,9 @@
</PropertyGroup>
<ItemGroup>
<None Remove="Resource\EIMedViewerData.rar" />
<None Remove="Resource\EIMedViewerService.rar" />
<None Remove="Resource\EIMedViewerWeb.rar" />
<None Remove="Resource\EIImageViewerData.rar" />
<None Remove="Resource\EIImageViewerService.rar" />
<None Remove="Resource\EIImageViewerWeb.rar" />
<None Remove="Resource\UnInstall.exe" />
<None Remove="ServiceConfig.Json" />
<None Remove="Resource\Data\data.sql" />
@ -28,13 +28,13 @@
<ItemGroup>
<Content Include="favicon.ico" />
<Content Include="Resource\EIMedViewerData.rar">
<Content Include="Resource\EIImageViewerData.rar">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Resource\EIMedViewerService.rar">
<Content Include="Resource\EIImageViewerService.rar">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Resource\EIMedViewerWeb.rar">
<Content Include="Resource\EIImageViewerWeb.rar">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Resource\Data\data.sql">

View File

@ -1,51 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34511.84
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EI_Med_Viewer_Installer", "EI_Med_Viewer_Installer.csproj", "{0A143F47-44C3-4F41-AC47-0C622BDE9087}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Activation", "Other\Activation\Activation.csproj", "{FA2D3538-9C7A-4E50-82C6-B4D10496278E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnInstall", "Other\510k-UnInstall\UnInstall.csproj", "{9B622502-FF2A-4CC9-A0A6-DFF57A5917D7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0A143F47-44C3-4F41-AC47-0C622BDE9087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0A143F47-44C3-4F41-AC47-0C622BDE9087}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0A143F47-44C3-4F41-AC47-0C622BDE9087}.Debug|x64.ActiveCfg = Debug|x64
{0A143F47-44C3-4F41-AC47-0C622BDE9087}.Debug|x64.Build.0 = Debug|x64
{0A143F47-44C3-4F41-AC47-0C622BDE9087}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A143F47-44C3-4F41-AC47-0C622BDE9087}.Release|Any CPU.Build.0 = Release|Any CPU
{0A143F47-44C3-4F41-AC47-0C622BDE9087}.Release|x64.ActiveCfg = Release|x64
{0A143F47-44C3-4F41-AC47-0C622BDE9087}.Release|x64.Build.0 = Release|x64
{FA2D3538-9C7A-4E50-82C6-B4D10496278E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FA2D3538-9C7A-4E50-82C6-B4D10496278E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FA2D3538-9C7A-4E50-82C6-B4D10496278E}.Debug|x64.ActiveCfg = Debug|Any CPU
{FA2D3538-9C7A-4E50-82C6-B4D10496278E}.Debug|x64.Build.0 = Debug|Any CPU
{FA2D3538-9C7A-4E50-82C6-B4D10496278E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FA2D3538-9C7A-4E50-82C6-B4D10496278E}.Release|Any CPU.Build.0 = Release|Any CPU
{FA2D3538-9C7A-4E50-82C6-B4D10496278E}.Release|x64.ActiveCfg = Release|Any CPU
{FA2D3538-9C7A-4E50-82C6-B4D10496278E}.Release|x64.Build.0 = Release|Any CPU
{9B622502-FF2A-4CC9-A0A6-DFF57A5917D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9B622502-FF2A-4CC9-A0A6-DFF57A5917D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9B622502-FF2A-4CC9-A0A6-DFF57A5917D7}.Debug|x64.ActiveCfg = Debug|x64
{9B622502-FF2A-4CC9-A0A6-DFF57A5917D7}.Debug|x64.Build.0 = Debug|x64
{9B622502-FF2A-4CC9-A0A6-DFF57A5917D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9B622502-FF2A-4CC9-A0A6-DFF57A5917D7}.Release|Any CPU.Build.0 = Release|Any CPU
{9B622502-FF2A-4CC9-A0A6-DFF57A5917D7}.Release|x64.ActiveCfg = Release|x64
{9B622502-FF2A-4CC9-A0A6-DFF57A5917D7}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5E112DA1-00FF-40F5-A027-A15C640DB1FD}
EndGlobalSection
EndGlobal

184
Main.Designer.cs generated
View File

@ -84,71 +84,71 @@
groupBox1.Controls.Add(label1);
groupBox1.Location = new Point(11, 12);
groupBox1.Name = "groupBox1";
groupBox1.Size = new Size(614, 205);
groupBox1.Size = new Size(547, 205);
groupBox1.TabIndex = 0;
groupBox1.TabStop = false;
groupBox1.Text = "Step 1: Validate Database";
groupBox1.Text = "第一步:验证数据库";
//
// connectButton
//
connectButton.Location = new Point(223, 145);
connectButton.Location = new Point(195, 150);
connectButton.Name = "connectButton";
connectButton.Size = new Size(149, 40);
connectButton.Size = new Size(128, 40);
connectButton.TabIndex = 6;
connectButton.Text = "Test Connection";
connectButton.Text = "测试连接";
connectButton.UseVisualStyleBackColor = true;
connectButton.Click += connectButton_Click;
//
// passwordTextBox
//
passwordTextBox.Location = new Point(178, 113);
passwordTextBox.Location = new Point(154, 113);
passwordTextBox.Name = "passwordTextBox";
passwordTextBox.PasswordChar = '*';
passwordTextBox.Size = new Size(303, 23);
passwordTextBox.Size = new Size(271, 23);
passwordTextBox.TabIndex = 5;
//
// usernameTextBox
//
usernameTextBox.Location = new Point(180, 73);
usernameTextBox.Location = new Point(156, 73);
usernameTextBox.Name = "usernameTextBox";
usernameTextBox.Size = new Size(303, 23);
usernameTextBox.Size = new Size(271, 23);
usernameTextBox.TabIndex = 4;
usernameTextBox.Text = "sa";
//
// serverTextBox
//
serverTextBox.Location = new Point(180, 33);
serverTextBox.Location = new Point(156, 33);
serverTextBox.Name = "serverTextBox";
serverTextBox.Size = new Size(303, 23);
serverTextBox.Size = new Size(271, 23);
serverTextBox.TabIndex = 3;
serverTextBox.Text = ".";
//
// label3
//
label3.AutoSize = true;
label3.Location = new Point(76, 113);
label3.Location = new Point(107, 113);
label3.Name = "label3";
label3.Size = new Size(64, 17);
label3.Size = new Size(32, 17);
label3.TabIndex = 2;
label3.Text = "Password";
label3.Text = "密码";
//
// label2
//
label2.AutoSize = true;
label2.Location = new Point(119, 73);
label2.Location = new Point(101, 73);
label2.Name = "label2";
label2.Size = new Size(21, 17);
label2.Size = new Size(44, 17);
label2.TabIndex = 1;
label2.Text = "ID";
label2.Text = "登录名";
//
// label1
//
label1.AutoSize = true;
label1.Location = new Point(56, 33);
label1.Location = new Point(95, 33);
label1.Name = "label1";
label1.Size = new Size(84, 17);
label1.Size = new Size(56, 17);
label1.TabIndex = 0;
label1.Text = "Server Name";
label1.Text = "服务器名";
//
// groupBox2
//
@ -172,24 +172,24 @@
groupBox2.Controls.Add(label5);
groupBox2.Location = new Point(12, 223);
groupBox2.Name = "groupBox2";
groupBox2.Size = new Size(613, 468);
groupBox2.Size = new Size(546, 468);
groupBox2.TabIndex = 1;
groupBox2.TabStop = false;
groupBox2.Text = "Step 2: Deployment Parameters Configuration";
groupBox2.Text = "第二步: 部署参数配置";
//
// nginxServiceDisplayNameTbox
//
nginxServiceDisplayNameTbox.Location = new Point(234, 368);
nginxServiceDisplayNameTbox.Location = new Point(151, 368);
nginxServiceDisplayNameTbox.Name = "nginxServiceDisplayNameTbox";
nginxServiceDisplayNameTbox.Size = new Size(260, 23);
nginxServiceDisplayNameTbox.Size = new Size(259, 23);
nginxServiceDisplayNameTbox.TabIndex = 23;
nginxServiceDisplayNameTbox.Text = "EI_Nginx_Self_Starting";
//
// nginxServiceNameTbox
//
nginxServiceNameTbox.Location = new Point(234, 322);
nginxServiceNameTbox.Location = new Point(151, 322);
nginxServiceNameTbox.Name = "nginxServiceNameTbox";
nginxServiceNameTbox.Size = new Size(260, 23);
nginxServiceNameTbox.Size = new Size(259, 23);
nginxServiceNameTbox.TabIndex = 22;
nginxServiceNameTbox.Text = "EI_Nginx";
//
@ -198,142 +198,142 @@
label12.AutoSize = true;
label12.Location = new Point(27, 368);
label12.Name = "label12";
label12.Size = new Size(203, 17);
label12.Size = new Size(111, 17);
label12.TabIndex = 21;
label12.Text = "Displayed Name of Nginx Service";
label12.Text = "nginx服务显示名称";
//
// label13
//
label13.AutoSize = true;
label13.Location = new Point(104, 322);
label13.Location = new Point(51, 322);
label13.Name = "label13";
label13.Size = new Size(126, 17);
label13.Size = new Size(87, 17);
label13.TabIndex = 20;
label13.Text = "Nginx Service Name";
label13.Text = "nginx服务名称";
//
// confimDeployBtn
//
confimDeployBtn.Enabled = false;
confimDeployBtn.Location = new Point(222, 409);
confimDeployBtn.Location = new Point(195, 409);
confimDeployBtn.Name = "confimDeployBtn";
confimDeployBtn.Size = new Size(149, 40);
confimDeployBtn.Size = new Size(128, 40);
confimDeployBtn.TabIndex = 19;
confimDeployBtn.Text = "Confirm Configuration";
confimDeployBtn.Text = "确认部署配置";
confimDeployBtn.UseVisualStyleBackColor = true;
confimDeployBtn.Click += confimDeployBtn_Click;
//
// serviceDisplayNameTBox
//
serviceDisplayNameTBox.Location = new Point(235, 274);
serviceDisplayNameTBox.Location = new Point(152, 274);
serviceDisplayNameTBox.Name = "serviceDisplayNameTBox";
serviceDisplayNameTBox.Size = new Size(260, 23);
serviceDisplayNameTBox.Size = new Size(259, 23);
serviceDisplayNameTBox.TabIndex = 16;
serviceDisplayNameTBox.Text = "EI_Med_Viewer_DisplayName";
serviceDisplayNameTBox.Text = "EI_Image_Viewer_DisplayName";
//
// serviceNameTBox
//
serviceNameTBox.Location = new Point(235, 228);
serviceNameTBox.Location = new Point(152, 228);
serviceNameTBox.Name = "serviceNameTBox";
serviceNameTBox.Size = new Size(260, 23);
serviceNameTBox.Size = new Size(259, 23);
serviceNameTBox.TabIndex = 15;
serviceNameTBox.Text = "EI_Med_Viewer";
serviceNameTBox.Text = "EI_Image_Viewer";
//
// label11
//
label11.AutoSize = true;
label11.Location = new Point(2, 277);
label11.Location = new Point(11, 277);
label11.Name = "label11";
label11.Size = new Size(228, 17);
label11.Size = new Size(128, 17);
label11.TabIndex = 14;
label11.Text = "Displayed Name of Back-end Service";
label11.Text = "网站后端服务显示名称";
//
// label10
//
label10.AutoSize = true;
label10.Location = new Point(79, 231);
label10.Location = new Point(35, 231);
label10.Name = "label10";
label10.Size = new Size(151, 17);
label10.Size = new Size(104, 17);
label10.TabIndex = 13;
label10.Text = " Back-end Service Name";
label10.Text = "网站后端服务名称";
//
// selectPathBtn
//
selectPathBtn.Enabled = false;
selectPathBtn.Location = new Point(509, 43);
selectPathBtn.Location = new Point(429, 43);
selectPathBtn.Name = "selectPathBtn";
selectPathBtn.Size = new Size(95, 27);
selectPathBtn.TabIndex = 12;
selectPathBtn.Text = "Select";
selectPathBtn.Text = "选择";
selectPathBtn.UseVisualStyleBackColor = true;
selectPathBtn.Click += selectPathBtn_Click;
//
// folderPathTbox
//
folderPathTbox.Enabled = false;
folderPathTbox.Location = new Point(235, 44);
folderPathTbox.Location = new Point(152, 44);
folderPathTbox.Name = "folderPathTbox";
folderPathTbox.Size = new Size(260, 23);
folderPathTbox.Size = new Size(259, 23);
folderPathTbox.TabIndex = 11;
//
// label9
//
label9.AutoSize = true;
label9.Location = new Point(123, 48);
label9.Location = new Point(83, 48);
label9.Name = "label9";
label9.Size = new Size(107, 17);
label9.Size = new Size(56, 17);
label9.TabIndex = 10;
label9.Text = "Deployment Path";
label9.Text = "部署路径";
//
// dbNameTBox
//
dbNameTBox.Location = new Point(235, 182);
dbNameTBox.Location = new Point(152, 182);
dbNameTBox.Name = "dbNameTBox";
dbNameTBox.Size = new Size(260, 23);
dbNameTBox.Size = new Size(259, 23);
dbNameTBox.TabIndex = 9;
dbNameTBox.Text = "IRaCIS";
//
// label8
//
label8.AutoSize = true;
label8.Location = new Point(54, 185);
label8.Location = new Point(47, 185);
label8.Name = "label8";
label8.Size = new Size(176, 17);
label8.Size = new Size(92, 17);
label8.TabIndex = 8;
label8.Text = "Deployment Database Name";
label8.Text = "部署数据库名称";
//
// apiPortTBox
//
apiPortTBox.Location = new Point(235, 136);
apiPortTBox.Location = new Point(152, 136);
apiPortTBox.Name = "apiPortTBox";
apiPortTBox.Size = new Size(260, 23);
apiPortTBox.Size = new Size(259, 23);
apiPortTBox.TabIndex = 5;
apiPortTBox.Text = "7100";
//
// nginxPortTBox
//
nginxPortTBox.Location = new Point(235, 90);
nginxPortTBox.Location = new Point(152, 90);
nginxPortTBox.Name = "nginxPortTBox";
nginxPortTBox.Size = new Size(260, 23);
nginxPortTBox.Size = new Size(259, 23);
nginxPortTBox.TabIndex = 4;
nginxPortTBox.Text = "9520";
//
// label4
//
label4.AutoSize = true;
label4.Location = new Point(48, 140);
label4.Location = new Point(11, 140);
label4.Name = "label4";
label4.Size = new Size(182, 17);
label4.Size = new Size(128, 17);
label4.TabIndex = 3;
label4.Text = "Back-end Service Startup Port";
label4.Text = "网站后端服务启动端口";
//
// label5
//
label5.AutoSize = true;
label5.Location = new Point(94, 93);
label5.Location = new Point(35, 93);
label5.Name = "label5";
label5.Size = new Size(136, 17);
label5.Size = new Size(104, 17);
label5.TabIndex = 2;
label5.Text = "Front-end Access Port";
label5.Text = "网站前端访问端口";
//
// groupBox3
//
@ -344,47 +344,47 @@
groupBox3.Controls.Add(machineCodeLB);
groupBox3.Controls.Add(label6);
groupBox3.Controls.Add(label7);
groupBox3.Location = new Point(11, 708);
groupBox3.Location = new Point(11, 714);
groupBox3.Name = "groupBox3";
groupBox3.Size = new Size(614, 227);
groupBox3.Size = new Size(544, 221);
groupBox3.TabIndex = 2;
groupBox3.TabStop = false;
groupBox3.Text = "Step 3: Activate and Deploy";
groupBox3.Text = "第三步:激活与部署";
//
// btnCopy
//
btnCopy.Location = new Point(503, 39);
btnCopy.Location = new Point(429, 39);
btnCopy.Name = "btnCopy";
btnCopy.Size = new Size(93, 27);
btnCopy.TabIndex = 13;
btnCopy.Text = "Copy";
btnCopy.Text = "复制";
btnCopy.UseVisualStyleBackColor = true;
btnCopy.Click += btnCopy_Click;
//
// activeBtn
//
activeBtn.Enabled = false;
activeBtn.Location = new Point(222, 149);
activeBtn.Location = new Point(195, 139);
activeBtn.Name = "activeBtn";
activeBtn.Size = new Size(149, 40);
activeBtn.Size = new Size(128, 40);
activeBtn.TabIndex = 9;
activeBtn.Text = "Activate and Deploy";
activeBtn.Text = "激活并部署";
activeBtn.UseVisualStyleBackColor = true;
activeBtn.Click += activeBtn_Click;
//
// KeySecreteTextBox
//
KeySecreteTextBox.Location = new Point(178, 92);
KeySecreteTextBox.Location = new Point(152, 92);
KeySecreteTextBox.Name = "KeySecreteTextBox";
KeySecreteTextBox.Size = new Size(294, 23);
KeySecreteTextBox.Size = new Size(259, 23);
KeySecreteTextBox.TabIndex = 8;
//
// machineTextBox
//
machineTextBox.Location = new Point(178, 42);
machineTextBox.Location = new Point(152, 42);
machineTextBox.Name = "machineTextBox";
machineTextBox.ReadOnly = true;
machineTextBox.Size = new Size(294, 23);
machineTextBox.Size = new Size(259, 23);
machineTextBox.TabIndex = 7;
//
// machineCodeLB
@ -398,36 +398,36 @@
// label6
//
label6.AutoSize = true;
label6.Location = new Point(55, 94);
label6.Location = new Point(95, 94);
label6.Name = "label6";
label6.Size = new Size(99, 17);
label6.Size = new Size(44, 17);
label6.TabIndex = 5;
label6.Text = "Activation Code";
label6.Text = "激活码";
//
// label7
//
label7.AutoSize = true;
label7.Location = new Point(62, 44);
label7.Location = new Point(95, 44);
label7.Name = "label7";
label7.Size = new Size(92, 17);
label7.Size = new Size(44, 17);
label7.TabIndex = 4;
label7.Text = "Machine Code";
label7.Text = "机器码";
//
// groupBox4
//
groupBox4.Controls.Add(logTBox);
groupBox4.Location = new Point(631, 11);
groupBox4.Location = new Point(570, 11);
groupBox4.Name = "groupBox4";
groupBox4.Size = new Size(391, 924);
groupBox4.Size = new Size(391, 825);
groupBox4.TabIndex = 4;
groupBox4.TabStop = false;
groupBox4.Text = "Deployment Log";
groupBox4.Text = "部署日志";
//
// logTBox
//
logTBox.Location = new Point(6, 22);
logTBox.Name = "logTBox";
logTBox.Size = new Size(359, 899);
logTBox.Size = new Size(359, 797);
logTBox.TabIndex = 0;
logTBox.Text = "";
//
@ -435,14 +435,14 @@
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(1034, 944);
ClientSize = new Size(977, 944);
Controls.Add(groupBox4);
Controls.Add(groupBox3);
Controls.Add(groupBox2);
Controls.Add(groupBox1);
Icon = (Icon)resources.GetObject("$this.Icon");
Name = "Main";
Text = "Install - EI-Med Viewer V1";
Text = "安装 - EI Image Viewer V1";
TopMost = true;
Load += Main_Load;
groupBox1.ResumeLayout(false);

137
Main.cs
View File

@ -33,7 +33,6 @@ using System.Web;
namespace Start
{
public partial class Main : Form
{
@ -78,7 +77,7 @@ namespace Start
connection.Open();
});
WinformLog("Database connection test successful", Color.Green);
WinformLog("数据库连接测试成功", Color.Green);
isCanDBConfig = false;
serverTextBox.Enabled = isCanDBConfig;
@ -97,7 +96,7 @@ namespace Start
catch (Exception ex)
{
WinformLog($"Database connection test failed{ex.Message}", Color.Red);
WinformLog($"数据库连接测试失败{ex.Message}", Color.Red);
}
}
@ -115,26 +114,26 @@ namespace Start
if (int.TryParse(nginxPortTBox.Text, out vuePort) == false || int.TryParse(apiPortTBox.Text, out apiPort) == false)
{
WinformLog($"Please enter a valid port", Color.Red);
WinformLog($"请输入合法的端口", Color.Red);
return;
}
if (IsPortInUse(vuePort))
{
WinformLog($"The front-end port set by the service is occupied, please choose another port", Color.Red);
WinformLog($"服务设置的前端端口被占用,请选择其他端口", Color.Red);
return;
}
if (IsPortInUse(apiPort))
{
WinformLog($"The back-end port set by the service is occupied, please choose another port", Color.Red);
WinformLog($"服务设置的后端端口被占用,请选择其他端口", Color.Red);
return;
}
WinformLog("Port test successful", Color.Green);
WinformLog("端口测试成功", Color.Green);
isPortTestOk = true;
@ -148,20 +147,20 @@ namespace Start
{
if (ServiceController.GetServices().Any(t => t.ServiceName == serviceNameTBox.Text))
{
WinformLog($"The set backend service name already exists, please replace it", Color.Red);
WinformLog($"设置的后端服务名称已存在,请更换", Color.Red);
return;
}
if (ServiceController.GetServices().Any(t => t.ServiceName == nginxServiceNameTbox.Text))
{
WinformLog($"The nginx service name already exists. Please change it", Color.Red);
WinformLog($"设置的nginx服务名称已存在,请更换", Color.Red);
return;
}
WinformLog($"Service name test successful", Color.Green);
WinformLog($"测试服务名称成功", Color.Green);
isServiceTestOk = true;
}
@ -216,7 +215,7 @@ namespace Start
{
// 执行逻辑,表示大于等于 6.0.0 的 .NET 运行时已安装
WinformLog("Current system >= 6.0.0 NetCore runtime is installed", Color.Green);
WinformLog("当前系统>= 6.0.0 NetCore 运行时已安装", Color.Green);
isRuntimeTestOk = true;
@ -225,13 +224,13 @@ namespace Start
{
WinformLog("The current system >= 6.0.0 NetCore runtime is not installed, please install it before running the program", Color.Red);
WinformLog("当前系统>= 6.0.0 NetCore 运行时未安装,请安装后,再运行该程序", Color.Red);
connectButton.Enabled = false;
//await Task.Run(() =>
// {
// WinformLog("Now start installing the Net core runtime for you...", Color.Orange);
// WinformLog("现在为您启动安装Net core 运行时...", Color.Orange);
// string runtimePath = Path.Combine(AppContext.BaseDirectory, "Resource/NetCoreRuntime/dotnet-hosting-6.0.0-win.exe");
@ -247,7 +246,7 @@ namespace Start
// otherProcess.Start();
// otherProcess.WaitForExit();
// WinformLog("Net core 6.0.0 runtime installation completed", Color.Green);
// WinformLog("Net core 6.0.0 运行时安装完成", Color.Green);
// });
@ -259,7 +258,7 @@ namespace Start
{
if (string.IsNullOrWhiteSpace(dbNameTBox.Text))
{
WinformLog($"Please enter the deployed database name", Color.Red);
WinformLog($"请输入部署的数据库名称", Color.Red);
return;
}
@ -281,14 +280,14 @@ namespace Start
if (rowCount > 0)
{
WinformLog($"{dbNameTBox.Text.Trim()}The database already exists.", Color.Red);
WinformLog($"{dbNameTBox.Text.Trim()}该数据库已存在。", Color.Red);
return;
}
}
WinformLog($"Database name test successful", Color.Green);
WinformLog($"数据库名称测试成功", Color.Green);
isDBNameTestOK = true;
@ -306,17 +305,17 @@ namespace Start
if (string.IsNullOrWhiteSpace(this.folderPathTbox.Text))
{
WinformLog($"Confirmation can only be made after selecting the deployment path, test port, database name, and service name.", Color.Red);
WinformLog($"请选择部署路径,测试的端口,数据库名,服务名都成功才可以进行确认", Color.Red);
return;
}
if (isDBNameTestOK == false || isPortTestOk == false || isServiceTestOk == false)
{
WinformLog($"Confirmation can only be made after the test port, database name, and service name are all test successful.", Color.Red);
WinformLog($"测试的端口,数据库名,服务名都成功才可以进行确认", Color.Red);
return;
}
WinformLog($"Deployment configuration confirmed successfully", Color.Green);
WinformLog($"部署配置确认成功", Color.Green);
activeBtn.Enabled = true;
@ -404,7 +403,7 @@ namespace Start
{
if (Md5($"{machineTextBox.Text}_XINGCANG") != KeySecreteTextBox.Text.Trim())
{
WinformLog($"The secret key is incorrect, please contact the supplier", Color.Red);
WinformLog($"秘钥不正确,请联系供应商", Color.Red);
return;
}
@ -422,10 +421,10 @@ namespace Start
var deployFoder = this.folderPathTbox.Text;
string nginxExtractName = "EIMedViewerWeb";
string apiExtractName = "EIMedViewerService";
string nginxExtractName = "EIImageViewerWeb";
string apiExtractName = "EIImageViewerService";
string dataExtraName = "EIMedViewerData";
string dataExtraName = "EIImageViewerData";
string nginxStartPath = Path.Combine(deployFoder, @$"{nginxExtractName}\");
var nginxConfigPath = Path.Combine(nginxStartPath, @$"conf\nginx.conf");
@ -435,14 +434,14 @@ namespace Start
var apiBinPath = Path.Combine(deployFoder, "EIMedViewerService/EI_Med_Viewer.exe");
var apiJsonConfigPath = Path.Combine(deployFoder, "EIMedViewerService/appsettings.Test_510K.json");
var apiBinPath = Path.Combine(deployFoder, "EIImageViewerService/EI_Image_Viewer.exe");
var apiJsonConfigPath = Path.Combine(deployFoder, "EIImageViewerService/appsettings.CertificateApply.json");
string nginxRarFilePath = Path.Combine(AppContext.BaseDirectory, $@"Resource\EIMedViewerWeb.rar");
string apiRarFilePath = Path.Combine(AppContext.BaseDirectory, "Resource/EIMedViewerService.rar");
string nginxRarFilePath = Path.Combine(AppContext.BaseDirectory, $@"Resource\EIImageViewerWeb.rar");
string apiRarFilePath = Path.Combine(AppContext.BaseDirectory, "Resource/EIImageViewerService.rar");
string dataRarFilePath = Path.Combine(AppContext.BaseDirectory, "Resource/EIMedViewerData.rar");
string dataRarFilePath = Path.Combine(AppContext.BaseDirectory, "Resource/EIImageViewerData.rar");
@ -469,7 +468,7 @@ namespace Start
#region 解压nginx 和前端部署的文件
WinformLog($"Start decompressing nginx and front-end deployment compressed files...", Color.Green);
WinformLog($"开始解压 nginx 及前端部署压缩文件...", Color.Green);
string extractPath = Path.Combine(deployFoder, nginxExtractName);
if (!Directory.Exists(extractPath))
@ -494,7 +493,7 @@ namespace Start
}
WinformLog($"The nginx and front-end deployment compressed files have been successfully decompressed to: {extractPath}", Color.Green);
WinformLog($"nginx 及前端部署压缩文件已成功解压缩到: {extractPath}", Color.Green);
@ -504,10 +503,10 @@ namespace Start
if (!File.Exists(nginxConfigPath))
{
WinformLog("No nginx exist under the default path", Color.Red);
WinformLog("预设路径不存在nginx", Color.Red);
}
WinformLog("Prepare to write nginx configuration...", Color.Green);
WinformLog("准备写入nginx配置...", Color.Green);
var nginxConfig = File.ReadAllText(nginxConfigPath);
@ -516,12 +515,12 @@ namespace Start
File.WriteAllText(nginxConfigPath, nginxConfig);
WinformLog("nginx deployment configuration writing completed", Color.Green);
WinformLog("nginx部署配置写入完成", Color.Green);
#region nginxservice
WinformLog("Prepare nginx self-starting service configuration file...", Color.Green);
WinformLog("准备nginx自启动服务配置文件...", Color.Green);
var nginxServiceConfig = File.ReadAllText(nginxServiceXMLPath);
@ -533,25 +532,25 @@ namespace Start
File.WriteAllText(nginxServiceXMLPath, nginxServiceConfig);
WinformLog("nginx self-starting service configuration writing completed", Color.Green);
WinformLog("nginx自启动服务配置写入完成", Color.Green);
#endregion
WinformLog($"Prepare to create a self-starting nginx service...", Color.Green);
WinformLog($"准备创建自启动nginx服务...", Color.Green);
var nginxCreateStr = $@"{nginxServiceEXEPath} install ";
// 执行 sc create 命令来创建服务
await ProcessStandardInputAsync(process, nginxCreateStr);
WinformLog($"The execution of creating service {nginxServiceName} ends", Color.Green);
WinformLog($"服务{nginxServiceName}创建执行结束", Color.Green);
await Task.Delay(2000);
#region nginx 服务
WinformLog($"Start the deployed {nginxServiceName} service...", Color.Green);
WinformLog($"启动部署的{nginxServiceName}服务...", Color.Green);
await ProcessStandardInputAsync(process, $"sc start {nginxServiceName}");
@ -570,11 +569,11 @@ namespace Start
if (scNginx.Status == ServiceControllerStatus.Running)
{
WinformLog($"nginx service started successfully", Color.Green);
WinformLog($"nginx服务启动成功", Color.Green);
}
else
{
WinformLog($"nginx service failed to start", Color.Red);
WinformLog($"nginx服务启动失败", Color.Red);
}
#endregion
@ -586,7 +585,7 @@ namespace Start
//// 指定工作目录即进入nginx.exe所在的目录
//psi.WorkingDirectory = nginxStartPath;
//WinformLog(" Start nginx service...", Color.Green);
//WinformLog(" 开始启动 nginx 服务...", Color.Green);
//// 启动可执行文件
//Process.Start(psi);
@ -595,11 +594,11 @@ namespace Start
//if (Process.GetProcesses().Any(t => t.ProcessName.Contains("nginx") && t.MainModule.FileName.Contains(nginxStartPath)))
//{
// WinformLog(" nginx service started successfully", Color.Green);
// WinformLog(" nginx 服务启动成功", Color.Green);
//}
//else
//{
// WinformLog(" nginx service failed to start", Color.Red);
// WinformLog(" nginx 服务启动失败", Color.Red);
// return;
//}
@ -616,7 +615,7 @@ namespace Start
{
#region 解压后端部署的文件
WinformLog($"Start decompressing the backend deployment compressed file...", Color.Green);
WinformLog($"开始解压后端部署压缩文件...", Color.Green);
string apiExtractPath = Path.Combine(deployFoder, apiExtractName);
@ -643,7 +642,7 @@ namespace Start
}
WinformLog($"The backend deployment compressed file was successfully extracted to: {apiExtractPath}", Color.Green);
WinformLog($"后端部署压缩文件已成功解压缩到: {apiExtractPath}", Color.Green);
#endregion
});
@ -651,7 +650,7 @@ namespace Start
await Task.Run(() =>
{
#region 解压模板文件
WinformLog($"Start decompressing the deployment dependency template compressed file...", Color.Green);
WinformLog($"开始解压部署依赖模板压缩文件...", Color.Green);
string extractPath = Path.Combine(deployFoder, dataExtraName);
if (!Directory.Exists(extractPath))
@ -672,7 +671,7 @@ namespace Start
}
WinformLog($"The dependency template compressed file was successfully extracted to: {extractPath}", Color.Green);
WinformLog($"依赖模板压缩文件已成功解压缩到: {extractPath}", Color.Green);
#endregion
@ -705,7 +704,7 @@ namespace Start
}
}
}
WinformLog($"Document resources released successfully", Color.Green);
WinformLog($"文档资源释放成功", Color.Green);
#endregion
});
@ -745,11 +744,11 @@ namespace Start
File.WriteAllText(Path.Combine(directoryPath, "config.json"), JsonConvert.SerializeObject(configObj));
WinformLog("Writing the activation key is completed", Color.Green);
WinformLog("写入激活秘钥完成", Color.Green);
}
catch (Exception ex)
{
WinformLog("Failed to write the activation key. Please start the program in administrator mode to ensure that the program has sufficient permissions.", Color.Red);
WinformLog("写入激活秘钥失败,请用管理员方式启动该程序,保证程序可以", Color.Red);
}
#endregion
@ -765,16 +764,16 @@ namespace Start
#region 创建服务
WinformLog($"Start creating a service {serviceName}...", Color.Green);
WinformLog($"开始创建服务{serviceName}...", Color.Green);
var createTestStr = $"sc create {serviceName} binPath= \"{apiBinPath} --urls=\"http://*:{apiPort}\" --env Test_510K\" DisplayName= \"{serviceDisplayName}\" start= auto";
var createTestStr = $"sc create {serviceName} binPath= \"{apiBinPath} --urls=\"http://127.0.0.1:{apiPort}\" --env CertificateApply\" DisplayName= \"{serviceDisplayName}\" start= auto";
var createStr = $@"sc create {serviceName} binPath= ""{apiBinPath} --urls=""http://*:{apiPort}"" --env Test_510K"" DisplayName= ""{serviceDisplayName}"" start= auto";
var createStr = $@"sc create {serviceName} binPath= ""{apiBinPath} --urls=""http://127.0.0.1:{apiPort}"" --env CertificateApply"" DisplayName= ""{serviceDisplayName}"" start= auto";
// 执行 sc create 命令来创建服务
await ProcessStandardInputAsync(process, createStr);
WinformLog($"The execution of creating service{serviceName}ends", Color.Green);
WinformLog($"服务{serviceName}创建执行结束", Color.Green);
#endregion
@ -783,7 +782,7 @@ namespace Start
#region 初始化数据库脚本
WinformLog($"Execute initialization database script...", Color.Green);
WinformLog($"执行初始化数据库脚本...", Color.Green);
//执行数据库脚本
@ -794,14 +793,14 @@ namespace Start
await ProcessStandardInputAsync(process, $@" SQLCMD -v dbName = ""{dbNameTBox.Text}"" -i ""{AppContext.BaseDirectory}Resource\Data\data.sql"" ");
WinformLog($"The execution of the initialization database script ends", Color.Green);
WinformLog($"初始化数据库脚本执行结束", Color.Green);
#endregion
#region 部署网站配置文件写入
WinformLog("Start writing the deployment website service configuration file...", Color.Green);
WinformLog("开始写入部署网站服务配置文件...", Color.Green);
var appsettingsJson = File.ReadAllText(apiJsonConfigPath);
@ -829,13 +828,13 @@ namespace Start
catch (SqlException ex)
{
WinformLog($"Connection string error", Color.Red);
WinformLog($"连接字符串错误", Color.Red);
return;
}
WinformLog("Deploy the website service configuration file, write and test OK", Color.Green);
WinformLog("部署网站服务配置文件写入并测试OK", Color.Green);
#endregion
@ -852,7 +851,7 @@ namespace Start
#region 启动后端服务
WinformLog($"Start the deployed backend service...", Color.Green);
WinformLog($"启动部署的后端服务...", Color.Green);
await ProcessStandardInputAsync(process, $"sc start {serviceName}");
@ -878,14 +877,14 @@ namespace Start
if (sc.Status == ServiceControllerStatus.Running)
{
WinformLog($"Backend service started successfully", Color.Green);
WinformLog($"后端服务启动成功", Color.Green);
WinformLog($"Deployment completed", Color.Green);
WinformLog($"部署工作已完成", Color.Green);
try
{
WinformLog($"Now ready to open the browser...", Color.Green);
WinformLog($"现在准备打开浏览器...", Color.Green);
await Task.Delay(2000);
// Use ProcessStartInfo class
@ -906,7 +905,7 @@ namespace Start
}
else
{
WinformLog($"The backend service failed to start. You can try to start {serviceDisplayName}manually. If you still cannot start after trying manually, please contact technical personnel to confirm the deployment environment.", Color.Red);
WinformLog($"后端服务启动失败,您可手动启动{serviceDisplayName}尝试,如若手动尝试还是无法启动,请联系技术人员确认部署环境", Color.Red);
}
#endregion
@ -939,7 +938,7 @@ namespace Start
confimDeployBtn.Enabled = true;
WinformLog($"Deployment path selected successfully", Color.Green);
WinformLog($"部署路径选择成功", Color.Green);
}
@ -949,7 +948,7 @@ namespace Start
{
Clipboard.SetText(machineTextBox.Text);
WinformLog("The machine code was copied to the clipboard successfully!", Color.Green);
WinformLog("机器码拷贝到剪切板成功!", Color.Green);
}
private void Main_Load(object sender, EventArgs e)
@ -981,13 +980,13 @@ namespace Start
{
foreach (var instanceName in key.GetValueNames())
{
WinformLog($"The current system SQL Server installed instance: {instanceName}", Color.Green);
WinformLog($"当前系统SQL Server 已安装实例: {instanceName}", Color.Green);
}
}
}
else
{
WinformLog("SQL Server is not installed, please install it before running the deployment program.", Color.Red);
WinformLog("SQL Server 未安装,请安装后再运行该部署程序", Color.Red);
}

View File

@ -1,64 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">

View File

@ -1,11 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>

View File

@ -1,120 +0,0 @@
namespace EI_Image_Viewer_Activation
{
partial class Main
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main));
label1 = new Label();
label2 = new Label();
codeTBox = new TextBox();
activeSecreteTbox = new TextBox();
btnCopy = new Button();
SuspendLayout();
//
// label1
//
label1.AutoSize = true;
label1.Font = new Font("Microsoft YaHei UI", 15F, FontStyle.Regular, GraphicsUnit.Point);
label1.Location = new Point(54, 69);
label1.Margin = new Padding(4, 0, 4, 0);
label1.Name = "label1";
label1.Size = new Size(72, 27);
label1.TabIndex = 0;
label1.Text = "机器码";
//
// label2
//
label2.AutoSize = true;
label2.Font = new Font("Microsoft YaHei UI", 15F, FontStyle.Regular, GraphicsUnit.Point);
label2.Location = new Point(54, 183);
label2.Margin = new Padding(4, 0, 4, 0);
label2.Name = "label2";
label2.Size = new Size(72, 27);
label2.TabIndex = 1;
label2.Text = "激活码";
//
// codeTBox
//
codeTBox.Font = new Font("Microsoft YaHei UI", 15F, FontStyle.Regular, GraphicsUnit.Point);
codeTBox.Location = new Point(168, 69);
codeTBox.Margin = new Padding(4);
codeTBox.Name = "codeTBox";
codeTBox.Size = new Size(424, 33);
codeTBox.TabIndex = 2;
codeTBox.TextChanged += codeTBox_TextChanged;
//
// activeSecreteTbox
//
activeSecreteTbox.Enabled = false;
activeSecreteTbox.Font = new Font("Microsoft YaHei UI", 15F, FontStyle.Regular, GraphicsUnit.Point);
activeSecreteTbox.Location = new Point(168, 183);
activeSecreteTbox.Margin = new Padding(4);
activeSecreteTbox.Name = "activeSecreteTbox";
activeSecreteTbox.Size = new Size(424, 33);
activeSecreteTbox.TabIndex = 3;
//
// btnCopy
//
btnCopy.Font = new Font("Microsoft YaHei UI", 15F, FontStyle.Regular, GraphicsUnit.Point);
btnCopy.Location = new Point(619, 178);
btnCopy.Margin = new Padding(4);
btnCopy.Name = "btnCopy";
btnCopy.Size = new Size(144, 41);
btnCopy.TabIndex = 4;
btnCopy.Text = "拷贝";
btnCopy.UseVisualStyleBackColor = true;
btnCopy.Click += btnCopy_Click;
//
// Main
//
AutoScaleDimensions = new SizeF(10F, 21F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(818, 498);
Controls.Add(btnCopy);
Controls.Add(activeSecreteTbox);
Controls.Add(codeTBox);
Controls.Add(label2);
Controls.Add(label1);
Font = new Font("Microsoft YaHei UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
Icon = (Icon)resources.GetObject("$this.Icon");
Margin = new Padding(4);
Name = "Main";
Text = "EI_Image_viewer Activation";
ResumeLayout(false);
PerformLayout();
}
#endregion
private Label label1;
private Label label2;
private TextBox codeTBox;
private TextBox activeSecreteTbox;
private Button btnCopy;
}
}

View File

@ -1,45 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace EI_Image_Viewer_Activation
{
public partial class Main : Form
{
public Main()
{
InitializeComponent();
}
private void btnCopy_Click(object sender, EventArgs e)
{
Clipboard.SetText(activeSecreteTbox.Text);
MessageBox.Show("拷贝成功!");
}
private void codeTBox_TextChanged(object sender, EventArgs e)
{
this.activeSecreteTbox.Text = Md5($"{this.codeTBox.Text.Trim()}_XINGCANG");
}
public static string Md5(string target)
{
using (MD5 md5 = MD5.Create())
{ // MD5非线程安全
byte[] bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(target));
StringBuilder sb = new StringBuilder(32);
for (int i = 0; i < bytes.Length; ++i)
sb.Append(bytes[i].ToString("x2"));
return sb.ToString();
}
}
}
}

View File

@ -1,348 +0,0 @@
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAABMLAAATCwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVaoDdW+EYnVvhGJVVaoDAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1bYU/dW6Dz3Ru
g/J0boPydW6Dz3VthT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZt
fxx0b4SidG6E/XRvhKJ0an8YcnJ/FHVug5F1b4P8dG+Es3NsgyEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAf2Z/CnVvg4B1boP2dW+EynRvhjkAAAAAAAAAAAAAAAAAAAAAdXCEMnRvhMN0boT5dW6DkXV1
iQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
6vvx5ur98ufqovPn5xYAAAAAAAAAAH9mfwp1b4R3dG+E83Rug8t2bYM6AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AXVvhFV1b4TgdW6D5HRv
hF4AAP8BAAAAAAAAAADy5uwp8ubsKQAAAAAAAAAAAAAAAHNwhE10boPfdG+E5XVuhGZ/f38CAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAf2Z/CnVvg4B1boP2dW+EynRvhjkAAAAAAAAAAAAAAAAAAAAAdXCEMnRug8J0boT5dW6DkXV1
iQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdm1/HHRvhKJ0boT9dG+EonRqfxhycn8UdW6DkXVv
g/x0b4Szc2yDIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdW2FP3Vu
g890boPydG6D8nVug891bYU/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABVVaoDdW+EYnVvhGJVVaoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA/////////////////////////////////////////////////////////////////////D//
///////4H////////+AH////////g8H///////4GcH///////BgYP//////wYAYP/////8HBg4P/////
gwfgwf////4MH/gwf///+DB//gwf///g4P//Bwf//8GD///Bg///hg4AAHBh//+MHgAAeBH//4h+AAB+
Ef//if5//n+R//+J/n/+f5H//4n+fn5/kf//if5+fn+R//+J/n5+f5H//4n+fn5/kf//if58Pn+R//+J
/ngef5H//4n+eB5/kf//if55nn+R//+J/ngef5H//4n+fD5/kf//if5//n+R//+J/n/+f5H//4n+f/5/
kf//if4AAH+R//+J/gAAf5H//4n/z/P/kf//if/P8/+R//+J/8/z/5H//4h/z/P+Ef//jB/H4/gR//+G
D8PD8GH//8GD4AfBg///4ODwDwcH///4MH5+DB////4MH/gwf////4MH4MH/////wcGDg//////wYAYP
//////wYGD///////gZwf///////g8H////////gB/////////gf/////////D//////////////////
//////////////////////////////////////////////////8=
</value>
</data>
</root>

View File

@ -1,17 +0,0 @@
namespace EI_Image_Viewer_Activation
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
Application.Run(new Main());
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Binary file not shown.