ITC81DB_V8/ITC81DB/Controls/CenterEquipment/ControlCenterEquipUpdate.cs

449 lines
21 KiB
C#
Raw Normal View History

2023-07-11 01:56:01 +00:00
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.IO;
using System.Text;
using System.Windows.Forms;
using SmartX;
using ITC81DB.Forms;
using ITC81DB.DialogForms;
using ITC81DB_ImageDll;
namespace ITC81DB.Controls
{
public partial class ControlCenterEquipUpdate : UserControl
{
#region Field
private FormMenu m_ParentForm;
private DataStore.Step3 UpdateStep;
private int Check;
private string USBPath = "";
private string UpdateFilePath = "";
private string OldFilePath = "";
private string RemoveFolderPath = "";
private List<string> DllName = new List<string>();
private List<long> LongOldDllFileLastWriteTime = new List<long>();
private List<long> LongNewDllFileLastWriteTime = new List<long>();
#endregion
#region Constructor
public ControlCenterEquipUpdate(FormMenu parent)
{
InitializeComponent();
this.ParentForm = parent;
this.InitializeDesign();
this.DefaultSetting();
}
#endregion
#region Property
public FormMenu ParentForm
{
get { return this.m_ParentForm; }
private set { this.m_ParentForm = value; }
}
#endregion
#region Method
public void InitializeDesign()
{
Class1 images = new Class1();
if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.English)
{
this.buttonUpdate.Text = "Update";
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
{
this.buttonUpdate.Text = "更新";
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Czech)
{
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Russian)
{
this.buttonUpdate.Text = "Обновить";
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
{
this.buttonUpdate.Text = "Aktualisierung";
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Spanish)
{
this.buttonUpdate.Text = "Actualizar";
}
else
{
this.buttonUpdate.Text = "Update";
}
}
private void DefaultSetting()
{
this.UpdateStep = DataStore.Step3.Step1;
this.UpdateLabelStatus(this.UpdateStep, this.ParentForm.ParentForm.SystemConfig1.Language);
this.labelDisplayVer.Text = FormMain.DisplayVersion;
}
private DataStore.UpdateCheck CheckError()
{
DataStore.UpdateCheck ret = DataStore.UpdateCheck.Fail;
FileInfo[] newFiles;
if (Directory.Exists("Hard Disk\\") == true)
this.USBPath = "Hard Disk\\";
else if (Directory.Exists("하드 디스크\\") == true)
this.USBPath = "하드 디스크\\";
else
this.USBPath = "하드 디스크\\";
this.UpdateFilePath = this.USBPath + "UpdateFiles\\";
DirectoryInfo info = new DirectoryInfo(this.USBPath);
DirectoryInfo dirFolderUpdateFiles = new DirectoryInfo(this.UpdateFilePath);
// USB 장착 유무 확인
if (info.Exists == true)
{
// USB에 UpdateFiles 유무 확인
if (dirFolderUpdateFiles.Exists == true)
{
newFiles = dirFolderUpdateFiles.GetFiles();
if (newFiles.Length == 0)
{
ret = DataStore.UpdateCheck.NotFile;
}
else
{
ret = DataStore.UpdateCheck.Success;
}
}
else
{
ret = DataStore.UpdateCheck.NotUpdateFolder;
}
}
else
{
ret = DataStore.UpdateCheck.NotUsbMomery;
}
return ret;
}
#region V3 이후 LCD 프로그램 업데이트 시 DB파일 자동 Conversion 기능 추가
//private void ProgramUpdate()
//{
// // SD Card\\PreVersionBackup 폴더 생성
// DirectoryInfo dirPreVersionFolder = new DirectoryInfo(this.ParentForm.ParentForm.PathPreVersionFolder);
// if (dirPreVersionFolder.Exists == true)
// // PreVersion 폴더 -> Remove 폴더
// Helper.MoveToRemoveFolder(this.ParentForm.ParentForm.PathPreVersionFolder);
// else
// dirPreVersionFolder.Create();
// this.progressBarUpdate.Value += 20;
// // 현재 시스템 폴더 1 -> PreVersionBackup 폴더
// Helper.MoveToFolder(this.ParentForm.ParentForm.PathSDCardSystemFile1Folder, this.ParentForm.ParentForm.PathPreVersionSystemFile1Folder);
// this.progressBarUpdate.Value += 20;
// // 현재 시스템 폴더 2 -> PreVersionBackup 폴더
// Helper.MoveToFolder(this.ParentForm.ParentForm.PathSDCardSystemFile2Folder, this.ParentForm.ParentForm.PathPreVersionSystemFile2Folder);
// this.progressBarUpdate.Value += 20;
// // 현재 Run 폴더 -> PreVersionBackup 폴더
// Helper.MoveToFolder(this.ParentForm.ParentForm.PathLaunchRunFolder, this.ParentForm.ParentForm.PathPreVersionRunFolder);
// this.progressBarUpdate.Value += 20;
// // USB - UpdateFiles 폴더 -> 현재 Run 폴더
// this.UpdateFilePath = this.USBPath + "UpdateFiles\\";
// Helper.CopyToFolder(this.UpdateFilePath, this.ParentForm.ParentForm.PathLaunchRunFolder);
// this.progressBarUpdate.Value += 100;
// this.ParentForm.Enabled = false;
// this.UpdateStep = DataStore.Step3.Step3;
// this.UpdateLabelStatus(this.UpdateStep, this.ParentForm.ParentForm.SystemConfig1.Language);
//}
#endregion
private void ProgramUpdate()
{
FileInfo[] newFiles;
DirectoryInfo directoryFolderUpdateFiles = new DirectoryInfo(this.UpdateFilePath);
if (directoryFolderUpdateFiles.Exists == false)
directoryFolderUpdateFiles.Create();
this.Check = 0;
this.UpdateFilePath = this.USBPath + "UpdateFiles\\";
this.OldFilePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\";
if (this.OldFilePath.StartsWith("\\F") == true)
this.RemoveFolderPath = "Flash Disk\\RemoveFile\\";
else
this.RemoveFolderPath = "SD Card\\RemoveFile\\";
newFiles = directoryFolderUpdateFiles.GetFiles();
this.progressBarUpdate.Value += 20;
this.TreatmentRemoveOldFile();
this.progressBarUpdate.Value += 20;
this.TreatmentCopyNewFile(newFiles);
this.progressBarUpdate.Value += 100;
this.ParentForm.Enabled = false;
this.UpdateStep = DataStore.Step3.Step3;
this.UpdateLabelStatus(this.UpdateStep, this.ParentForm.ParentForm.SystemConfig1.Language);
}
private void TreatmentRemoveOldFile()
{
bool removeFolderCheck = false;
FileInfo[] oldFiles;
FileInfo[] removeFiles;
DirectoryInfo directoryFolderRun = new DirectoryInfo(this.OldFilePath);
DirectoryInfo directoryFolderRemove = new DirectoryInfo(this.RemoveFolderPath);
removeFolderCheck = directoryFolderRemove.Exists;
oldFiles = directoryFolderRun.GetFiles();
if (removeFolderCheck == false)
directoryFolderRemove.Create();
//else
//{
// removeFiles = directoryFolderRemove.GetFiles();
// foreach (FileInfo file in removeFiles)
// file.Delete();
//}
foreach (FileInfo subFile in oldFiles)
subFile.MoveTo(RemoveFolderPath + DateTime.Now.ToString("yyyyMMddHHmmss") + subFile.Name.ToString());
this.progressBarUpdate.Value += 20;
}
private void TreatmentCopyNewFile(FileInfo[] newFile)
{
// 새 파일 복사
foreach (FileInfo subFile in newFile)
subFile.CopyTo(this.OldFilePath + subFile.Name.ToString());
this.progressBarUpdate.Value += 20;
}
private void UpdateLabelStatus(DataStore.Step3 step, DataStore.LanguageID language)
{
switch (step)
{
case DataStore.Step3.Step1:
#region Step1
switch (language)
{
case DataStore.LanguageID.Korean:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "USB를 본체에 삽입 하십시오";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "삽입 후 하단 'Update'버튼을 눌러주십시오";
break;
case DataStore.LanguageID.English:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "Please insert usb into the device";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "Press the bottom button after inserting";
break;
case DataStore.LanguageID.Chinese:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "请点击下端的按钮更新按钮";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "";
break;
case DataStore.LanguageID.German:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "USB nicht vom Gerät trennen";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Drücken Sie nach dem USB-Anschluss die untere Taste";
break;
case DataStore.LanguageID.Russian:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Пожалуйста, вставьте USB в устройство";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Нажмите нижнюю кнопку после вставки";
break;
case DataStore.LanguageID.Spanish:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Por favor, inserte USB en el dispositivo";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Presione el botón inferior después de insertar";
break;
default:
break;
}
#endregion
break;
case DataStore.Step3.Step2:
#region Step2
switch (language)
{
case DataStore.LanguageID.Korean:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "업데이트 중...";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "USB를 본체에서 분리하지 마십시오";
break;
case DataStore.LanguageID.English:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "Updating...";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "Do not remove the USB from the device";
break;
case DataStore.LanguageID.Chinese:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "更新中...";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "请勿断开USB";
break;
case DataStore.LanguageID.German:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Aktualisierung….";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "USB nicht vom Gerät trennen";
break;
case DataStore.LanguageID.Russian:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Обновление...";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Не отключайте USB";
break;
case DataStore.LanguageID.Spanish:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Actualizando....";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "No desconecte el USB del cuerpo.";
break;
default:
break;
}
#endregion
break;
case DataStore.Step3.Step3:
#region Step3
this.labelMessage2.ForeColor = Color.Red;
switch (language)
{
case DataStore.LanguageID.Korean:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "프로그램 업데이트 완료";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "전원을 끄고 다시 켜주세요";
break;
case DataStore.LanguageID.English:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "Program update complete";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "Reset the system";
break;
case DataStore.LanguageID.Chinese:
this.labelMessage1.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage1.Text = "系统更新完成";
this.labelMessage2.Font = new Font("새굴림", 17, FontStyle.Regular);
this.labelMessage2.Text = "关掉电源,然后在打开电源";
break;
case DataStore.LanguageID.German:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Programmaktualisierung abgeschlossen";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Mit dem Hauptschalter aus- und einschalten";
break;
case DataStore.LanguageID.Russian:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Обновление программы завершено";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Выключите питание и затем включите питание";
break;
case DataStore.LanguageID.Spanish:
this.labelMessage1.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage1.Text = "Actualización del programa completa";
this.labelMessage2.Font = new Font("새굴림", 12, FontStyle.Regular);
this.labelMessage2.Text = "Apague la alimentación y luego encienda la alimentación.";
break;
default:
break;
}
#endregion
break;
default:
break;
}
this.Refresh();
}
private void ProgramUpdateCheck(DialogResult result)
{
DataStore.UpdateCheck check = DataStore.UpdateCheck.Fail;
if (result == DialogResult.Yes)
{
check = this.CheckError();
if (check == DataStore.UpdateCheck.Success)
{
this.buttonUpdate.Enabled = false;
this.UpdateStep = DataStore.Step3.Step2;
this.UpdateLabelStatus(this.UpdateStep, this.ParentForm.ParentForm.SystemConfig1.Language);
this.ProgramUpdate();
}
else if (check == DataStore.UpdateCheck.NotUsbMomery)
{
DialogFormMessage message = new DialogFormMessage(5, this.ParentForm.ParentForm.SystemConfig1.Language);
message.ShowDialog();
}
else if (check == DataStore.UpdateCheck.NotUpdateFolder)
{
DialogFormMessage message = new DialogFormMessage(9, this.ParentForm.ParentForm.SystemConfig1.Language);
message.ShowDialog();
}
else if (check == DataStore.UpdateCheck.NotFile)
{
DialogFormMessage message = new DialogFormMessage(7, this.ParentForm.ParentForm.SystemConfig1.Language);
message.ShowDialog();
}
}
}
public void DisplayRefresh(SystemStatus status)
{
this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplay = DataStore.DisplayStore.EquipUpdate;
this.ParentForm.ParentForm.SetDisplayMode(DataStore.DisplayMode.Menu);
this.ParentForm.DisplayTitleRoot(this.ParentForm.ParentForm.CurrentSystemStatus);
this.DefaultSetting();
}
#endregion
#region Event Handler
private void buttonUpdate_Click(object sender, EventArgs e)
{
DialogFormYesNo myDlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig1.Language, 3);
DialogResult dr = myDlg.ShowDialog();
myDlg.Close();
this.Refresh();
this.ProgramUpdateCheck(dr);
}
#endregion
}
}