Эх сурвалжийг харах

change culture text display source
fix sajet2 report error

Robert 3 жил өмнө
parent
commit
78ae11026e
29 өөрчлөгдсөн 1801 нэмэгдсэн , 1050 устгасан
  1. 3 2
      AwInitilizer/App.xaml.cs
  2. 0 107
      AwInitilizer/Cultures/CulturesHelper.cs
  3. 0 78
      AwInitilizer/Cultures/StringResource.en-US.xaml
  4. 0 78
      AwInitilizer/Cultures/StringResource.xaml
  5. 0 79
      AwInitilizer/Cultures/StringResource.zh-CHS.xaml
  6. 0 78
      AwInitilizer/Cultures/StringResource.zh-TW.xaml
  7. 1 1
      AwInitilizer/HintDialog.xaml.cs
  8. 21 34
      AwInitilizer/Initilizer.csproj
  9. 15 14
      AwInitilizer/MainWindow.xaml
  10. 53 42
      AwInitilizer/MainWindow.xaml.cs
  11. 8 8
      AwInitilizer/Procedure/ButtonStatusCheckPorcedure.cs
  12. 8 5
      AwInitilizer/Procedure/FirmwareBundleUploadProcedure.cs
  13. 164 0
      AwInitilizer/Procedure/FirmwareFtpUploadProcedure.cs
  14. 0 1
      AwInitilizer/Procedure/FirmwareUploadProcedure.cs
  15. 0 56
      AwInitilizer/Properties/AssemblyInfo.cs
  16. 0 63
      AwInitilizer/Properties/Resources.Designer.cs
  17. 0 117
      AwInitilizer/Properties/Resources.resx
  18. 603 0
      AwInitilizer/Resx/AppResources.Designer.cs
  19. 300 0
      AwInitilizer/Resx/AppResources.resx
  20. 300 0
      AwInitilizer/Resx/AppResources.zh-CHS.resx
  21. 5 4
      AwInitilizer/SigninDialog.xaml
  22. 5 5
      AwInitilizer/SigninDialog.xaml.cs
  23. 2 1
      AwInitilizer/packages.config
  24. 286 40
      AwInitlizerInstaller__Shinewave/AwInitlizerInstaller.vdproj
  25. 1 1
      GitVersion.yml
  26. 3 3
      Initilizer/AssemblyInfo.cs
  27. 17 228
      InitlizerInstaller_Sajet2/InitlizerInstaller_Sajet2.vdproj
  28. 4 4
      MesAdaptor/Properties/AssemblyInfo.cs
  29. 2 1
      MesAdaptor/SajectConnectSajet2.cs

+ 3 - 2
AwInitilizer/App.xaml.cs

@@ -18,6 +18,7 @@ namespace AwInitilizer
     {
         public App() : base()
         {
+            SetUiLanguage();
             DispatcherUnhandledException += App_DispatcherUnhandledException;
         }
 
@@ -59,11 +60,11 @@ namespace AwInitilizer
 
             if (langSetting.ToLower() == "zh-chs")
             {
-                Cultures.CulturesHelper.Instance.ChangeCulture(System.Globalization.CultureInfo.GetCultureInfo("zh-CHS"));
+                Resx.AppResources.Culture = System.Globalization.CultureInfo.GetCultureInfo("zh-CHS");
             }
             else
             {
-                Cultures.CulturesHelper.Instance.ChangeCulture(System.Globalization.CultureInfo.GetCultureInfo("en-US"));
+                Resx.AppResources.Culture = System.Globalization.CultureInfo.GetCultureInfo("en-US");
             }
         }
 

+ 0 - 107
AwInitilizer/Cultures/CulturesHelper.cs

@@ -1,107 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-
-namespace AwInitilizer.Cultures
-{
-    public enum Languages
-    {
-        English, TraditionalChinese, SimplfyChinese
-    }
-
-    public class CulturesHelper
-    {
-        private static Lazy<CulturesHelper> _Instance = new Lazy<CulturesHelper>(() => new CulturesHelper());
-        public static CulturesHelper Instance
-        {
-            get
-            {
-                return _Instance.Value;
-            }
-        }
-
-        private static string resourcePrefix = "StringResource";
-        private static string culturesFolder = "Cultures";
-        private static List<CultureInfo> _supportedCultures = new List<CultureInfo>();
-        public static List<CultureInfo> SupportedCultures
-        {
-            get
-            {
-                return _supportedCultures;
-            }
-        }
-        private static ResourceDictionary resourceDictionary;
-        public static ResourceDictionary ResourceDictionary
-        {
-            get
-            {
-                return resourceDictionary;
-            }
-        }
-        public Languages CurrentCulture { get; private set; }
-        public event EventHandler<Languages> OnCultureChange;
-
-        private CulturesHelper()
-        {
-
-            CultureInfo cultureInfo = new CultureInfo("");
-            List<string> files = Directory.GetFiles(string.Format("{0}\\{1}", Directory.GetCurrentDirectory(), culturesFolder))
-            .Where(s => s.Contains(resourcePrefix) && s.ToLower().EndsWith("xaml")).ToList();
-            foreach (string file in files)
-            {
-                try
-                {
-                    string cultureName = file.Substring(file.IndexOf(".") + 1).Replace(".xaml", "");
-                    cultureInfo = CultureInfo.GetCultureInfo(cultureName);
-                    if (cultureInfo != null)
-                    {
-                        _supportedCultures.Add(cultureInfo);
-                    }
-                }
-                catch (ArgumentException)
-                {
-                }
-            }
-
-        }
-        public void ChangeCulture(CultureInfo culture)
-        {
-            if (_supportedCultures.Contains(culture))
-            {
-                string loadedFileName = string.Format("{0}\\{1}\\{2}.{3}.xaml",
-                    Directory.GetCurrentDirectory(),
-                    culturesFolder,
-                    resourcePrefix,
-                    culture.Name);
-                //FileStream fileStream = new FileStream(loadedFileName, FileMode.Open);
-                //resourceDictionary = XamlReader.Load(fileStream) as ResourceDictionary;
-                resourceDictionary = new ResourceDictionary() { Source = new Uri(loadedFileName) };
-
-                Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
-                //MainWindow.window.Resources.MergedDictionaries.Add(resourceDictionary);
-                //Properties.Settings.Default.DefaultCulture = culture;
-                //Properties.Settings.Default.Save();
-                if (culture.Name == "en-US")
-                {
-                    CurrentCulture = Languages.English;
-                }
-                else if (culture.Name == "zh-TW")
-                {
-                    CurrentCulture = Languages.TraditionalChinese;
-                }
-                else if (culture.Name == "zh-CHS")
-                {
-                    CurrentCulture = Languages.SimplfyChinese;
-                }
-
-                OnCultureChange?.Invoke(this, CurrentCulture);
-            }
-
-        }
-    }
-}

+ 0 - 78
AwInitilizer/Cultures/StringResource.en-US.xaml

@@ -1,78 +0,0 @@
-<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    xmlns:local="clr-namespace:AwInitilizer.Cultures"
-                    xmlns:sys="clr-namespace:System;assembly=mscorlib">
-    
-    <sys:String x:Key="Confirm">OK</sys:String>
-    
-    <sys:String x:Key="SigninDialogTitle">Sigin in</sys:String>
-    <sys:String x:Key="SigninDialogEnterIDHint">Enter ID</sys:String>
-    <sys:String x:Key="SigninDialogEnterWOHint">Enter WorkOrder</sys:String>
-    <sys:String x:Key="SigninDialogEnterWOError">WorkOrder Error</sys:String>
-    <sys:String x:Key="SigninDialogEnterIDError">ID Error</sys:String>
-    <sys:String x:Key="SigninDialogNoResponseError">MES no response</sys:String>
-
-    <sys:String x:Key="Account">Account</sys:String>
-    <sys:String x:Key="logout">logout</sys:String>
-    <sys:String x:Key="UserID">User Id</sys:String>
-    <sys:String x:Key="WorkOrder">Work Order</sys:String>
-
-    <sys:String x:Key="BarcodeSetting">Barcode Setting</sys:String>
-    <sys:String x:Key="ModelName">Model Name</sys:String>
-    <sys:String x:Key="SerialNumber">Serial Number</sys:String>
-    <sys:String x:Key="SimStatus">4G Sim Card Inserted</sys:String>
-    <sys:String x:Key="ICCID">Sim ICCID</sys:String>
-    <sys:String x:Key="IMSI">Sim IMSI</sys:String>
-
-    <sys:String x:Key="FirmwareVersion">Firmware version</sys:String>
-    <sys:String x:Key="FirmwareVersionHeaderName">Module</sys:String>
-    <sys:String x:Key="FirmwareVersionHeaderVersion">Version</sys:String>
-
-    <sys:String x:Key="StartProcedure">Start</sys:String>
-
-    <sys:String x:Key="StatusIdel">Idel</sys:String>
-    <sys:String x:Key="StatusUpdating">Updating</sys:String>
-    <sys:String x:Key="StatusSuccess">Success</sys:String>
-    <sys:String x:Key="StatusFail">Fail</sys:String>
-
-    <sys:String x:Key="StatusBarUpdating">Processing {0}</sys:String>
-    <sys:String x:Key="StatusBarFailed">Process {0} Failed</sys:String>
-
-    <sys:String x:Key="SnWoMisMatch">Serial Number or WorkOrder Error</sys:String>
-
-    <sys:String x:Key="ModelNameEmptyAlert">Model Name is Required</sys:String>
-    <sys:String x:Key="ModelNameMismatchAlert">Model Name setting is Mismathed</sys:String>
-    <sys:String x:Key="SerialNumberEmptyAlert">Serial Number is Required</sys:String>
-    <sys:String x:Key="ModelNameErrorAlert">Model Name format Error</sys:String>
-    <sys:String x:Key="FourGenVersionEmptyAlert">4G Module Version is Required</sys:String>
-    <sys:String x:Key="IccidEmptyAlert">ICCID is Required when sim installed</sys:String>
-    <sys:String x:Key="ImsiEmptyAlert">IMSI is Required when sim installed</sys:String>
-    <sys:String x:Key="FirmwareListNullAlert">FirmwareUpdateModels should be decalred</sys:String>
-    <sys:String x:Key="FirmwareNameEmptyAlert">Firmware module name is Required</sys:String>
-    <sys:String x:Key="FirmwareVersionEmptyAlert">Firmware version is Required</sys:String>
-    <sys:String x:Key="FirmwareFileEmptyAlert">Firmware file is Required</sys:String>
-
-    <sys:String x:Key="LoadConfigRootFolderNotfoundAlert">Firmware root path ERROR</sys:String>
-    <sys:String x:Key="LoadConfigFolderNotfoundAlert">Firmware root path not exist</sys:String>
-    <sys:String x:Key="LoadConfigModelFolderNotfoundAlert">Model firmware root path not exist</sys:String>
-    <sys:String x:Key="LoadConfigModelInitNotfoundAlert">Model firmware setting not exist</sys:String>
-    <sys:String x:Key="LoadConfigModelInitFormatErrorAlert">Setting file ERROR</sys:String>
-
-    <sys:String x:Key="InitModelNameEmptyAlert">ModelName is requred</sys:String>
-    <sys:String x:Key="InitModelNameErrorAlert">ModelName format Error</sys:String>
-    <sys:String x:Key="InitIccidEmptyAlert">ICCID should not empty while IsSimInsert is set</sys:String>
-    <sys:String x:Key="InitImsiEmptyAlert">IMSI should not empty while IsSimInsert is set</sys:String>
-    <sys:String x:Key="InitFirmwareNameEmptyAlert">Firmware module name should not empty</sys:String>
-    <sys:String x:Key="InitFirmwareVersionEmptyAlert">Version should not empty while {0} firmware is set</sys:String>
-    <sys:String x:Key="InitFirmwareFileEmptyAlert">File name should not empty while {0} version is set</sys:String>
-    <sys:String x:Key="InitFirmwareFileMissingAlert">{0} Firemware file is missing</sys:String>
-    <sys:String x:Key="InitFirmwareFileHeaderMismatchAlert">{0} Firemware and ModelName is Mismatched</sys:String>
-    <sys:String x:Key="InitFirmwareFileHeaderFormatAlert">{0} Firemware header ERROR</sys:String>
-
-    <sys:String x:Key="BtnPressHintTitle">Starting Button test</sys:String>
-    <sys:String x:Key="BtnPressUnpressHint">Please make sure All button is Unpressed&#x0a;Press Ok while complete</sys:String>
-    <sys:String x:Key="BtnPressPressHint">PRESS {0} 2 secnds</sys:String>
-    <sys:String x:Key="BtnPressGreenBtn">GREEN Button</sys:String>
-    <sys:String x:Key="BtnPressBlueBtn">BLUE Button</sys:String>
-    <sys:String x:Key="BtnPressEmergencyBtn">EMERGENCY Button</sys:String>
-</ResourceDictionary>

+ 0 - 78
AwInitilizer/Cultures/StringResource.xaml

@@ -1,78 +0,0 @@
-<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    xmlns:local="clr-namespace:AwInitilizer.Cultures"
-                    xmlns:sys="clr-namespace:System;assembly=mscorlib">
-    
-    <sys:String x:Key="Confirm">OK</sys:String>
-    
-    <sys:String x:Key="SigninDialogTitle">Sigin in</sys:String>
-    <sys:String x:Key="SigninDialogEnterIDHint">Enter ID</sys:String>
-    <sys:String x:Key="SigninDialogEnterWOHint">Enter WorkOrder</sys:String>
-    <sys:String x:Key="SigninDialogEnterWOError">WorkOrder Error</sys:String>
-    <sys:String x:Key="SigninDialogEnterIDError">ID Error</sys:String>
-    <sys:String x:Key="SigninDialogNoResponseError">MES no response</sys:String>
-
-    <sys:String x:Key="Account">Account</sys:String>
-    <sys:String x:Key="logout">logout</sys:String>
-    <sys:String x:Key="UserID">User Id</sys:String>
-    <sys:String x:Key="WorkOrder">Work Order</sys:String>
-
-    <sys:String x:Key="BarcodeSetting">Barcode Setting</sys:String>
-    <sys:String x:Key="ModelName">Model Name</sys:String>
-    <sys:String x:Key="SerialNumber">Serial Number</sys:String>
-    <sys:String x:Key="SimStatus">4G Sim Card Inserted</sys:String>
-    <sys:String x:Key="ICCID">Sim ICCID</sys:String>
-    <sys:String x:Key="IMSI">Sim IMSI</sys:String>
-
-    <sys:String x:Key="FirmwareVersion">Firmware version</sys:String>
-    <sys:String x:Key="FirmwareVersionHeaderName">Module</sys:String>
-    <sys:String x:Key="FirmwareVersionHeaderVersion">Version</sys:String>
-
-    <sys:String x:Key="StartProcedure">Start</sys:String>
-
-    <sys:String x:Key="StatusIdel">Idel</sys:String>
-    <sys:String x:Key="StatusUpdating">Updating</sys:String>
-    <sys:String x:Key="StatusSuccess">Success</sys:String>
-    <sys:String x:Key="StatusFail">Fail</sys:String>
-
-    <sys:String x:Key="StatusBarUpdating">Processing {0}</sys:String>
-    <sys:String x:Key="StatusBarFailed">Process {0} Failed</sys:String>
-
-    <sys:String x:Key="SnWoMisMatch">Serial Number or WorkOrder Error</sys:String>
-
-    <sys:String x:Key="ModelNameEmptyAlert">Model Name is Required</sys:String>
-    <sys:String x:Key="ModelNameMismatchAlert">Model Name setting is Mismathed</sys:String>
-    <sys:String x:Key="SerialNumberEmptyAlert">Serial Number is Required</sys:String>
-    <sys:String x:Key="ModelNameErrorAlert">Model Name format Error</sys:String>
-    <sys:String x:Key="FourGenVersionEmptyAlert">4G Module Version is Required</sys:String>
-    <sys:String x:Key="IccidEmptyAlert">ICCID is Required when sim installed</sys:String>
-    <sys:String x:Key="ImsiEmptyAlert">IMSI is Required when sim installed</sys:String>
-    <sys:String x:Key="FirmwareListNullAlert">FirmwareUpdateModels should be decalred</sys:String>
-    <sys:String x:Key="FirmwareNameEmptyAlert">Firmware module name is Required</sys:String>
-    <sys:String x:Key="FirmwareVersionEmptyAlert">Firmware version is Required</sys:String>
-    <sys:String x:Key="FirmwareFileEmptyAlert">Firmware file is Required</sys:String>
-
-    <sys:String x:Key="LoadConfigRootFolderNotfoundAlert">Firmware root path ERROR</sys:String>
-    <sys:String x:Key="LoadConfigFolderNotfoundAlert">Firmware root path not exist</sys:String>
-    <sys:String x:Key="LoadConfigModelFolderNotfoundAlert">Model firmware root path not exist</sys:String>
-    <sys:String x:Key="LoadConfigModelInitNotfoundAlert">Model firmware setting not exist</sys:String>
-    <sys:String x:Key="LoadConfigModelInitFormatErrorAlert">Setting file ERROR</sys:String>
-
-    <sys:String x:Key="InitModelNameEmptyAlert">ModelName is requred</sys:String>
-    <sys:String x:Key="InitModelNameErrorAlert">ModelName format Error</sys:String>
-    <sys:String x:Key="InitIccidEmptyAlert">ICCID should not empty while IsSimInsert is set</sys:String>
-    <sys:String x:Key="InitImsiEmptyAlert">IMSI should not empty while IsSimInsert is set</sys:String>
-    <sys:String x:Key="InitFirmwareNameEmptyAlert">Firmware module name should not empty</sys:String>
-    <sys:String x:Key="InitFirmwareVersionEmptyAlert">Version should not empty while {0} firmware is set</sys:String>
-    <sys:String x:Key="InitFirmwareFileEmptyAlert">File name should not empty while {0} version is set</sys:String>
-    <sys:String x:Key="InitFirmwareFileMissingAlert">{0} Firemware file is missing</sys:String>
-    <sys:String x:Key="InitFirmwareFileHeaderMismatchAlert">{0} Firemware and ModelName is Mismatched</sys:String>
-    <sys:String x:Key="InitFirmwareFileHeaderFormatAlert">{0} Firemware header ERROR</sys:String>
-
-    <sys:String x:Key="BtnPressHintTitle">Starting Button test</sys:String>
-    <sys:String x:Key="BtnPressUnpressHint">Please make sure All button is Unpressed&#x0a;Press Ok while complete</sys:String>
-    <sys:String x:Key="BtnPressPressHint">PRESS {0} 2 secnds</sys:String>
-    <sys:String x:Key="BtnPressGreenBtn">GREEN Button</sys:String>
-    <sys:String x:Key="BtnPressBlueBtn">BLUE Button</sys:String>
-    <sys:String x:Key="BtnPressEmergencyBtn">EMERGENCY Button</sys:String>
-</ResourceDictionary>

+ 0 - 79
AwInitilizer/Cultures/StringResource.zh-CHS.xaml

@@ -1,79 +0,0 @@
-<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    xmlns:local="clr-namespace:AwInitilizer.Cultures"
-                    xmlns:sys="clr-namespace:System;assembly=mscorlib">
-
-    <sys:String x:Key="Confirm">确认</sys:String>
-
-    <sys:String x:Key="SigninDialogTitle">登入</sys:String>
-    <sys:String x:Key="SigninDialogEnterIDHint">输入员工证号</sys:String>
-    <sys:String x:Key="SigninDialogEnterWOHint">输入工单号</sys:String>
-    <sys:String x:Key="SigninDialogEnterWOError">工单号错误</sys:String>
-    <sys:String x:Key="SigninDialogEnterIDError">员工证号错误</sys:String>
-    <sys:String x:Key="SigninDialogNoResponseError">MES没有反应</sys:String>
-
-    <sys:String x:Key="Account">账户</sys:String>
-    <sys:String x:Key="logout">注销</sys:String>
-    <sys:String x:Key="UserID">员工证号</sys:String>
-    <sys:String x:Key="WorkOrder">工单号</sys:String>
-
-    <sys:String x:Key="BarcodeSetting">Barcode信息</sys:String>
-    <sys:String x:Key="ModelName">Model Name</sys:String>
-    <sys:String x:Key="SerialNumber">Serial Number</sys:String>
-    <sys:String x:Key="SimStatus">SIM卡是否插入</sys:String>
-    <sys:String x:Key="ICCID">Sim卡ICCID</sys:String>
-    <sys:String x:Key="IMSI">Sim卡IMSI</sys:String>
-
-    <sys:String x:Key="FirmwareVersion">韧体版本</sys:String>
-    <sys:String x:Key="FirmwareVersionHeaderName">模块</sys:String>
-    <sys:String x:Key="FirmwareVersionHeaderVersion">版本</sys:String>
-
-    <sys:String x:Key="StartProcedure">开始</sys:String>
-
-    <sys:String x:Key="StatusIdel">闲置</sys:String>
-    <sys:String x:Key="StatusUpdating">更新中</sys:String>
-    <sys:String x:Key="StatusSuccess">成功</sys:String>
-    <sys:String x:Key="StatusFail">失败</sys:String>
-
-    <sys:String x:Key="StatusBarUpdating">{0} 处理中</sys:String>
-    <sys:String x:Key="StatusBarFailed">{0} 失败</sys:String>
-
-    <sys:String x:Key="SnWoMisMatch">序号或工单号错误</sys:String>
-
-    <sys:String x:Key="ModelNameEmptyAlert">Model Name不能为空</sys:String>
-    <sys:String x:Key="ModelNameMismatchAlert">Model Name不相同</sys:String>
-    <sys:String x:Key="SerialNumberEmptyAlert">Serial Number不能为空</sys:String>
-    <sys:String x:Key="ModelNameErrorAlert">Model Name格式错误</sys:String>
-    <sys:String x:Key="FourGenVersionEmptyAlert">4G模块版本不能为空</sys:String>
-    <sys:String x:Key="IccidEmptyAlert">当SIM卡插入则ICCID不能为空</sys:String>
-    <sys:String x:Key="ImsiEmptyAlert">当SIM卡插入则IMSI不能为空</sys:String>
-    <sys:String x:Key="FirmwareListNullAlert">必须宣告更新韧体列表</sys:String>
-    <sys:String x:Key="FirmwareNameEmptyAlert">韧体模块名称不能为空</sys:String>
-    <sys:String x:Key="FirmwareVersionEmptyAlert">韧体模块版本不能为空</sys:String>
-    <sys:String x:Key="FirmwareFileEmptyAlert">韧体更新档不能为空</sys:String>
-
-    <sys:String x:Key="LoadConfigRootFolderNotfoundAlert">韧体主目录错误</sys:String>
-    <sys:String x:Key="LoadConfigFolderNotfoundAlert">韧体主目录不存在</sys:String>
-    <sys:String x:Key="LoadConfigModelFolderNotfoundAlert">模块韧体目录不存在</sys:String>
-    <sys:String x:Key="LoadConfigModelInitNotfoundAlert">模块韧体配置文件不存在</sys:String>
-    <sys:String x:Key="LoadConfigModelInitFormatErrorAlert">模块韧体配置文件格示错误</sys:String>
-
-    <sys:String x:Key="InitModelNameEmptyAlert">ModelName不能为空</sys:String>
-    <sys:String x:Key="InitModelNameErrorAlert">ModelName格式错误</sys:String>
-    <sys:String x:Key="InitIccidEmptyAlert">当SIM卡插入则ICCID不能为空</sys:String>
-    <sys:String x:Key="InitImsiEmptyAlert">当SIM卡插入则IMSI不能为空</sys:String>
-    <sys:String x:Key="InitFirmwareNameEmptyAlert">韧体模块名称不能为空</sys:String>
-    <sys:String x:Key="InitFirmwareVersionEmptyAlert">{0}的版本不能为空</sys:String>
-    <sys:String x:Key="InitFirmwareFileEmptyAlert">{0}的韧体文件名不能为空</sys:String>
-    <sys:String x:Key="InitFirmwareFileMissingAlert">找不到{0}的韧体更新档</sys:String>
-    <sys:String x:Key="InitFirmwareFileHeaderMismatchAlert">{0}的韧体与Model Name不相同</sys:String>
-    <sys:String x:Key="InitFirmwareFileHeaderFormatAlert">{0}的韧体标题错误</sys:String>
-
-    <sys:String x:Key="BtnPressHintTitle">按钮测试</sys:String>
-    <sys:String x:Key="BtnPressUnpressHint">请确认所有按钮皆没有被按下&#x0a;确认后按下下方确认</sys:String>
-    <sys:String x:Key="BtnPressPressHint">请按下{0}2秒后放开</sys:String>
-    <sys:String x:Key="BtnPressGreenBtn">绿色按钮</sys:String>
-    <sys:String x:Key="BtnPressBlueBtn">蓝色按钮</sys:String>
-    <sys:String x:Key="BtnPressEmergencyBtn">紧急按钮</sys:String>
-
-</ResourceDictionary>

+ 0 - 78
AwInitilizer/Cultures/StringResource.zh-TW.xaml

@@ -1,78 +0,0 @@
-<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    xmlns:local="clr-namespace:AwInitilizer.Cultures"
-                    xmlns:sys="clr-namespace:System;assembly=mscorlib">
-
-    <sys:String x:Key="Confirm">確認</sys:String>
-
-    <sys:String x:Key="SigninDialogTitle">登入</sys:String>
-    <sys:String x:Key="SigninDialogEnterIDHint">輸入員工證號</sys:String>
-    <sys:String x:Key="SigninDialogEnterWOHint">輸入工單號</sys:String>
-    <sys:String x:Key="SigninDialogEnterWOError">工單號錯誤</sys:String>
-    <sys:String x:Key="SigninDialogEnterIDError">員工證號錯誤</sys:String>
-    <sys:String x:Key="SigninDialogNoResponseError">MES沒有反應</sys:String>
-
-    <sys:String x:Key="Account">帳戶</sys:String>
-    <sys:String x:Key="logout">登出</sys:String>
-    <sys:String x:Key="UserID">員工證號</sys:String>
-    <sys:String x:Key="WorkOrder">工單號</sys:String>
-
-    <sys:String x:Key="BarcodeSetting">Barcode資訊</sys:String>
-    <sys:String x:Key="ModelName">Model Name</sys:String>
-    <sys:String x:Key="SerialNumber">Serial Number</sys:String>
-    <sys:String x:Key="SimStatus">SIM卡是否插入</sys:String>
-    <sys:String x:Key="ICCID">Sim卡ICCID</sys:String>
-    <sys:String x:Key="IMSI">Sim卡IMSI</sys:String>
-
-    <sys:String x:Key="FirmwareVersion">韌體版本</sys:String>
-    <sys:String x:Key="FirmwareVersionHeaderName">模組</sys:String>
-    <sys:String x:Key="FirmwareVersionHeaderVersion">版本</sys:String>
-
-    <sys:String x:Key="StartProcedure">開始</sys:String>
-
-    <sys:String x:Key="StatusIdel">閒置</sys:String>
-    <sys:String x:Key="StatusUpdating">更新中</sys:String>
-    <sys:String x:Key="StatusSuccess">成功</sys:String>
-    <sys:String x:Key="StatusFail">失敗</sys:String>
-
-    <sys:String x:Key="StatusBarUpdating">{0} 處理中</sys:String>
-    <sys:String x:Key="StatusBarFailed">{0} 失敗</sys:String>
-
-    <sys:String x:Key="SnWoMisMatch">序號或工單號錯誤</sys:String>
-
-    <sys:String x:Key="ModelNameEmptyAlert">Model Name不能為空</sys:String>
-    <sys:String x:Key="ModelNameMismatchAlert">Model Name不相同</sys:String>
-    <sys:String x:Key="SerialNumberEmptyAlert">Serial Number不能為空</sys:String>
-    <sys:String x:Key="ModelNameErrorAlert">Model Name格式錯誤</sys:String>
-    <sys:String x:Key="FourGenVersionEmptyAlert">4G模組版本不能為空</sys:String>
-    <sys:String x:Key="IccidEmptyAlert">當SIM卡插入則ICCID不能為空</sys:String>
-    <sys:String x:Key="ImsiEmptyAlert">當SIM卡插入則IMSI不能為空</sys:String>
-    <sys:String x:Key="FirmwareListNullAlert">必須宣告更新韌體列表</sys:String>
-    <sys:String x:Key="FirmwareNameEmptyAlert">韌體模組名稱不能為空</sys:String>
-    <sys:String x:Key="FirmwareVersionEmptyAlert">韌體模組版本不能為空</sys:String>
-    <sys:String x:Key="FirmwareFileEmptyAlert">韌體更新檔不能為空</sys:String>
-
-    <sys:String x:Key="LoadConfigRootFolderNotfoundAlert">韌體主目錄錯誤</sys:String>
-    <sys:String x:Key="LoadConfigFolderNotfoundAlert">韌體主目錄不存在</sys:String>
-    <sys:String x:Key="LoadConfigModelFolderNotfoundAlert">模組韌體目錄不存在</sys:String>
-    <sys:String x:Key="LoadConfigModelInitNotfoundAlert">模組韌體設定檔不存在</sys:String>
-    <sys:String x:Key="LoadConfigModelInitFormatErrorAlert">模組韌體設定檔格示錯誤</sys:String>
-
-    <sys:String x:Key="InitModelNameEmptyAlert">ModelName不能為空</sys:String>
-    <sys:String x:Key="InitModelNameErrorAlert">ModelName格式錯誤</sys:String>
-    <sys:String x:Key="InitIccidEmptyAlert">當SIM卡插入則ICCID不能為空</sys:String>
-    <sys:String x:Key="InitImsiEmptyAlert">當SIM卡插入則IMSI不能為空</sys:String>
-    <sys:String x:Key="InitFirmwareNameEmptyAlert">韌體模組名稱不能為空</sys:String>
-    <sys:String x:Key="InitFirmwareVersionEmptyAlert">{0}的版本不能為空</sys:String>
-    <sys:String x:Key="InitFirmwareFileEmptyAlert">{0}的韌體檔案名稱不能為空</sys:String>
-    <sys:String x:Key="InitFirmwareFileMissingAlert">找不到{0}的韌體更新檔</sys:String>
-    <sys:String x:Key="InitFirmwareFileHeaderMismatchAlert">{0}的韌體與Model Name不相同</sys:String>
-    <sys:String x:Key="InitFirmwareFileHeaderFormatAlert">{0}的韌體標題錯誤</sys:String>
-
-    <sys:String x:Key="BtnPressHintTitle">按鈕測試</sys:String>
-    <sys:String x:Key="BtnPressUnpressHint">請確認所有按鈕皆沒有被按下&#x0a;確認後按下下方確認</sys:String>
-    <sys:String x:Key="BtnPressPressHint">請按下{0}2秒後放開</sys:String>
-    <sys:String x:Key="BtnPressGreenBtn">綠色按鈕</sys:String>
-    <sys:String x:Key="BtnPressBlueBtn">藍色按鈕</sys:String>
-    <sys:String x:Key="BtnPressEmergencyBtn">緊急按鈕</sys:String>
-</ResourceDictionary>

+ 1 - 1
AwInitilizer/HintDialog.xaml.cs

@@ -21,7 +21,7 @@ namespace AwInitilizer
     {
         public static void ShowMessage(string msg)
         {
-            var confirmString = (string)Application.Current.FindResource("Confirm");
+            var confirmString = Resx.AppResources.Confirm;
             var dialog = new HintDialog() { Title = "",Message = msg,BtnText= confirmString };
             try
             {

+ 21 - 34
AwInitilizer/Initilizer.csproj

@@ -41,11 +41,14 @@
     <ApplicationManifest>app.manifest</ApplicationManifest>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="FluentFTP, Version=37.0.2.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL">
+      <HintPath>..\packages\FluentFTP.37.0.2\lib\net45\FluentFTP.dll</HintPath>
+    </Reference>
     <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
-    <Reference Include="PhihongEv.Lib, Version=1.0.1.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\packages\PhihongEv.Lib.1.0.1\lib\net40\PhihongEv.Lib.dll</HintPath>
+    <Reference Include="PhihongEv.Lib, Version=1.0.3.0, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\packages\PhihongEv.Lib.1.0.3\lib\net40\PhihongEv.Lib.dll</HintPath>
     </Reference>
     <Reference Include="RestSharp, Version=106.15.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75, processorArchitecture=MSIL">
       <HintPath>..\packages\RestSharp.106.15.0\lib\net452\RestSharp.dll</HintPath>
@@ -73,39 +76,24 @@
     </ApplicationDefinition>
     <Compile Include="Converter\MesErrorCodeMaper.cs" />
     <Compile Include="Converter\PressStatusConverter.cs" />
-    <Compile Include="Cultures\CulturesHelper.cs" />
     <Compile Include="KeyinListener.cs" />
     <Compile Include="Model\AppSettingConfig.cs" />
     <Compile Include="ProcedureLog\LogWriter.cs" />
+    <Compile Include="Procedure\FirmwareFtpUploadProcedure.cs" />
     <Compile Include="Procedure\FirmwareBundleUploadProcedure.cs" />
     <Compile Include="Procedure\FirmwareCheckVersionProcedure.cs" />
     <Compile Include="Procedure\FirmwareUploadProcedure.cs" />
     <Compile Include="Procedure\VersionLogProcedure.cs" />
     <Compile Include="Procedure\WifRssiCheckProcedure.cs" />
+    <Compile Include="Resx\AppResources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>AppResources.resx</DependentUpon>
+    </Compile>
     <Compile Include="SettingConfig.cs" />
     <Compile Include="SigninDialog.xaml.cs">
       <DependentUpon>SigninDialog.xaml</DependentUpon>
     </Compile>
-    <Content Include="Cultures\StringResource.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Cultures\StringResource.zh-TW.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Cultures\StringResource.zh-CHS.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Cultures\StringResource.en-US.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </Content>
     <Page Include="HintDialog.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
@@ -154,23 +142,16 @@
     <Compile Include="Procedure\ProcedureBase.cs" />
     <Compile Include="Model\UpdateData.cs" />
     <Compile Include="Procedure\RestarttoIdelProcedure.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
     <Compile Include="Properties\Settings.Designer.cs">
       <AutoGen>True</AutoGen>
       <DependentUpon>Settings.settings</DependentUpon>
       <DesignTimeSharedInput>True</DesignTimeSharedInput>
     </Compile>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    <EmbeddedResource Include="Resx\AppResources.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
     </EmbeddedResource>
+    <EmbeddedResource Include="Resx\AppResources.zh-CHS.resx" />
     <None Include="app.manifest" />
     <None Include="packages.config" />
     <None Include="Properties\Settings.settings">
@@ -197,4 +178,10 @@
   <PropertyGroup>
     <PreBuildEvent>GitVersion.exe $(SolutionDir) /updateassemblyinfo</PreBuildEvent>
   </PropertyGroup>
+  <PropertyGroup>
+    <ReactorLocation>"C:\Program Files (x86)\Eziriz\.NET Reactor\dotNET_Reactor.exe"</ReactorLocation>
+    <ReactorProject>"D:\RobertProject\.net Reactor\ap.nrproj"</ReactorProject>
+  </PropertyGroup>
+  <Target Name="AfterCompile">
+  </Target>
 </Project>

+ 15 - 14
AwInitilizer/MainWindow.xaml

@@ -5,6 +5,7 @@
     xmlns:input="clr-namespace:System.Windows.Input;assembly=PresentationCore"
     xmlns:local="clr-namespace:AwInitilizer"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:resx="clr-namespace:AwInitilizer.Resx"
     x:Name="uxManinWindow"
     Title="Initlizer"
     Width="1920"
@@ -27,7 +28,7 @@
                         <GroupBox.Header>
                             <Label
                                 FontSize="16"
-                                Content="{DynamicResource Account}"
+                                Content="{x:Static resx:AppResources.Account}"
                                 Foreground="White" />
                         </GroupBox.Header>
                         <StackPanel Orientation="Vertical">
@@ -35,7 +36,7 @@
                                 Width="100"
                                 Click="Logout_Click"
                                 IsEnabled="{Binding IsInputLock}">
-                                <Label Content="{DynamicResource logout}" />
+                                <Label Content="{x:Static resx:AppResources.Logout}" />
                             </Button>
                             <StackPanel
                                 Height="30"
@@ -45,7 +46,7 @@
                                     <Label
                                         HorizontalAlignment="Center"
                                         FontSize="16"
-                                        Content="{DynamicResource UserID}"
+                                        Content="{x:Static resx:AppResources.UserID}"
                                         Foreground="White" />
                                 </Grid>
                                 <TextBox
@@ -65,7 +66,7 @@
                                     <Label
                                         HorizontalAlignment="Center"
                                         FontSize="16"
-                                        Content="{DynamicResource WorkOrder}"
+                                        Content="{x:Static resx:AppResources.WorkOrder}"
                                         Foreground="White" />
                                 </Grid>
                                 <TextBox
@@ -86,7 +87,7 @@
                         <GroupBox.Header>
                             <Label
                                 FontSize="16"
-                                Content="{DynamicResource BarcodeSetting}"
+                                Content="{x:Static resx:AppResources.BarcodeSetting}"
                                 Foreground="White" />
                         </GroupBox.Header>
                         <StackPanel Orientation="Vertical">
@@ -95,7 +96,7 @@
                                     <Label
                                         HorizontalAlignment="Center"
                                         FontSize="16"
-                                        Content="{DynamicResource ModelName}"
+                                        Content="{x:Static resx:AppResources.ModelName}"
                                         Foreground="White" />
                                 </Grid>
                                 <TextBox
@@ -116,7 +117,7 @@
                                     <Label
                                         HorizontalAlignment="Center"
                                         FontSize="16"
-                                        Content="{DynamicResource SerialNumber}"
+                                        Content="{x:Static resx:AppResources.SerialNumber}"
                                         Foreground="White" />
                                 </Grid>
                                 <TextBox
@@ -137,7 +138,7 @@
                                     <Label
                                         HorizontalAlignment="Center"
                                         FontSize="16"
-                                        Content="{DynamicResource SimStatus}"
+                                        Content="{x:Static resx:AppResources.SimStatus}"
                                         Foreground="White" />
                                 </Grid>
                                 <CheckBox
@@ -155,7 +156,7 @@
                                     <Label
                                         HorizontalAlignment="Center"
                                         FontSize="16"
-                                        Content="{DynamicResource ICCID}"
+                                        Content="{x:Static resx:AppResources.ICCID}"
                                         Foreground="White" />
                                 </Grid>
                                 <TextBox
@@ -182,7 +183,7 @@
                                     <Label
                                         HorizontalAlignment="Center"
                                         FontSize="16"
-                                        Content="{DynamicResource IMSI}"
+                                        Content="{x:Static resx:AppResources.IMSI}"
                                         Foreground="White" />
                                 </Grid>
                                 <TextBox
@@ -213,7 +214,7 @@
                         <GroupBox.Header>
                             <Label
                                 FontSize="16"
-                                Content="{DynamicResource FirmwareVersion}"
+                                Content="{x:Static resx:AppResources.FirmwareVersion}"
                                 Foreground="White" />
                         </GroupBox.Header>
 
@@ -229,13 +230,13 @@
                                     Width="150"
                                     MinWidth="50"
                                     Binding="{Binding Path=Module}"
-                                    Header="{DynamicResource FirmwareVersionHeaderName}"
+                                    Header="{x:Static resx:AppResources.FirmwareVersionHeaderName}"
                                     IsReadOnly="True" />
                                 <DataGridTextColumn
                                     Width="150"
                                     MinWidth="70"
                                     Binding="{Binding Path=Version}"
-                                    Header="{DynamicResource FirmwareVersionHeaderVersion}"
+                                    Header="{x:Static resx:AppResources.FirmwareVersionHeaderVersion}"
                                     IsReadOnly="True" />
                                 <!--  " DataGridTextColumn Header="File name" Binding="{Binding Path=FirmwareFileName}" IsReadOnly="False"/  -->
                             </DataGrid.Columns>
@@ -276,7 +277,7 @@
                             </MultiBinding>
                         </Button.IsEnabled>
 
-                        <Label FontSize="36" Content="{DynamicResource StartProcedure}" />
+                        <Label FontSize="36" Content="{x:Static resx:AppResources.StartProcedure}" />
                     </Button>
 
                     <StackPanel Grid.Row="1" Orientation="Vertical">

+ 53 - 42
AwInitilizer/MainWindow.xaml.cs

@@ -130,7 +130,7 @@ namespace AwInitilizer
             var serialNumber = systemID.ToString();
             if (!SajetConnect.SajetTransSnCheck(ref serialNumber))
             {
-                HintDialog.ShowMessage((string)Application.Current.FindResource("SnWoMisMatch"));
+                HintDialog.ShowMessage(Resx.AppResources.SnWoMisMatch);
                 return;
             }
             else
@@ -179,7 +179,7 @@ namespace AwInitilizer
             var serialNumber = inputSystemID.ToString();
             if (!SajetConnect.SajetTransSnCheck(ref serialNumber))
             {
-                HintDialog.ShowMessage((string)Application.Current.FindResource("SnWoMisMatch"));
+                HintDialog.ShowMessage(Resx.AppResources.SnWoMisMatch);
                 return;
             }
 
@@ -230,20 +230,20 @@ namespace AwInitilizer
             if (string.IsNullOrEmpty(updateData.ModelName))
             {
                 //alertMsg += "Model Name is Required\n";
-                alertMsg += (string)Application.Current.FindResource("ModelNameEmptyAlert") + "\n";
+                alertMsg += Resx.AppResources.ModelNameEmptyAlert + "\n";
                 isAvaliable = false;
             }
             else if (ViewModel.SettingModelName != updateData.ModelName)
             {
                 //alertMsg += "Model Name setting is Mismathed\n";
-                alertMsg += (string)Application.Current.FindResource("ModelNameMismatchAlert") + "\n";
+                alertMsg += Resx.AppResources.ModelNameMismatchAlert + "\n";
                 isAvaliable = false;
             }
 
             if (string.IsNullOrEmpty(updateData.SerialNumber))
             {
                 //alertMsg += "Serial Number is Required\n";
-                alertMsg += (string)Application.Current.FindResource("SerialNumberEmptyAlert") + "\n";
+                alertMsg += Resx.AppResources.SerialNumberEmptyAlert + "\n";
                 isAvaliable = false;
             }
 
@@ -257,7 +257,7 @@ namespace AwInitilizer
                 else
                 {
                     //alertMsg += "Model Name format Error\n";
-                    alertMsg += (string)Application.Current.FindResource("ModelNameErrorAlert") + "\n";
+                    alertMsg += Resx.AppResources.ModelNameErrorAlert + "\n";
                     isAvaliable = false;
                 }
             }
@@ -268,7 +268,7 @@ namespace AwInitilizer
                 if (string.IsNullOrEmpty(updateData.FourGenModuleVersion))
                 {
                     //alertMsg += "4G Module Version is Required\n";
-                    alertMsg += (string)Application.Current.FindResource("FourGenVersionEmptyAlert") + "\n";
+                    alertMsg += Resx.AppResources.FourGenVersionEmptyAlert + "\n";
                     isAvaliable = false;
                 }
 
@@ -277,14 +277,14 @@ namespace AwInitilizer
                     if (string.IsNullOrEmpty(updateData.ICCID))
                     {
                         //alertMsg += "ICCID is Required when sim installed\n";
-                        alertMsg += (string)Application.Current.FindResource("IccidEmptyAlert") + "\n";
+                        alertMsg += Resx.AppResources.IccidEmptyAlert + "\n";
                         isAvaliable = false;
                     }
 
                     if (string.IsNullOrEmpty(updateData.IMSI))
                     {
                         //alertMsg += "IMSI is Required when sim installed\n";
-                        alertMsg += (string)Application.Current.FindResource("ImsiEmptyAlert") + "\n";
+                        alertMsg += Resx.AppResources.ImsiEmptyAlert + "\n";
                         isAvaliable = false;
                     }
                 }
@@ -293,7 +293,7 @@ namespace AwInitilizer
             if (updateData.FirmwareUpdateModels == null)
             {
                 //alertMsg += "FirmwareUpdateModels should be decalred\n";
-                alertMsg += (string)Application.Current.FindResource("FirmwareListNullAlert") + "\n";
+                alertMsg += Resx.AppResources.FirmwareListNullAlert + "\n";
                 isAvaliable = false;
             }
             else
@@ -303,21 +303,21 @@ namespace AwInitilizer
                     if (string.IsNullOrEmpty(model.Module))
                     {
                         //alertMsg += "Firmware module name is Required\n";
-                        alertMsg += (string)Application.Current.FindResource("FirmwareNameEmptyAlert") + "\n";
+                        alertMsg += Resx.AppResources.FirmwareNameEmptyAlert + "\n";
                         isAvaliable = false;
                     }
 
                     if (string.IsNullOrEmpty(model.Version))
                     {
                         //alertMsg += "Firmware module name is Required\n";
-                        alertMsg += (string)Application.Current.FindResource("FirmwareVersionEmptyAlert") + "\n";
+                        alertMsg += Resx.AppResources.FirmwareVersionEmptyAlert + "\n";
                         isAvaliable = false;
                     }
 
                     if (string.IsNullOrEmpty(model.FirmwareFileName))
                     {
                         //alertMsg += "Firmware file is Required\n";
-                        alertMsg += (string)Application.Current.FindResource("FirmwareFileEmptyAlert") + "\n";
+                        alertMsg += Resx.AppResources.FirmwareFileEmptyAlert + "\n";
                         isAvaliable = false;
                     }
                 }
@@ -359,7 +359,7 @@ namespace AwInitilizer
             {
                 uxProgress.Value = (procedureIndex * 100 / procedureList.Count);
                 uxProgressRate.Content = ((int)(procedureIndex * 100 / procedureList.Count)) + "%";
-                uxStatusBar.Content = string.Format((string)Application.Current.FindResource("StatusBarUpdating"), procedureList[procedureIndex].Name);// $"Processing {procedureList[procedureIndex].Name}";
+                uxStatusBar.Content = string.Format(Resx.AppResources.StatusBarUpdating, procedureList[procedureIndex].Name);// $"Processing {procedureList[procedureIndex].Name}";
 
                 var result = await procedureList[procedureIndex].DoWork();
 
@@ -391,7 +391,7 @@ namespace AwInitilizer
             {
                 UpdateStatus = UpdateStatus.Fail;
                 //uxStatusBar.Content = $"Process {procedureList[procedureIndex].Name} Failed";
-                uxStatusBar.Content = string.Format((string)Application.Current.FindResource("StatusBarFailed"), procedureList[procedureIndex].Name);
+                uxStatusBar.Content = string.Format(Resx.AppResources.StatusBarFailed, procedureList[procedureIndex].Name);
                 //report Fail
                 SajetConnect.SajetTranFinishFail(mesErrorCode);
             }
@@ -551,14 +551,14 @@ namespace AwInitilizer
             catch
             {
                 //HintDialog.ShowMessage("Firmware root path ERROR");
-                HintDialog.ShowMessage((string)Application.Current.FindResource("LoadConfigRootFolderNotfoundAlert"));
+                HintDialog.ShowMessage(Resx.AppResources.LoadConfigRootFolderNotfoundAlert);
                 return false;
             }
 
             if (!Directory.Exists(settingRootFolder))
             {
                 //HintDialog.ShowMessage("Firmware root path not exist");
-                HintDialog.ShowMessage((string)Application.Current.FindResource("LoadConfigFolderNotfoundAlert"));
+                HintDialog.ShowMessage(Resx.AppResources.LoadConfigFolderNotfoundAlert);
                 return false;
             }
 
@@ -566,7 +566,7 @@ namespace AwInitilizer
             if (!Directory.Exists(modelDirectoy))
             {
                 //HintDialog.ShowMessage("Model firmware root path not exist");
-                HintDialog.ShowMessage((string)Application.Current.FindResource("LoadConfigModelFolderNotfoundAlert"));
+                HintDialog.ShowMessage(Resx.AppResources.LoadConfigModelFolderNotfoundAlert);
                 return false;
             }
 
@@ -574,7 +574,7 @@ namespace AwInitilizer
             if (!File.Exists(modelSeettingFilePath))
             {
                 //HintDialog.ShowMessage("Model firmware setting not exist");
-                HintDialog.ShowMessage((string)Application.Current.FindResource("LoadConfigModelInitNotfoundAlert"));
+                HintDialog.ShowMessage(Resx.AppResources.LoadConfigModelInitNotfoundAlert);
                 return false;
             }
 
@@ -588,7 +588,7 @@ namespace AwInitilizer
             catch
             {
                 //HintDialog.ShowMessage("Setting file ERROR");
-                HintDialog.ShowMessage((string)Application.Current.FindResource("LoadConfigModelInitFormatErrorAlert"));
+                HintDialog.ShowMessage(Resx.AppResources.LoadConfigModelInitFormatErrorAlert);
                 return false;
             }
 
@@ -619,19 +619,30 @@ namespace AwInitilizer
             List<ProcedureBase> procedures = new List<ProcedureBase>();
 
             //init intilize procedure list
+
             procedures.Add(new Procedure.BasicInfoUpdate.BasicInfoUpdateProcedure());
             procedures.Add(new Procedure.FourGenModuleCheck.FourGenModuleCheckProcedure());
             procedures.Add(new Procedure.WifRssiCheck.WifRssiCheckProcedure());
+            procedures.Add(new Procedure.FirmwareBundleUpload.FirmwareFtpUploadProcedure());
+            procedures.Add(new Procedure.FirmwareCheckVersion.FirmwareCheckVersionProcedure());
+            procedures.Add(new Procedure.ButtonStatusCheck.ButtonStatusCheckPorcedure());
+            procedures.Add(new Procedure.RestarttoIdel.RestarttoIdelProcedure());
+            procedures.Add(new Procedure.VersionLog.VersionLogProcedure());
+
+            //procedures.Add(new Procedure.BasicInfoUpdate.BasicInfoUpdateProcedure());
+            //procedures.Add(new Procedure.FourGenModuleCheck.FourGenModuleCheckProcedure());
+            //procedures.Add(new Procedure.WifRssiCheck.WifRssiCheckProcedure());
+            //procedures.Add(new Procedure.FirmwareBundleUpload.FirmwareBundleUploadProcedure());
+            //procedures.Add(new Procedure.FirmwareCheckVersion.FirmwareCheckVersionProcedure());
+            //procedures.Add(new Procedure.ButtonStatusCheck.ButtonStatusCheckPorcedure());
+            //procedures.Add(new Procedure.RestarttoIdel.RestarttoIdelProcedure());
+            //procedures.Add(new Procedure.VersionLog.VersionLogProcedure());
+
             //for (int firemwareIndex = 0; firemwareIndex < ViewModel.FirmwareUpdateModels.Count ; firemwareIndex++)
             //{
             //    //procedures.Add(new FirmwareUpdateProcedure(ViewModel.FirmwareUpdateModels[firemwareIndex]));
             //    procedures.Add(new FirmwareUploadProcedure(ViewModel.FirmwareUpdateModels[firemwareIndex]));
             //}
-            procedures.Add(new Procedure.FirmwareBundleUpload.FirmwareBundleUploadProcedure());
-            procedures.Add(new Procedure.FirmwareCheckVersion.FirmwareCheckVersionProcedure());
-            procedures.Add(new Procedure.ButtonStatusCheck.ButtonStatusCheckPorcedure());
-            procedures.Add(new Procedure.RestarttoIdel.RestarttoIdelProcedure());
-            procedures.Add(new Procedure.VersionLog.VersionLogProcedure());
 
             ViewModel.UpdateProcedure.Clear();
 
@@ -652,13 +663,13 @@ namespace AwInitilizer
             if (string.IsNullOrEmpty(setting.ModelName))
             {
                 //HintDialog.ShowMessage("ModelName is requred");
-                HintDialog.ShowMessage((string)Application.Current.FindResource("InitModelNameEmptyAlert"));
+                HintDialog.ShowMessage(Resx.AppResources.InitModelNameEmptyAlert);
                 isCheckPassed = false;
             }
             else if (!ModelName.TryParse(setting.ModelName, out _))
             {
                 //HintDialog.ShowMessage("ModelName format Error");
-                HintDialog.ShowMessage((string)Application.Current.FindResource("InitModelNameErrorAlert"));
+                HintDialog.ShowMessage(Resx.AppResources.InitModelNameErrorAlert);
                 isCheckPassed = false;
             }
 
@@ -667,14 +678,14 @@ namespace AwInitilizer
                 if (string.IsNullOrEmpty(setting.ICCID))
                 {
                     //HintDialog.ShowMessage("ICCID should not empty while IsSimInsert is set");
-                    HintDialog.ShowMessage((string)Application.Current.FindResource("InitIccidEmptyAlert"));
+                    HintDialog.ShowMessage(Resx.AppResources.InitIccidEmptyAlert);
                     isCheckPassed = false;
                 }
 
                 if (string.IsNullOrEmpty(setting.IMSI))
                 {
                     //HintDialog.ShowMessage("IMSI should not empty while IsSimInsert is set");
-                    HintDialog.ShowMessage((string)Application.Current.FindResource("InitImsiEmptyAlert"));
+                    HintDialog.ShowMessage(Resx.AppResources.InitImsiEmptyAlert);
                     isCheckPassed = false;
                 }
             }
@@ -691,7 +702,7 @@ namespace AwInitilizer
                     if (!isNoduleNameVaild)
                     {
                         //HintDialog.ShowMessage("Firmware module name should not empty");
-                        HintDialog.ShowMessage((string)Application.Current.FindResource("InitFirmwareNameEmptyAlert"));
+                        HintDialog.ShowMessage(Resx.AppResources.InitFirmwareNameEmptyAlert);
                         isCheckPassed = false;
                     }
                     if (isVersionVaild || isFileNameVaild)
@@ -699,14 +710,14 @@ namespace AwInitilizer
                         if (!isVersionVaild)
                         {
                             //HintDialog.ShowMessage($"Version should not empty while {model.Module} firmware is set");
-                            HintDialog.ShowMessage(string.Format((string)Application.Current.FindResource("InitFirmwareVersionEmptyAlert"), model.Module));
+                            HintDialog.ShowMessage(string.Format(Resx.AppResources.InitFirmwareVersionEmptyAlert, model.Module));
                             isCheckPassed = false;
                         }
 
                         if (!isFileNameVaild)
                         {
                             //HintDialog.ShowMessage($"File name should not empty while {model.Module} version is set");
-                            HintDialog.ShowMessage(string.Format((string)Application.Current.FindResource("InitFirmwareFileEmptyAlert"), model.Module));
+                            HintDialog.ShowMessage(string.Format(Resx.AppResources.InitFirmwareFileEmptyAlert, model.Module));
                             isCheckPassed = false;
                         }
 
@@ -717,7 +728,7 @@ namespace AwInitilizer
                             if (!File.Exists(filePath))
                             {
                                 //HintDialog.ShowMessage($"{model.Module} Firemware file is missing");
-                                HintDialog.ShowMessage(string.Format((string)Application.Current.FindResource("InitFirmwareFileMissingAlert"), model.Module));
+                                HintDialog.ShowMessage(string.Format(Resx.AppResources.InitFirmwareFileMissingAlert, model.Module));
                                 isCheckPassed = false;
                             }
                             else
@@ -744,21 +755,21 @@ namespace AwInitilizer
                                                 if (modelName.ToString() != setting.ModelName)
                                                 {
                                                     //HintDialog.ShowMessage($"{model.Module} Firemware and ModelName is Mismatched");
-                                                    HintDialog.ShowMessage(string.Format((string)Application.Current.FindResource("InitFirmwareFileHeaderMismatchAlert"), model.Module));
+                                                    HintDialog.ShowMessage(string.Format(Resx.AppResources.InitFirmwareFileHeaderMismatchAlert, model.Module));
                                                     isCheckPassed = false;
                                                 }
                                             }
                                             else
                                             {
                                                 // HintDialog.ShowMessage($"{model.Module} Firemware header ERROR");
-                                                HintDialog.ShowMessage(string.Format((string)Application.Current.FindResource("InitFirmwareFileHeaderFormatAlert"), model.Module));
+                                                HintDialog.ShowMessage(string.Format(Resx.AppResources.InitFirmwareFileHeaderFormatAlert, model.Module));
                                                 isCheckPassed = false;
                                             }
                                         }
                                         else
                                         {
                                             //HintDialog.ShowMessage($"{model.Module} Firemware header ERROR");
-                                            HintDialog.ShowMessage(string.Format((string)Application.Current.FindResource("InitFirmwareFileHeaderFormatAlert"), model.Module));
+                                            HintDialog.ShowMessage(string.Format(Resx.AppResources.InitFirmwareFileHeaderFormatAlert, model.Module));
                                             isCheckPassed = false;
                                         }
 
@@ -781,7 +792,7 @@ namespace AwInitilizer
                                 catch
                                 {
                                     //HintDialog.ShowMessage($"{model.Module} Firemware header ERROR");
-                                    HintDialog.ShowMessage(string.Format((string)Application.Current.FindResource("InitFirmwareFileHeaderFormatAlert"), model.Module));
+                                    HintDialog.ShowMessage(string.Format(Resx.AppResources.InitFirmwareFileHeaderFormatAlert, model.Module));
                                     isCheckPassed = false;
                                 }
 
@@ -823,7 +834,7 @@ namespace AwInitilizer
             signinDialog.ShowDialog();
             this.Focus();
 
-            //SystemID.TryParse("DSWU601U0UD2PHD2111A001A0", out var systemID);
+            //SystemID.TryParse("DSYE122E0ED5P7D2212A011A0", out var systemID);
             //SystemIDScanReseived(systemID);
 
             if (signinDialog.DialogResult != true)
@@ -891,27 +902,27 @@ namespace AwInitilizer
             {
                 uxStatusContainer.Background = new SolidColorBrush(Colors.White);
                 uxStatus.Foreground = new SolidColorBrush(Colors.Black);
-                uxStatus.Content = (string)Application.Current.FindResource("StatusIdel");//"Idel";
+                uxStatus.Content = Resx.AppResources.StatusIdel;//"Idel";
                 uxStatusBar.Content = "";
             }
             else if (status == UpdateStatus.Updating)
             {
                 uxStatusContainer.Background = new SolidColorBrush(Colors.SkyBlue);
                 uxStatus.Foreground = new SolidColorBrush(Colors.Black);
-                uxStatus.Content = (string)Application.Current.FindResource("StatusUpdating");//"Updating";
+                uxStatus.Content = Resx.AppResources.StatusUpdating;//"Updating";
             }
             else if (status == UpdateStatus.Sucess)
             {
                 uxStatusContainer.Background = new SolidColorBrush(Colors.Green);
                 uxStatus.Foreground = new SolidColorBrush(Colors.White);
-                uxStatus.Content = (string)Application.Current.FindResource("StatusSuccess");//"Success";
+                uxStatus.Content = Resx.AppResources.StatusSuccess;//"Success";
                 uxStatusBar.Content = "";
             }
             else if (status == UpdateStatus.Fail)
             {
                 uxStatusContainer.Background = new SolidColorBrush(Colors.Red);
                 uxStatus.Foreground = new SolidColorBrush(Colors.White);
-                uxStatus.Content = (string)Application.Current.FindResource("StatusFail");//"Fail";
+                uxStatus.Content = Resx.AppResources.StatusFail;//"Fail";
             }
         }
     }

+ 8 - 8
AwInitilizer/Procedure/ButtonStatusCheckPorcedure.cs

@@ -98,9 +98,9 @@ namespace AwInitilizer.Procedure.ButtonStatusCheck
         private async Task<bool> CheckUnpressAllBtn()
         {
             ShowDialog(
-                (string)Application.Current.FindResource("BtnPressUnpressHint"),
-                (string)Application.Current.FindResource("BtnPressHintTitle"),
-                (string)Application.Current.FindResource("Confirm"),
+                Resx.AppResources.BtnPressUnpressHint,
+                Resx.AppResources.BtnPressHintTitle,
+                Resx.AppResources.Confirm,
                 "", cancelAble: true);
 
             ButtonStatus status = await GetButtonStatus();
@@ -238,8 +238,8 @@ namespace AwInitilizer.Procedure.ButtonStatusCheck
         private void ShowBtnPressRequestDialog(string btnLang, string imgUrl)
         {
             ShowDialog(
-                string.Format((string)Application.Current.FindResource("BtnPressPressHint"), btnLang),
-                (string)Application.Current.FindResource("BtnPressHintTitle"),
+                string.Format(Resx.AppResources.BtnPressPressHint, btnLang),
+                Resx.AppResources.BtnPressHintTitle,
                 "", imgUrl, cancelAble: false);
         }
 
@@ -250,17 +250,17 @@ namespace AwInitilizer.Procedure.ButtonStatusCheck
             {
                 case 1:
                     btn = "Green Button";
-                    btnLang = (string)Application.Current.FindResource("BtnPressGreenBtn");
+                    btnLang = Resx.AppResources.BtnPressGreenBtn;
                     imgUrl = "pack://application:,,,/AwInitilizer;component/Image/Green.png";
                     break;
                 case 0:
                     btn = "Blue Button";
-                    btnLang = (string)Application.Current.FindResource("BtnPressBlueBtn");
+                    btnLang = Resx.AppResources.BtnPressBlueBtn;
                     imgUrl = "pack://application:,,,/AwInitilizer;component/Image/Blue.png";
                     break;
                 case 2:
                     btn = "EmergencyButton";
-                    btnLang = (string)Application.Current.FindResource("BtnPressEmergencyBtn");
+                    btnLang = Resx.AppResources.BtnPressEmergencyBtn;
                     imgUrl = "pack://application:,,,/AwInitilizer;component/Image/Emergency.png";
                     break;
                 default:

+ 8 - 5
AwInitilizer/Procedure/FirmwareBundleUploadProcedure.cs

@@ -123,8 +123,8 @@ namespace AwInitilizer.Procedure.FirmwareBundleUpload
             }
             catch (Exception e)
             {
-                InfoLog += $"create file stream failed";
-                MesLogData.Add($"FirmwareUpload", "0" , false);
+                LogWriter.Log("create file stream failed");
+                LogWriter.Report(LogEvent.FirmwareUpload, "fail", isError: true);
                 return false;
             }
 
@@ -141,17 +141,20 @@ namespace AwInitilizer.Procedure.FirmwareBundleUpload
                 );
 
                 var responseStr = Encoding.ASCII.GetString(uploadResult).ToLower();
-                InfoLog += $"get firmware update response {responseStr}\n";
+                //InfoLog += $"get firmware update response {responseStr}\n";
+                LogWriter.Log("get firmware update response {responseStr}");
                 if (responseStr.Contains("file is uploaded"))
                     return true;
                 return false;
             }
             catch
             {
-                InfoLog += $"file upload failed";
+                //InfoLog += $"file upload failed";
+                LogWriter.Log($"file upload failed");
                 MesLogData.Add($"FirmwareUpload", "0", false);
             }
-            Logger.Print("Firmware Upload Complete", isError: false);
+            //Logger.Print("Firmware Upload Complete", isError: false);
+            LogWriter.Log("Firmware Upload Complete");
             MesLogData.Add($"FirmwareUpload", "1" , true);
             //release all
             foreach (var uploadFile in UploadFileList)

+ 164 - 0
AwInitilizer/Procedure/FirmwareFtpUploadProcedure.cs

@@ -0,0 +1,164 @@
+using FluentFTP;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace AwInitilizer.Procedure.FirmwareBundleUpload
+{
+    public class FirmwareFtpUploadProcedure : ProcedureBase
+    {
+        public ErrorType Error { get; set; } = ErrorType.None;
+
+        private ProcedureLog.LogWriter<FirmwareFtpUploadProcedure, LogEvent> LogWriter;
+
+        private readonly static Dictionary<LogEvent, string> ReportDict = new Dictionary<LogEvent, string>()
+        {
+            { LogEvent.UploadStartWait, "UploadStartWait" },
+            { LogEvent.FirmwareUpload, "FirmwareUpload" },
+        };
+
+        private readonly static Dictionary<LogEvent, string> LogDict = new Dictionary<LogEvent, string>()
+        {
+            { LogEvent.UploadStartWait, "Wait restart {0}" },
+            { LogEvent.FirmwareUpload, "Firmware Upload {0}" },
+        };
+
+        public FirmwareFtpUploadProcedure() : base()
+        {
+            Name = string.Format("Firmware Upload");
+            Content = string.Format("Upload all Firemware");
+
+            LogWriter = new ProcedureLog.LogWriter<FirmwareFtpUploadProcedure, LogEvent>(this)
+            {
+                ReportPair = ReportDict,
+                LogPair = LogDict
+            };
+        }
+
+        internal override async Task<bool> Run()
+        {
+            bool response = false;
+            int pollingCnt = 0;
+            for (pollingCnt = 0; pollingCnt < 56; pollingCnt++)
+            {
+                await Task.Delay(TimeSpan.FromSeconds(15));
+                response = await CheckGetQuertyAction();
+                if (response)
+                    break;
+            }
+
+            LogWriter.Log(string.Format("EVSE connet elapsed minute(s) : {0}, Expect:<14", pollingCnt * 0.25));
+
+            //timeout
+            if (pollingCnt >= 56)
+            {
+                LogWriter.Report(LogEvent.UploadStartWait, "fail", isError: true);
+                Error = ErrorType.StartWaitTimeout;
+
+                return false;
+            }
+
+            LogWriter.Report(LogEvent.UploadStartWait, "success");
+
+
+            //upload firmware
+            bool result = false;
+            for (int tryCnt = 0; tryCnt < 10; tryCnt++)
+            {
+                result = await UploadWithFtp();
+                if (result)
+                    break;
+                else
+                    await Task.Delay(1000);
+            }
+            if (!result)
+            {
+                Error = ErrorType.UploadFailed;
+                return false;
+            }
+
+            //signal Update start
+            var signalUpdateResult = await SignalUpdate();
+            return result;
+        }
+
+        private async Task<bool> UploadWithFtp()
+        {
+            var updateList = UpdateData.FirmwareUpdateModels;
+
+            //FtpClient client = new FtpClient(ServerIpAddress, "root", "y42j/4cj84");
+            FtpClient client = new FtpClient(ServerIpAddress, "vern", "delta");
+            try
+            {
+                var profile = await client.AutoConnectAsync();
+                if (profile == null)
+                {
+                    throw new Exception("profile null");
+                }
+            }
+            catch
+            {
+                LogWriter.Log($"Ftp Connect failed");
+                LogWriter.Report(LogEvent.FirmwareUpload, "fail", isError: true);
+                return false;
+            }
+
+            for (int modelIndex = 0; modelIndex < updateList.Count; modelIndex++) //foreach (var model in updateList)
+            {
+                var model = updateList[modelIndex];
+                var firmwareFilePath = Path.Combine(Directory.GetCurrentDirectory(), model.FirmwareFileName);
+                var remoteFilePath = string.Format("/mnt/{0}", Path.GetFileName(model.FirmwareFileName));
+                var status = await client.UploadFileAsync(model.FirmwareFileName, remoteFilePath);
+
+                if(status != FtpStatus.Success)
+                {
+                    LogWriter.Log($"Firmware {modelIndex} upload failed");
+                    LogWriter.Report(LogEvent.FirmwareUpload, "fail", isError: true);
+                    return false;
+                }
+            }
+            await client.DisconnectAsync();
+            return true;
+        }
+
+        private async Task<bool> SignalUpdate()
+        {
+            var updateList = UpdateData.FirmwareUpdateModels;
+
+            var restClient = new RestSharp.RestClient($"https://{ServerIpAddress}");
+            restClient.ConfigureWebRequest((r) => { r.KeepAlive = true; });
+
+            var request = new RestSharp.RestRequest("upgrade_iso_action.php", RestSharp.Method.POST);
+            request.AlwaysMultipartFormData = true;
+            request.AddHeader("Content-Type", "multipart/form-data");
+
+            request.AddParameter("fw_tag", "iso");
+            //request.AddFile("files[]", new byte[0] , "dummy");
+
+            RestSharp.IRestResponse response = await restClient.ExecuteAsync(request);
+
+            if (response.IsSuccessful)
+            {
+                return true;
+            }
+            else
+            {
+                if (response.ErrorException != null)
+                {
+                    LogWriter.Log(response.ErrorException.Message, isError: true, isDebugLog: true);
+                    if (response.ErrorException.InnerException != null)
+                    {
+                        LogWriter.Log(response.ErrorException.InnerException.Message, isError: true, isDebugLog: true);
+                    }
+
+                    LogWriter.Log(response.StatusCode.ToString(), isError: true, isDebugLog: true);
+                }
+                return false;
+            }
+        }
+    }
+}

+ 0 - 1
AwInitilizer/Procedure/FirmwareUploadProcedure.cs

@@ -32,7 +32,6 @@ namespace AwInitilizer.Procedure
             module = model.Module;
         }
 
-
         internal override async Task<bool> Run()
         {
             Logger.Print("Firmware Uploading...");

+ 0 - 56
AwInitilizer/Properties/AssemblyInfo.cs

@@ -1,56 +0,0 @@
-using System.Reflection;
-using System.Resources;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Windows;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("AwInitilizer")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("AwInitilizer")]
-[assembly: AssemblyCopyright("Copyright ©  2020")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components.  If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-//In order to begin building localizable applications, set
-//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
-//inside a <PropertyGroup>.  For example, if you are using US english
-//in your source files, set the <UICulture> to en-US.  Then uncomment
-//the NeutralResourceLanguage attribute below.  Update the "en-US" in
-//the line below to match the UICulture setting in the project file.
-
-//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
-
-
-[assembly: ThemeInfo(
-    ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
-                                     //(used if a resource is not found in the page,
-                                     // or application resource dictionaries)
-    ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
-                                              //(used if a resource is not found in the page,
-                                              // app, or any theme specific resource dictionaries)
-)]
-
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.5.8.0")]
-[assembly: AssemblyVersion("1.5.8.0")]
-[assembly: AssemblyFileVersion("1.5.8.0")]
-[assembly: AssemblyInformationalVersion("a87684c")]

+ 0 - 63
AwInitilizer/Properties/Resources.Designer.cs

@@ -1,63 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.42000
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace AwInitilizer.Properties {
-    using System;
-    
-    
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class Resources {
-        
-        private static global::System.Resources.ResourceManager resourceMan;
-        
-        private static global::System.Globalization.CultureInfo resourceCulture;
-        
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal Resources() {
-        }
-        
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager {
-            get {
-                if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AwInitilizer.Properties.Resources", typeof(Resources).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-        
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture {
-            get {
-                return resourceCulture;
-            }
-            set {
-                resourceCulture = value;
-            }
-        }
-    }
-}

+ 0 - 117
AwInitilizer/Properties/Resources.resx

@@ -1,117 +0,0 @@
-<?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.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.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <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" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-            </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" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-            </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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>

+ 603 - 0
AwInitilizer/Resx/AppResources.Designer.cs

@@ -0,0 +1,603 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace AwInitilizer.Resx {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class AppResources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal AppResources() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AwInitilizer.Resx.AppResources", typeof(AppResources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Account.
+        /// </summary>
+        public static string Account {
+            get {
+                return ResourceManager.GetString("Account", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Barcode Setting.
+        /// </summary>
+        public static string BarcodeSetting {
+            get {
+                return ResourceManager.GetString("BarcodeSetting", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to BLUE Button.
+        /// </summary>
+        public static string BtnPressBlueBtn {
+            get {
+                return ResourceManager.GetString("BtnPressBlueBtn", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to .
+        /// </summary>
+        public static string BtnPressEmergencyBtn {
+            get {
+                return ResourceManager.GetString("BtnPressEmergencyBtn", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to GREEN Button.
+        /// </summary>
+        public static string BtnPressGreenBtn {
+            get {
+                return ResourceManager.GetString("BtnPressGreenBtn", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Starting Button test.
+        /// </summary>
+        public static string BtnPressHintTitle {
+            get {
+                return ResourceManager.GetString("BtnPressHintTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to PRESS {0} 2 secnds.
+        /// </summary>
+        public static string BtnPressPressHint {
+            get {
+                return ResourceManager.GetString("BtnPressPressHint", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Please make sure All button is Unpressed&amp;#x0a;Press Ok while complete.
+        /// </summary>
+        public static string BtnPressUnpressHint {
+            get {
+                return ResourceManager.GetString("BtnPressUnpressHint", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to OK.
+        /// </summary>
+        public static string Confirm {
+            get {
+                return ResourceManager.GetString("Confirm", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Firmware file is Required.
+        /// </summary>
+        public static string FirmwareFileEmptyAlert {
+            get {
+                return ResourceManager.GetString("FirmwareFileEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to FirmwareUpdateModels should be decalred.
+        /// </summary>
+        public static string FirmwareListNullAlert {
+            get {
+                return ResourceManager.GetString("FirmwareListNullAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Firmware module name is Required.
+        /// </summary>
+        public static string FirmwareNameEmptyAlert {
+            get {
+                return ResourceManager.GetString("FirmwareNameEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Firmware version.
+        /// </summary>
+        public static string FirmwareVersion {
+            get {
+                return ResourceManager.GetString("FirmwareVersion", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Firmware version is Required.
+        /// </summary>
+        public static string FirmwareVersionEmptyAlert {
+            get {
+                return ResourceManager.GetString("FirmwareVersionEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Module.
+        /// </summary>
+        public static string FirmwareVersionHeaderName {
+            get {
+                return ResourceManager.GetString("FirmwareVersionHeaderName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Version.
+        /// </summary>
+        public static string FirmwareVersionHeaderVersion {
+            get {
+                return ResourceManager.GetString("FirmwareVersionHeaderVersion", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to 4G Module Version is Required.
+        /// </summary>
+        public static string FourGenVersionEmptyAlert {
+            get {
+                return ResourceManager.GetString("FourGenVersionEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Sim ICCID.
+        /// </summary>
+        public static string ICCID {
+            get {
+                return ResourceManager.GetString("ICCID", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ICCID is Required when sim installed.
+        /// </summary>
+        public static string IccidEmptyAlert {
+            get {
+                return ResourceManager.GetString("IccidEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Sim IMSI.
+        /// </summary>
+        public static string IMSI {
+            get {
+                return ResourceManager.GetString("IMSI", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to IMSI is Required when sim installed.
+        /// </summary>
+        public static string ImsiEmptyAlert {
+            get {
+                return ResourceManager.GetString("ImsiEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to File name should not empty while {0} version is set.
+        /// </summary>
+        public static string InitFirmwareFileEmptyAlert {
+            get {
+                return ResourceManager.GetString("InitFirmwareFileEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to {0} Firemware header ERROR.
+        /// </summary>
+        public static string InitFirmwareFileHeaderFormatAlert {
+            get {
+                return ResourceManager.GetString("InitFirmwareFileHeaderFormatAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to {0} Firemware and ModelName is Mismatched.
+        /// </summary>
+        public static string InitFirmwareFileHeaderMismatchAlert {
+            get {
+                return ResourceManager.GetString("InitFirmwareFileHeaderMismatchAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to {0} Firemware file is missing.
+        /// </summary>
+        public static string InitFirmwareFileMissingAlert {
+            get {
+                return ResourceManager.GetString("InitFirmwareFileMissingAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Firmware module name should not empty.
+        /// </summary>
+        public static string InitFirmwareNameEmptyAlert {
+            get {
+                return ResourceManager.GetString("InitFirmwareNameEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Version should not empty while {0} firmware is set.
+        /// </summary>
+        public static string InitFirmwareVersionEmptyAlert {
+            get {
+                return ResourceManager.GetString("InitFirmwareVersionEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ICCID should not empty while IsSimInsert is set.
+        /// </summary>
+        public static string InitIccidEmptyAlert {
+            get {
+                return ResourceManager.GetString("InitIccidEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to IMSI should not empty while IsSimInsert is set.
+        /// </summary>
+        public static string InitImsiEmptyAlert {
+            get {
+                return ResourceManager.GetString("InitImsiEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ModelName is requred.
+        /// </summary>
+        public static string InitModelNameEmptyAlert {
+            get {
+                return ResourceManager.GetString("InitModelNameEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ModelName format Error.
+        /// </summary>
+        public static string InitModelNameErrorAlert {
+            get {
+                return ResourceManager.GetString("InitModelNameErrorAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Firmware root path not exist.
+        /// </summary>
+        public static string LoadConfigFolderNotfoundAlert {
+            get {
+                return ResourceManager.GetString("LoadConfigFolderNotfoundAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Model firmware root path not exist.
+        /// </summary>
+        public static string LoadConfigModelFolderNotfoundAlert {
+            get {
+                return ResourceManager.GetString("LoadConfigModelFolderNotfoundAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Setting file ERROR.
+        /// </summary>
+        public static string LoadConfigModelInitFormatErrorAlert {
+            get {
+                return ResourceManager.GetString("LoadConfigModelInitFormatErrorAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Model firmware setting not exist.
+        /// </summary>
+        public static string LoadConfigModelInitNotfoundAlert {
+            get {
+                return ResourceManager.GetString("LoadConfigModelInitNotfoundAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Firmware root path ERROR.
+        /// </summary>
+        public static string LoadConfigRootFolderNotfoundAlert {
+            get {
+                return ResourceManager.GetString("LoadConfigRootFolderNotfoundAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to logout.
+        /// </summary>
+        public static string Logout {
+            get {
+                return ResourceManager.GetString("Logout", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Model Name.
+        /// </summary>
+        public static string ModelName {
+            get {
+                return ResourceManager.GetString("ModelName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Model Name is Required.
+        /// </summary>
+        public static string ModelNameEmptyAlert {
+            get {
+                return ResourceManager.GetString("ModelNameEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Model Name format Error.
+        /// </summary>
+        public static string ModelNameErrorAlert {
+            get {
+                return ResourceManager.GetString("ModelNameErrorAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Model Name setting is Mismathed.
+        /// </summary>
+        public static string ModelNameMismatchAlert {
+            get {
+                return ResourceManager.GetString("ModelNameMismatchAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Serial Number.
+        /// </summary>
+        public static string SerialNumber {
+            get {
+                return ResourceManager.GetString("SerialNumber", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Serial Number is Required.
+        /// </summary>
+        public static string SerialNumberEmptyAlert {
+            get {
+                return ResourceManager.GetString("SerialNumberEmptyAlert", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ID Error.
+        /// </summary>
+        public static string SigninDialogEnterIDError {
+            get {
+                return ResourceManager.GetString("SigninDialogEnterIDError", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Enter ID.
+        /// </summary>
+        public static string SigninDialogEnterIDHint {
+            get {
+                return ResourceManager.GetString("SigninDialogEnterIDHint", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to WorkOrder Error.
+        /// </summary>
+        public static string SigninDialogEnterWOError {
+            get {
+                return ResourceManager.GetString("SigninDialogEnterWOError", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Enter WorkOrder.
+        /// </summary>
+        public static string SigninDialogEnterWOHint {
+            get {
+                return ResourceManager.GetString("SigninDialogEnterWOHint", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to MES no response.
+        /// </summary>
+        public static string SigninDialogNoResponseError {
+            get {
+                return ResourceManager.GetString("SigninDialogNoResponseError", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Sigin in.
+        /// </summary>
+        public static string SigninDialogTitle {
+            get {
+                return ResourceManager.GetString("SigninDialogTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to 4G Sim Card Inserted.
+        /// </summary>
+        public static string SimStatus {
+            get {
+                return ResourceManager.GetString("SimStatus", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Serial Number or WorkOrder Error.
+        /// </summary>
+        public static string SnWoMisMatch {
+            get {
+                return ResourceManager.GetString("SnWoMisMatch", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Start.
+        /// </summary>
+        public static string StartProcedure {
+            get {
+                return ResourceManager.GetString("StartProcedure", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Process {0} Failed.
+        /// </summary>
+        public static string StatusBarFailed {
+            get {
+                return ResourceManager.GetString("StatusBarFailed", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Processing {0}.
+        /// </summary>
+        public static string StatusBarUpdating {
+            get {
+                return ResourceManager.GetString("StatusBarUpdating", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Fail.
+        /// </summary>
+        public static string StatusFail {
+            get {
+                return ResourceManager.GetString("StatusFail", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Idel.
+        /// </summary>
+        public static string StatusIdel {
+            get {
+                return ResourceManager.GetString("StatusIdel", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Success.
+        /// </summary>
+        public static string StatusSuccess {
+            get {
+                return ResourceManager.GetString("StatusSuccess", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Updating.
+        /// </summary>
+        public static string StatusUpdating {
+            get {
+                return ResourceManager.GetString("StatusUpdating", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to User Id.
+        /// </summary>
+        public static string UserID {
+            get {
+                return ResourceManager.GetString("UserID", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Work Order.
+        /// </summary>
+        public static string WorkOrder {
+            get {
+                return ResourceManager.GetString("WorkOrder", resourceCulture);
+            }
+        }
+    }
+}

+ 300 - 0
AwInitilizer/Resx/AppResources.resx

@@ -0,0 +1,300 @@
+<?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.
+    -->
+  <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>
+  <data name="Confirm" xml:space="preserve">
+    <value>OK</value>
+  </data>
+  <data name="SigninDialogTitle" xml:space="preserve">
+    <value>Sigin in</value>
+  </data>
+  <data name="SigninDialogEnterIDHint" xml:space="preserve">
+    <value>Enter ID</value>
+  </data>
+  <data name="SigninDialogEnterWOHint" xml:space="preserve">
+    <value>Enter WorkOrder</value>
+  </data>
+  <data name="SigninDialogEnterWOError" xml:space="preserve">
+    <value>WorkOrder Error</value>
+  </data>
+  <data name="SigninDialogEnterIDError" xml:space="preserve">
+    <value>ID Error</value>
+  </data>
+  <data name="SigninDialogNoResponseError" xml:space="preserve">
+    <value>MES no response</value>
+  </data>
+  <data name="Account" xml:space="preserve">
+    <value>Account</value>
+  </data>
+  <data name="Logout" xml:space="preserve">
+    <value>logout</value>
+  </data>
+  <data name="UserID" xml:space="preserve">
+    <value>User Id</value>
+  </data>
+  <data name="WorkOrder" xml:space="preserve">
+    <value>Work Order</value>
+  </data>
+  <data name="BarcodeSetting" xml:space="preserve">
+    <value>Barcode Setting</value>
+  </data>
+  <data name="ModelName" xml:space="preserve">
+    <value>Model Name</value>
+  </data>
+  <data name="SerialNumber" xml:space="preserve">
+    <value>Serial Number</value>
+  </data>
+  <data name="SimStatus" xml:space="preserve">
+    <value>4G Sim Card Inserted</value>
+  </data>
+  <data name="ICCID" xml:space="preserve">
+    <value>Sim ICCID</value>
+  </data>
+  <data name="IMSI" xml:space="preserve">
+    <value>Sim IMSI</value>
+  </data>
+  <data name="FirmwareVersion" xml:space="preserve">
+    <value>Firmware version</value>
+  </data>
+  <data name="FirmwareVersionHeaderName" xml:space="preserve">
+    <value>Module</value>
+  </data>
+  <data name="FirmwareVersionHeaderVersion" xml:space="preserve">
+    <value>Version</value>
+  </data>
+  <data name="StartProcedure" xml:space="preserve">
+    <value>Start</value>
+  </data>
+  <data name="StatusIdel" xml:space="preserve">
+    <value>Idel</value>
+  </data>
+  <data name="StatusUpdating" xml:space="preserve">
+    <value>Updating</value>
+  </data>
+  <data name="StatusSuccess" xml:space="preserve">
+    <value>Success</value>
+  </data>
+  <data name="StatusFail" xml:space="preserve">
+    <value>Fail</value>
+  </data>
+  <data name="StatusBarUpdating" xml:space="preserve">
+    <value>Processing {0}</value>
+  </data>
+  <data name="StatusBarFailed" xml:space="preserve">
+    <value>Process {0} Failed</value>
+  </data>
+  <data name="SnWoMisMatch" xml:space="preserve">
+    <value>Serial Number or WorkOrder Error</value>
+  </data>
+  <data name="ModelNameEmptyAlert" xml:space="preserve">
+    <value>Model Name is Required</value>
+  </data>
+  <data name="ModelNameMismatchAlert" xml:space="preserve">
+    <value>Model Name setting is Mismathed</value>
+  </data>
+  <data name="SerialNumberEmptyAlert" xml:space="preserve">
+    <value>Serial Number is Required</value>
+  </data>
+  <data name="ModelNameErrorAlert" xml:space="preserve">
+    <value>Model Name format Error</value>
+  </data>
+  <data name="FourGenVersionEmptyAlert" xml:space="preserve">
+    <value>4G Module Version is Required</value>
+  </data>
+  <data name="IccidEmptyAlert" xml:space="preserve">
+    <value>ICCID is Required when sim installed</value>
+  </data>
+  <data name="ImsiEmptyAlert" xml:space="preserve">
+    <value>IMSI is Required when sim installed</value>
+  </data>
+  <data name="FirmwareListNullAlert" xml:space="preserve">
+    <value>FirmwareUpdateModels should be decalred</value>
+  </data>
+  <data name="FirmwareNameEmptyAlert" xml:space="preserve">
+    <value>Firmware module name is Required</value>
+  </data>
+  <data name="FirmwareVersionEmptyAlert" xml:space="preserve">
+    <value>Firmware version is Required</value>
+  </data>
+  <data name="FirmwareFileEmptyAlert" xml:space="preserve">
+    <value>Firmware file is Required</value>
+  </data>
+  <data name="LoadConfigRootFolderNotfoundAlert" xml:space="preserve">
+    <value>Firmware root path ERROR</value>
+  </data>
+  <data name="LoadConfigFolderNotfoundAlert" xml:space="preserve">
+    <value>Firmware root path not exist</value>
+  </data>
+  <data name="LoadConfigModelFolderNotfoundAlert" xml:space="preserve">
+    <value>Model firmware root path not exist</value>
+  </data>
+  <data name="LoadConfigModelInitNotfoundAlert" xml:space="preserve">
+    <value>Model firmware setting not exist</value>
+  </data>
+  <data name="LoadConfigModelInitFormatErrorAlert" xml:space="preserve">
+    <value>Setting file ERROR</value>
+  </data>
+  <data name="InitModelNameEmptyAlert" xml:space="preserve">
+    <value>ModelName is requred</value>
+  </data>
+  <data name="InitModelNameErrorAlert" xml:space="preserve">
+    <value>ModelName format Error</value>
+  </data>
+  <data name="InitIccidEmptyAlert" xml:space="preserve">
+    <value>ICCID should not empty while IsSimInsert is set</value>
+  </data>
+  <data name="InitImsiEmptyAlert" xml:space="preserve">
+    <value>IMSI should not empty while IsSimInsert is set</value>
+  </data>
+  <data name="InitFirmwareNameEmptyAlert" xml:space="preserve">
+    <value>Firmware module name should not empty</value>
+  </data>
+  <data name="InitFirmwareVersionEmptyAlert" xml:space="preserve">
+    <value>Version should not empty while {0} firmware is set</value>
+  </data>
+  <data name="InitFirmwareFileEmptyAlert" xml:space="preserve">
+    <value>File name should not empty while {0} version is set</value>
+  </data>
+  <data name="InitFirmwareFileMissingAlert" xml:space="preserve">
+    <value>{0} Firemware file is missing</value>
+  </data>
+  <data name="InitFirmwareFileHeaderMismatchAlert" xml:space="preserve">
+    <value>{0} Firemware and ModelName is Mismatched</value>
+  </data>
+  <data name="InitFirmwareFileHeaderFormatAlert" xml:space="preserve">
+    <value>{0} Firemware header ERROR</value>
+  </data>
+  <data name="BtnPressHintTitle" xml:space="preserve">
+    <value>Starting Button test</value>
+  </data>
+  <data name="BtnPressUnpressHint" xml:space="preserve">
+    <value>Please make sure All button is Unpressed&amp;#x0a;Press Ok while complete</value>
+  </data>
+  <data name="BtnPressPressHint" xml:space="preserve">
+    <value>PRESS {0} 2 secnds</value>
+  </data>
+  <data name="BtnPressGreenBtn" xml:space="preserve">
+    <value>GREEN Button</value>
+  </data>
+  <data name="BtnPressBlueBtn" xml:space="preserve">
+    <value>BLUE Button</value>
+  </data>
+  <data name="BtnPressEmergencyBtn" xml:space="preserve">
+    <value></value>
+  </data>
+</root>

+ 300 - 0
AwInitilizer/Resx/AppResources.zh-CHS.resx

@@ -0,0 +1,300 @@
+<?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.
+    -->
+  <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>
+  <data name="Confirm" xml:space="preserve">
+    <value>确认</value>
+  </data>
+  <data name="SigninDialogTitle" xml:space="preserve">
+    <value>登入</value>
+  </data>
+  <data name="SigninDialogEnterIDHint" xml:space="preserve">
+    <value>输入员工证号</value>
+  </data>
+  <data name="SigninDialogEnterWOHint" xml:space="preserve">
+    <value>输入工单号</value>
+  </data>
+  <data name="SigninDialogEnterWOError" xml:space="preserve">
+    <value>工单号错误</value>
+  </data>
+  <data name="SigninDialogEnterIDError" xml:space="preserve">
+    <value>员工证号错误</value>
+  </data>
+  <data name="SigninDialogNoResponseError" xml:space="preserve">
+    <value>MES没有反应</value>
+  </data>
+  <data name="Account" xml:space="preserve">
+    <value>账户</value>
+  </data>
+  <data name="Logout" xml:space="preserve">
+    <value>注销</value>
+  </data>
+  <data name="UserID" xml:space="preserve">
+    <value>员工证号</value>
+  </data>
+  <data name="WorkOrder" xml:space="preserve">
+    <value>工单号</value>
+  </data>
+  <data name="BarcodeSetting" xml:space="preserve">
+    <value>Barcode信息</value>
+  </data>
+  <data name="ModelName" xml:space="preserve">
+    <value>Model Name</value>
+  </data>
+  <data name="SerialNumber" xml:space="preserve">
+    <value>Serial Number</value>
+  </data>
+  <data name="SimStatus" xml:space="preserve">
+    <value>SIM卡是否插入</value>
+  </data>
+  <data name="ICCID" xml:space="preserve">
+    <value>Sim卡ICCID</value>
+  </data>
+  <data name="IMSI" xml:space="preserve">
+    <value>Sim卡IMSI</value>
+  </data>
+  <data name="FirmwareVersion" xml:space="preserve">
+    <value>韧体版本</value>
+  </data>
+  <data name="FirmwareVersionHeaderName" xml:space="preserve">
+    <value>模块</value>
+  </data>
+  <data name="FirmwareVersionHeaderVersion" xml:space="preserve">
+    <value>版本</value>
+  </data>
+  <data name="StartProcedure" xml:space="preserve">
+    <value>开始</value>
+  </data>
+  <data name="StatusIdel" xml:space="preserve">
+    <value>闲置</value>
+  </data>
+  <data name="StatusUpdating" xml:space="preserve">
+    <value>更新中</value>
+  </data>
+  <data name="StatusSuccess" xml:space="preserve">
+    <value>成功</value>
+  </data>
+  <data name="StatusFail" xml:space="preserve">
+    <value>失败</value>
+  </data>
+  <data name="StatusBarUpdating" xml:space="preserve">
+    <value>{0} 处理中</value>
+  </data>
+  <data name="StatusBarFailed" xml:space="preserve">
+    <value>{0} 失败</value>
+  </data>
+  <data name="SnWoMisMatch" xml:space="preserve">
+    <value>序号或工单号错误</value>
+  </data>
+  <data name="ModelNameEmptyAlert" xml:space="preserve">
+    <value>Model Name不能为空</value>
+  </data>
+  <data name="ModelNameMismatchAlert" xml:space="preserve">
+    <value>Model Name不相同</value>
+  </data>
+  <data name="SerialNumberEmptyAlert" xml:space="preserve">
+    <value>Serial Number不能为空</value>
+  </data>
+  <data name="ModelNameErrorAlert" xml:space="preserve">
+    <value>Model Name格式错误</value>
+  </data>
+  <data name="FourGenVersionEmptyAlert" xml:space="preserve">
+    <value>4G模块版本不能为空</value>
+  </data>
+  <data name="IccidEmptyAlert" xml:space="preserve">
+    <value>当SIM卡插入则ICCID不能为空</value>
+  </data>
+  <data name="ImsiEmptyAlert" xml:space="preserve">
+    <value>当SIM卡插入则IMSI不能为空</value>
+  </data>
+  <data name="FirmwareListNullAlert" xml:space="preserve">
+    <value>必须宣告更新韧体列表</value>
+  </data>
+  <data name="FirmwareNameEmptyAlert" xml:space="preserve">
+    <value>韧体模块名称不能为空</value>
+  </data>
+  <data name="FirmwareVersionEmptyAlert" xml:space="preserve">
+    <value>韧体模块版本不能为空</value>
+  </data>
+  <data name="FirmwareFileEmptyAlert" xml:space="preserve">
+    <value>韧体更新档不能为空</value>
+  </data>
+  <data name="LoadConfigRootFolderNotfoundAlert" xml:space="preserve">
+    <value>韧体主目录错误</value>
+  </data>
+  <data name="LoadConfigFolderNotfoundAlert" xml:space="preserve">
+    <value>韧体主目录不存在</value>
+  </data>
+  <data name="LoadConfigModelFolderNotfoundAlert" xml:space="preserve">
+    <value>模块韧体目录不存在</value>
+  </data>
+  <data name="LoadConfigModelInitNotfoundAlert" xml:space="preserve">
+    <value>模块韧体配置文件不存在</value>
+  </data>
+  <data name="LoadConfigModelInitFormatErrorAlert" xml:space="preserve">
+    <value>模块韧体配置文件格示错误</value>
+  </data>
+  <data name="InitModelNameEmptyAlert" xml:space="preserve">
+    <value>ModelName不能为空</value>
+  </data>
+  <data name="InitModelNameErrorAlert" xml:space="preserve">
+    <value>ModelName格式错误</value>
+  </data>
+  <data name="InitIccidEmptyAlert" xml:space="preserve">
+    <value>当SIM卡插入则ICCID不能为空</value>
+  </data>
+  <data name="InitImsiEmptyAlert" xml:space="preserve">
+    <value>当SIM卡插入则IMSI不能为空</value>
+  </data>
+  <data name="InitFirmwareNameEmptyAlert" xml:space="preserve">
+    <value>韧体模块名称不能为空</value>
+  </data>
+  <data name="InitFirmwareVersionEmptyAlert" xml:space="preserve">
+    <value>{0}的版本不能为空</value>
+  </data>
+  <data name="InitFirmwareFileEmptyAlert" xml:space="preserve">
+    <value>{0}的韧体文件名不能为空</value>
+  </data>
+  <data name="InitFirmwareFileMissingAlert" xml:space="preserve">
+    <value>找不到{0}的韧体更新档</value>
+  </data>
+  <data name="InitFirmwareFileHeaderMismatchAlert" xml:space="preserve">
+    <value>{0}的韧体与Model Name不相同</value>
+  </data>
+  <data name="InitFirmwareFileHeaderFormatAlert" xml:space="preserve">
+    <value>{0}的韧体标题错误</value>
+  </data>
+  <data name="BtnPressHintTitle" xml:space="preserve">
+    <value>按钮测试</value>
+  </data>
+  <data name="BtnPressUnpressHint" xml:space="preserve">
+    <value>请确认所有按钮皆没有被按下&amp;#x0a;确认后按下下方确认</value>
+  </data>
+  <data name="BtnPressPressHint" xml:space="preserve">
+    <value>请按下{0}2秒后放开</value>
+  </data>
+  <data name="BtnPressGreenBtn" xml:space="preserve">
+    <value>绿色按钮</value>
+  </data>
+  <data name="BtnPressBlueBtn" xml:space="preserve">
+    <value>蓝色按钮</value>
+  </data>
+  <data name="BtnPressEmergencyBtn" xml:space="preserve">
+    <value>紧急按钮</value>
+  </data>
+</root>

+ 5 - 4
AwInitilizer/SigninDialog.xaml

@@ -4,6 +4,7 @@
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     xmlns:local="clr-namespace:AwInitilizer"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:resx="clr-namespace:AwInitilizer.Resx"
     Title="Signin"
     Width="800"
     Height="600"
@@ -23,7 +24,7 @@
             <Grid Grid.Row="0" Background="Gray">
                 <Label
                     x:Name="uxTitle"
-                    Content="{StaticResource SigninDialogTitle}"
+                    Content="{x:Static resx:AppResources.SigninDialogTitle}"
                     Foreground="White" />
             </Grid>
 
@@ -33,7 +34,7 @@
                         <Label
                             HorizontalAlignment="Center"
                             VerticalAlignment="Center"
-                            Content="{StaticResource SigninDialogEnterIDHint}"
+                            Content="{x:Static resx:AppResources.SigninDialogEnterIDHint}"
                             Foreground="Black" />
                         <Rectangle Height="10" />
                         <TextBox
@@ -46,7 +47,7 @@
                         <Label
                             HorizontalAlignment="Center"
                             VerticalAlignment="Center"
-                            Content="{StaticResource SigninDialogEnterWOHint}"
+                            Content="{x:Static resx:AppResources.SigninDialogEnterWOHint}"
                             Foreground="Black" />
                         <Rectangle Height="10" />
                         <TextBox
@@ -73,7 +74,7 @@
                             HorizontalAlignment="Center"
                             VerticalAlignment="Center"
                             Click="OK_Pressed">
-                            <Label x:Name="uxBtnText" Content="{StaticResource Confirm}" />
+                            <Label x:Name="uxBtnText" Content="{x:Static resx:AppResources.Confirm}" />
                         </Button>
                     </Grid>
                 </StackPanel>

+ 5 - 5
AwInitilizer/SigninDialog.xaml.cs

@@ -54,7 +54,7 @@ namespace AwInitilizer
             {
                 if (string.IsNullOrEmpty(id) || id.StartsWith("NG"))
                 {
-                    uxErrmsg.Content = (string)Application.Current.FindResource("SigninDialogEnterIDError");
+                    uxErrmsg.Content = Resx.AppResources.SigninDialogEnterIDError;
                     uxErrmsg.Visibility = Visibility.Visible;
                     return;
                 }
@@ -66,11 +66,11 @@ namespace AwInitilizer
                 if (id.StartsWith(idBackup))
                 {
                     //data not changed
-                    uxErrmsg.Content = (string)Application.Current.FindResource("SigninDialogNoResponseError");// "ID Error";
+                    uxErrmsg.Content = Resx.AppResources.SigninDialogNoResponseError;// "ID Error";
                 }
                 else
                 {
-                    uxErrmsg.Content = (string)Application.Current.FindResource("SigninDialogEnterIDError");// "ID Error";
+                    uxErrmsg.Content = Resx.AppResources.SigninDialogEnterIDError;// "ID Error";
                 }
                 uxErrmsg.Visibility = Visibility.Visible;
                 return;
@@ -83,7 +83,7 @@ namespace AwInitilizer
                 {
                     if (string.IsNullOrEmpty(workOrder) || workOrder.StartsWith("NG"))
                     {
-                        uxErrmsg.Content = (string)Application.Current.FindResource("SigninDialogEnterWOError");// "WorkOrder Error";
+                        uxErrmsg.Content = Resx.AppResources.SigninDialogEnterWOError;// "WorkOrder Error";
                         uxErrmsg.Visibility = Visibility.Visible;
                         return;
                     }
@@ -92,7 +92,7 @@ namespace AwInitilizer
                 }
                 else
                 {
-                    uxErrmsg.Content = (string)Application.Current.FindResource("SigninDialogEnterWOError");
+                    uxErrmsg.Content = Resx.AppResources.SigninDialogEnterWOError;
                     uxErrmsg.Visibility = Visibility.Visible;
                     return;
                 }

+ 2 - 1
AwInitilizer/packages.config

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
+  <package id="FluentFTP" version="37.0.2" targetFramework="net48" />
   <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net48" />
-  <package id="PhihongEv.Lib" version="1.0.1" targetFramework="net48" />
+  <package id="PhihongEv.Lib" version="1.0.3" targetFramework="net48" />
   <package id="RestSharp" version="106.15.0" targetFramework="net48" />
 </packages>

+ 286 - 40
AwInitlizerInstaller__Shinewave/AwInitlizerInstaller.vdproj

@@ -15,44 +15,74 @@
     {
         "Entry"
         {
-        "MsmKey" = "8:_4ACE81A26F57498497C01FCEF24C5677"
+        "MsmKey" = "8:_23B850A280A34D138F86E4E3E9D9A29B"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
-        "MsmKey" = "8:_4C24DDCC6109406588C5C64908FBF959"
+        "MsmKey" = "8:_5953AA619F714E40AA045177A7CEBEB0"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
-        "MsmKey" = "8:_6506F2CCC01D4EBAA64F5D4E68DCBCA6"
+        "MsmKey" = "8:_6CAC7C2066C3422CB67C80DFBD98B3B0"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
+        "MsmKey" = "8:_757BA0BD19C3D246BA621DB64DE2384D"
+        "OwnerKey" = "8:_75A660E899044A1CAA106DA8B79AB179"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
         "MsmKey" = "8:_75A660E899044A1CAA106DA8B79AB179"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
-        "MsmKey" = "8:_91B82B45B83E4867BFE4991A4F841B1F"
-        "OwnerKey" = "8:_UNDEFINED"
+        "MsmKey" = "8:_76D3D718C0BED37FDDB976B8A3E22508"
+        "OwnerKey" = "8:_75A660E899044A1CAA106DA8B79AB179"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
-        "MsmKey" = "8:_BA83042A5E704F2180F9D10B2C9FD511"
-        "OwnerKey" = "8:_UNDEFINED"
+        "MsmKey" = "8:_78ADCBE0D92EA001CDA0D5ECE8D69FA4"
+        "OwnerKey" = "8:_75A660E899044A1CAA106DA8B79AB179"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
-        "MsmKey" = "8:_BDFD7518ECC140B988E48EE6459634BB"
-        "OwnerKey" = "8:_UNDEFINED"
+        "MsmKey" = "8:_7D658408B60CD0F2FC44B11EB57FE632"
+        "OwnerKey" = "8:_E1A04E83A00FAEB0DBA8C6848960F80A"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_7D658408B60CD0F2FC44B11EB57FE632"
+        "OwnerKey" = "8:_75A660E899044A1CAA106DA8B79AB179"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_B8600797B452B36248A156626763434D"
+        "OwnerKey" = "8:_75A660E899044A1CAA106DA8B79AB179"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_E1A04E83A00FAEB0DBA8C6848960F80A"
+        "OwnerKey" = "8:_75A660E899044A1CAA106DA8B79AB179"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_EF0A09765240656B12178CC47F94CC01"
+        "OwnerKey" = "8:_75A660E899044A1CAA106DA8B79AB179"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
@@ -61,6 +91,54 @@
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
         }
+        "Entry"
+        {
+        "MsmKey" = "8:_UNDEFINED"
+        "OwnerKey" = "8:_757BA0BD19C3D246BA621DB64DE2384D"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_UNDEFINED"
+        "OwnerKey" = "8:_E1A04E83A00FAEB0DBA8C6848960F80A"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_UNDEFINED"
+        "OwnerKey" = "8:_7D658408B60CD0F2FC44B11EB57FE632"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_UNDEFINED"
+        "OwnerKey" = "8:_75A660E899044A1CAA106DA8B79AB179"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_UNDEFINED"
+        "OwnerKey" = "8:_B8600797B452B36248A156626763434D"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_UNDEFINED"
+        "OwnerKey" = "8:_EF0A09765240656B12178CC47F94CC01"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_UNDEFINED"
+        "OwnerKey" = "8:_78ADCBE0D92EA001CDA0D5ECE8D69FA4"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
+        "MsmKey" = "8:_UNDEFINED"
+        "OwnerKey" = "8:_76D3D718C0BED37FDDB976B8A3E22508"
+        "MsmSig" = "8:_UNDEFINED"
+        }
     }
     "Configurations"
     {
@@ -161,12 +239,12 @@
         }
         "File"
         {
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_4ACE81A26F57498497C01FCEF24C5677"
+            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_23B850A280A34D138F86E4E3E9D9A29B"
             {
-            "SourcePath" = "8:..\\AwInitilizer\\Cultures\\StringResource.en-US.xaml"
-            "TargetName" = "8:StringResource.en-US.xaml"
+            "SourcePath" = "8:..\\..\\..\\MES\\shinewave_6.2.41.6\\SajetConnect.dll"
+            "TargetName" = "8:SajetConnect.dll"
             "Tag" = "8:"
-            "Folder" = "8:_86259A374A5843AD9608FFCDF2EFE3AD"
+            "Folder" = "8:_DE11C1EA8CD74CA9820344EFA2A02676"
             "Condition" = "8:"
             "Transitive" = "11:FALSE"
             "Vital" = "11:TRUE"
@@ -181,12 +259,23 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_4C24DDCC6109406588C5C64908FBF959"
+            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_5953AA619F714E40AA045177A7CEBEB0"
             {
-            "SourcePath" = "8:..\\AwInitilizer\\Cultures\\StringResource.zh-CHS.xaml"
-            "TargetName" = "8:StringResource.zh-CHS.xaml"
+            "AssemblyRegister" = "3:1"
+            "AssemblyIsInGAC" = "11:FALSE"
+            "AssemblyAsmDisplayName" = "8:AwInitilizer.resources, Version=0.0.0.0, Culture=zh-CHS, processorArchitecture=MSIL"
+                "ScatterAssemblies"
+                {
+                    "_5953AA619F714E40AA045177A7CEBEB0"
+                    {
+                    "Name" = "8:AwInitilizer.resources.dll"
+                    "Attributes" = "3:512"
+                    }
+                }
+            "SourcePath" = "8:..\\AwInitilizer\\bin\\Release\\zh-CHS\\AwInitilizer.resources.dll"
+            "TargetName" = "8:"
             "Tag" = "8:"
-            "Folder" = "8:_86259A374A5843AD9608FFCDF2EFE3AD"
+            "Folder" = "8:_8F566B14076B4C1D82C6453657F4DA04"
             "Condition" = "8:"
             "Transitive" = "11:FALSE"
             "Vital" = "11:TRUE"
@@ -201,12 +290,12 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6506F2CCC01D4EBAA64F5D4E68DCBCA6"
+            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6CAC7C2066C3422CB67C80DFBD98B3B0"
             {
-            "SourcePath" = "8:..\\AwInitilizer\\Cultures\\StringResource.zh-TW.xaml"
-            "TargetName" = "8:StringResource.zh-TW.xaml"
+            "SourcePath" = "8:..\\..\\..\\MES\\shinewave_6.2.41.6\\DLL.INI"
+            "TargetName" = "8:DLL.INI"
             "Tag" = "8:"
-            "Folder" = "8:_86259A374A5843AD9608FFCDF2EFE3AD"
+            "Folder" = "8:_DE11C1EA8CD74CA9820344EFA2A02676"
             "Condition" = "8:"
             "Transitive" = "11:FALSE"
             "Vital" = "11:TRUE"
@@ -221,12 +310,23 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_91B82B45B83E4867BFE4991A4F841B1F"
+            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_757BA0BD19C3D246BA621DB64DE2384D"
             {
-            "SourcePath" = "8:..\\AwInitilizer\\Cultures\\StringResource.xaml"
-            "TargetName" = "8:StringResource.xaml"
+            "AssemblyRegister" = "3:1"
+            "AssemblyIsInGAC" = "11:FALSE"
+            "AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
+                "ScatterAssemblies"
+                {
+                    "_757BA0BD19C3D246BA621DB64DE2384D"
+                    {
+                    "Name" = "8:System.Net.Http.dll"
+                    "Attributes" = "3:512"
+                    }
+                }
+            "SourcePath" = "8:System.Net.Http.dll"
+            "TargetName" = "8:"
             "Tag" = "8:"
-            "Folder" = "8:_86259A374A5843AD9608FFCDF2EFE3AD"
+            "Folder" = "8:_DE11C1EA8CD74CA9820344EFA2A02676"
             "Condition" = "8:"
             "Transitive" = "11:FALSE"
             "Vital" = "11:TRUE"
@@ -238,13 +338,24 @@
             "PackageAs" = "3:1"
             "Register" = "3:1"
             "Exclude" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
+            "IsDependency" = "11:TRUE"
             "IsolateTo" = "8:"
             }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BA83042A5E704F2180F9D10B2C9FD511"
+            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_76D3D718C0BED37FDDB976B8A3E22508"
             {
-            "SourcePath" = "8:..\\..\\..\\MES\\SajetConnect\\SajetConnect.dll"
-            "TargetName" = "8:SajetConnect.dll"
+            "AssemblyRegister" = "3:1"
+            "AssemblyIsInGAC" = "11:FALSE"
+            "AssemblyAsmDisplayName" = "8:FluentFTP, Version=37.0.2.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL"
+                "ScatterAssemblies"
+                {
+                    "_76D3D718C0BED37FDDB976B8A3E22508"
+                    {
+                    "Name" = "8:FluentFTP.dll"
+                    "Attributes" = "3:512"
+                    }
+                }
+            "SourcePath" = "8:FluentFTP.dll"
+            "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_DE11C1EA8CD74CA9820344EFA2A02676"
             "Condition" = "8:"
@@ -258,13 +369,24 @@
             "PackageAs" = "3:1"
             "Register" = "3:1"
             "Exclude" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
+            "IsDependency" = "11:TRUE"
             "IsolateTo" = "8:"
             }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BDFD7518ECC140B988E48EE6459634BB"
+            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_78ADCBE0D92EA001CDA0D5ECE8D69FA4"
             {
-            "SourcePath" = "8:..\\..\\..\\MES\\SajetConnect\\DLL.INI"
-            "TargetName" = "8:DLL.INI"
+            "AssemblyRegister" = "3:1"
+            "AssemblyIsInGAC" = "11:FALSE"
+            "AssemblyAsmDisplayName" = "8:Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
+                "ScatterAssemblies"
+                {
+                    "_78ADCBE0D92EA001CDA0D5ECE8D69FA4"
+                    {
+                    "Name" = "8:Newtonsoft.Json.dll"
+                    "Attributes" = "3:512"
+                    }
+                }
+            "SourcePath" = "8:Newtonsoft.Json.dll"
+            "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_DE11C1EA8CD74CA9820344EFA2A02676"
             "Condition" = "8:"
@@ -278,7 +400,131 @@
             "PackageAs" = "3:1"
             "Register" = "3:1"
             "Exclude" = "11:FALSE"
-            "IsDependency" = "11:FALSE"
+            "IsDependency" = "11:TRUE"
+            "IsolateTo" = "8:"
+            }
+            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_7D658408B60CD0F2FC44B11EB57FE632"
+            {
+            "AssemblyRegister" = "3:1"
+            "AssemblyIsInGAC" = "11:FALSE"
+            "AssemblyAsmDisplayName" = "8:PhihongEv.Lib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
+                "ScatterAssemblies"
+                {
+                    "_7D658408B60CD0F2FC44B11EB57FE632"
+                    {
+                    "Name" = "8:PhihongEv.Lib.dll"
+                    "Attributes" = "3:512"
+                    }
+                }
+            "SourcePath" = "8:PhihongEv.Lib.dll"
+            "TargetName" = "8:"
+            "Tag" = "8:"
+            "Folder" = "8:_DE11C1EA8CD74CA9820344EFA2A02676"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Vital" = "11:TRUE"
+            "ReadOnly" = "11:FALSE"
+            "Hidden" = "11:FALSE"
+            "System" = "11:FALSE"
+            "Permanent" = "11:FALSE"
+            "SharedLegacy" = "11:FALSE"
+            "PackageAs" = "3:1"
+            "Register" = "3:1"
+            "Exclude" = "11:FALSE"
+            "IsDependency" = "11:TRUE"
+            "IsolateTo" = "8:"
+            }
+            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_B8600797B452B36248A156626763434D"
+            {
+            "AssemblyRegister" = "3:1"
+            "AssemblyIsInGAC" = "11:FALSE"
+            "AssemblyAsmDisplayName" = "8:RestSharp, Version=106.15.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75, processorArchitecture=MSIL"
+                "ScatterAssemblies"
+                {
+                    "_B8600797B452B36248A156626763434D"
+                    {
+                    "Name" = "8:RestSharp.dll"
+                    "Attributes" = "3:512"
+                    }
+                }
+            "SourcePath" = "8:RestSharp.dll"
+            "TargetName" = "8:"
+            "Tag" = "8:"
+            "Folder" = "8:_DE11C1EA8CD74CA9820344EFA2A02676"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Vital" = "11:TRUE"
+            "ReadOnly" = "11:FALSE"
+            "Hidden" = "11:FALSE"
+            "System" = "11:FALSE"
+            "Permanent" = "11:FALSE"
+            "SharedLegacy" = "11:FALSE"
+            "PackageAs" = "3:1"
+            "Register" = "3:1"
+            "Exclude" = "11:FALSE"
+            "IsDependency" = "11:TRUE"
+            "IsolateTo" = "8:"
+            }
+            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_E1A04E83A00FAEB0DBA8C6848960F80A"
+            {
+            "AssemblyRegister" = "3:1"
+            "AssemblyIsInGAC" = "11:FALSE"
+            "AssemblyAsmDisplayName" = "8:MesAdaptor, Version=1.6.0.0, Culture=neutral, processorArchitecture=MSIL"
+                "ScatterAssemblies"
+                {
+                    "_E1A04E83A00FAEB0DBA8C6848960F80A"
+                    {
+                    "Name" = "8:MesAdaptor.dll"
+                    "Attributes" = "3:512"
+                    }
+                }
+            "SourcePath" = "8:MesAdaptor.dll"
+            "TargetName" = "8:"
+            "Tag" = "8:"
+            "Folder" = "8:_DE11C1EA8CD74CA9820344EFA2A02676"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Vital" = "11:TRUE"
+            "ReadOnly" = "11:FALSE"
+            "Hidden" = "11:FALSE"
+            "System" = "11:FALSE"
+            "Permanent" = "11:FALSE"
+            "SharedLegacy" = "11:FALSE"
+            "PackageAs" = "3:1"
+            "Register" = "3:1"
+            "Exclude" = "11:FALSE"
+            "IsDependency" = "11:TRUE"
+            "IsolateTo" = "8:"
+            }
+            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_EF0A09765240656B12178CC47F94CC01"
+            {
+            "AssemblyRegister" = "3:1"
+            "AssemblyIsInGAC" = "11:FALSE"
+            "AssemblyAsmDisplayName" = "8:PhihongEv.Lib, Version=1.0.3.0, Culture=neutral, processorArchitecture=MSIL"
+                "ScatterAssemblies"
+                {
+                    "_EF0A09765240656B12178CC47F94CC01"
+                    {
+                    "Name" = "8:PhihongEv.Lib.dll"
+                    "Attributes" = "3:512"
+                    }
+                }
+            "SourcePath" = "8:PhihongEv.Lib.dll"
+            "TargetName" = "8:"
+            "Tag" = "8:"
+            "Folder" = "8:_DE11C1EA8CD74CA9820344EFA2A02676"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Vital" = "11:TRUE"
+            "ReadOnly" = "11:FALSE"
+            "Hidden" = "11:FALSE"
+            "System" = "11:FALSE"
+            "Permanent" = "11:FALSE"
+            "SharedLegacy" = "11:FALSE"
+            "PackageAs" = "3:1"
+            "Register" = "3:1"
+            "Exclude" = "11:FALSE"
+            "IsDependency" = "11:TRUE"
             "IsolateTo" = "8:"
             }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_FC54EA0B74F94E9BB6358BFC450FAB07"
@@ -339,13 +585,13 @@
             "Property" = "8:TARGETDIR"
                 "Folders"
                 {
-                    "{9EF0B969-E518-4E46-987F-47570745A589}:_86259A374A5843AD9608FFCDF2EFE3AD"
+                    "{9EF0B969-E518-4E46-987F-47570745A589}:_8F566B14076B4C1D82C6453657F4DA04"
                     {
-                    "Name" = "8:Cultures"
-                    "AlwaysCreate" = "11:TRUE"
+                    "Name" = "8:zh-CHS"
+                    "AlwaysCreate" = "11:FALSE"
                     "Condition" = "8:"
                     "Transitive" = "11:FALSE"
-                    "Property" = "8:_2D923104468D437E9FAC97B371829031"
+                    "Property" = "8:_05AB4EB6BDE64AF38FCE5FECC53B7F1B"
                         "Folders"
                         {
                         }
@@ -380,7 +626,7 @@
         "Name" = "8:Microsoft Visual Studio"
         "ProductName" = "8:DCInitializerr"
         "ProductCode" = "8:{57BF893C-BD30-40C3-8C04-55FFFC6E3FFE}"
-        "PackageCode" = "8:{5A4E9C23-BDC4-4756-BE40-AFD176F198A6}"
+        "PackageCode" = "8:{7A1B72F1-45AB-41C5-8E7A-0C5DA58B0116}"
         "UpgradeCode" = "8:{926B8A82-19A1-436D-A0E4-216EF638690B}"
         "AspNetVersion" = "8:4.0.30319.0"
         "RestartWWWService" = "11:FALSE"
@@ -915,7 +1161,7 @@
         {
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_75A660E899044A1CAA106DA8B79AB179"
             {
-            "SourcePath" = "8:..\\AwInitilizer\\obj\\Debug\\AwInitilizer.exe"
+            "SourcePath" = "8:..\\AwInitilizer\\obj\\Release\\AwInitilizer.exe"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_DE11C1EA8CD74CA9820344EFA2A02676"

+ 1 - 1
GitVersion.yml

@@ -1,6 +1,6 @@
 assembly-versioning-scheme: MajorMinorPatch
 assembly-informational-format: '{ShortSha}'
-next-version: 1.5.8
+next-version: 1.6.1
 branches: {}
 ignore:
   sha: []

+ 3 - 3
Initilizer/AssemblyInfo.cs

@@ -9,7 +9,7 @@
                                               // app, or any theme specific resource dictionaries)
 )]
 
-[assembly: AssemblyVersion("1.5.8.0")]
-[assembly: AssemblyFileVersion("1.5.8.0")]
-[assembly: AssemblyInformationalVersion("a87684c")]
+[assembly: AssemblyVersion("1.6.0.0")]
+[assembly: AssemblyFileVersion("1.6.0.0")]
+[assembly: AssemblyInformationalVersion("4aea395")]
 

+ 17 - 228
InitlizerInstaller_Sajet2/InitlizerInstaller_Sajet2.vdproj

@@ -13,12 +13,6 @@
 "SccProvider" = "8:"
     "Hierarchy"
     {
-        "Entry"
-        {
-        "MsmKey" = "8:_05118EF2A43ED0B9AAA125F381D74BBE"
-        "OwnerKey" = "8:_1E2630DF7F31454B836B15CC7791A115"
-        "MsmSig" = "8:_UNDEFINED"
-        }
         "Entry"
         {
         "MsmKey" = "8:_1E2630DF7F31454B836B15CC7791A115"
@@ -27,12 +21,6 @@
         }
         "Entry"
         {
-        "MsmKey" = "8:_26DE58F16DE805EBB03819CFE8E5F976"
-        "OwnerKey" = "8:_1E2630DF7F31454B836B15CC7791A115"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
         "MsmKey" = "8:_330207E296364CE0BFA2933846203104"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
@@ -69,76 +57,16 @@
         }
         "Entry"
         {
-        "MsmKey" = "8:_952052ABD49E9A4C5BCED21B0492D94B"
-        "OwnerKey" = "8:_05118EF2A43ED0B9AAA125F381D74BBE"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_952052ABD49E9A4C5BCED21B0492D94B"
-        "OwnerKey" = "8:_1E2630DF7F31454B836B15CC7791A115"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_B88A49CE40C9CD286D9008072F1929EB"
-        "OwnerKey" = "8:_1E2630DF7F31454B836B15CC7791A115"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
         "MsmKey" = "8:_CE59ED9B4E2D416895DC495AC1D0814C"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
-        "MsmKey" = "8:_DBCC43BD7338AA54B1F2BB1368D59976"
-        "OwnerKey" = "8:_1E2630DF7F31454B836B15CC7791A115"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
         "MsmKey" = "8:_F5941CF2A2414414B709B2B9F4989BF4"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
         }
-        "Entry"
-        {
-        "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_1E2630DF7F31454B836B15CC7791A115"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_DBCC43BD7338AA54B1F2BB1368D59976"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_B88A49CE40C9CD286D9008072F1929EB"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_05118EF2A43ED0B9AAA125F381D74BBE"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_952052ABD49E9A4C5BCED21B0492D94B"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_26DE58F16DE805EBB03819CFE8E5F976"
-        "MsmSig" = "8:_UNDEFINED"
-        }
     }
     "Configurations"
     {
@@ -164,6 +92,14 @@
             "PrerequisitesLocation" = "2:1"
             "Url" = "8:"
             "ComponentsUrl" = "8:"
+                "Items"
+                {
+                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2"
+                    {
+                    "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)"
+                    "ProductCode" = "8:.NETFramework,Version=v4.7.2"
+                    }
+                }
             }
         }
         "Release"
@@ -188,6 +124,14 @@
             "PrerequisitesLocation" = "2:1"
             "Url" = "8:"
             "ComponentsUrl" = "8:"
+                "Items"
+                {
+                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2"
+                    {
+                    "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)"
+                    "ProductCode" = "8:.NETFramework,Version=v4.7.2"
+                    }
+                }
             }
         }
     }
@@ -218,68 +162,6 @@
         }
         "File"
         {
-            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_05118EF2A43ED0B9AAA125F381D74BBE"
-            {
-            "AssemblyRegister" = "3:1"
-            "AssemblyIsInGAC" = "11:FALSE"
-            "AssemblyAsmDisplayName" = "8:MesAdaptor, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL"
-                "ScatterAssemblies"
-                {
-                    "_05118EF2A43ED0B9AAA125F381D74BBE"
-                    {
-                    "Name" = "8:MesAdaptor.dll"
-                    "Attributes" = "3:512"
-                    }
-                }
-            "SourcePath" = "8:MesAdaptor.dll"
-            "TargetName" = "8:"
-            "Tag" = "8:"
-            "Folder" = "8:_E5F879CDCC274890A7E702C0B4B6B46A"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:TRUE"
-            "IsolateTo" = "8:"
-            }
-            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_26DE58F16DE805EBB03819CFE8E5F976"
-            {
-            "AssemblyRegister" = "3:1"
-            "AssemblyIsInGAC" = "11:FALSE"
-            "AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
-                "ScatterAssemblies"
-                {
-                    "_26DE58F16DE805EBB03819CFE8E5F976"
-                    {
-                    "Name" = "8:System.Net.Http.dll"
-                    "Attributes" = "3:512"
-                    }
-                }
-            "SourcePath" = "8:System.Net.Http.dll"
-            "TargetName" = "8:"
-            "Tag" = "8:"
-            "Folder" = "8:_E5F879CDCC274890A7E702C0B4B6B46A"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:TRUE"
-            "IsolateTo" = "8:"
-            }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_330207E296364CE0BFA2933846203104"
             {
             "SourcePath" = "8:..\\AwInitilizer\\Cultures\\StringResource.zh-CHS.xaml"
@@ -400,68 +282,6 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
-            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_952052ABD49E9A4C5BCED21B0492D94B"
-            {
-            "AssemblyRegister" = "3:1"
-            "AssemblyIsInGAC" = "11:FALSE"
-            "AssemblyAsmDisplayName" = "8:PhihongEv.Lib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
-                "ScatterAssemblies"
-                {
-                    "_952052ABD49E9A4C5BCED21B0492D94B"
-                    {
-                    "Name" = "8:PhihongEv.Lib.dll"
-                    "Attributes" = "3:512"
-                    }
-                }
-            "SourcePath" = "8:PhihongEv.Lib.dll"
-            "TargetName" = "8:"
-            "Tag" = "8:"
-            "Folder" = "8:_E5F879CDCC274890A7E702C0B4B6B46A"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:TRUE"
-            "IsolateTo" = "8:"
-            }
-            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_B88A49CE40C9CD286D9008072F1929EB"
-            {
-            "AssemblyRegister" = "3:1"
-            "AssemblyIsInGAC" = "11:FALSE"
-            "AssemblyAsmDisplayName" = "8:Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
-                "ScatterAssemblies"
-                {
-                    "_B88A49CE40C9CD286D9008072F1929EB"
-                    {
-                    "Name" = "8:Newtonsoft.Json.dll"
-                    "Attributes" = "3:512"
-                    }
-                }
-            "SourcePath" = "8:Newtonsoft.Json.dll"
-            "TargetName" = "8:"
-            "Tag" = "8:"
-            "Folder" = "8:_E5F879CDCC274890A7E702C0B4B6B46A"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:TRUE"
-            "IsolateTo" = "8:"
-            }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CE59ED9B4E2D416895DC495AC1D0814C"
             {
             "SourcePath" = "8:..\\AwInitilizer\\Cultures\\StringResource.xaml"
@@ -482,37 +302,6 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
-            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_DBCC43BD7338AA54B1F2BB1368D59976"
-            {
-            "AssemblyRegister" = "3:1"
-            "AssemblyIsInGAC" = "11:FALSE"
-            "AssemblyAsmDisplayName" = "8:RestSharp, Version=106.11.7.0, Culture=neutral, PublicKeyToken=598062e77f915f75, processorArchitecture=MSIL"
-                "ScatterAssemblies"
-                {
-                    "_DBCC43BD7338AA54B1F2BB1368D59976"
-                    {
-                    "Name" = "8:RestSharp.dll"
-                    "Attributes" = "3:512"
-                    }
-                }
-            "SourcePath" = "8:RestSharp.dll"
-            "TargetName" = "8:"
-            "Tag" = "8:"
-            "Folder" = "8:_E5F879CDCC274890A7E702C0B4B6B46A"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:TRUE"
-            "IsolateTo" = "8:"
-            }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F5941CF2A2414414B709B2B9F4989BF4"
             {
             "SourcePath" = "8:..\\AwInitilizer\\Cultures\\StringResource.en-US.xaml"
@@ -620,7 +409,7 @@
         "DetectNewerInstalledVersion" = "11:TRUE"
         "InstallAllUsers" = "11:FALSE"
         "ProductVersion" = "8:1.5.1"
-        "Manufacturer" = "8:8019"
+        "Manufacturer" = "8:Phihong"
         "ARPHELPTELEPHONE" = "8:"
         "ARPHELPLINK" = "8:"
         "Title" = "8:InitlizerInstaller_Sajet2"

+ 4 - 4
MesAdaptor/Properties/AssemblyInfo.cs

@@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
 //
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.5.8.0")]
-[assembly: AssemblyVersion("1.5.8.0")]
-[assembly: AssemblyFileVersion("1.5.8.0")]
-[assembly: AssemblyInformationalVersion("a87684c")]
+// [assembly: AssemblyVersion("1.6.0.0")]
+[assembly: AssemblyVersion("1.6.0.0")]
+[assembly: AssemblyFileVersion("1.6.0.0")]
+[assembly: AssemblyInformationalVersion("4aea395")]

+ 2 - 1
MesAdaptor/SajectConnectSajet2.cs

@@ -180,6 +180,7 @@ namespace MesAdaptor
                 var isSuccess = data.IsSuccess;
 
                 value = value.Trim();
+                var det = isSuccess ? "0" : "1";
 
                 if (string.IsNullOrEmpty(value))
                 {
@@ -194,7 +195,7 @@ namespace MesAdaptor
                     value = "1";
                 }
 
-                var msg = string.Format("{0};{1};{2};{3};{4}:{5}:{6};", userId, _MechineCode, systemID.ModelName.ToString(), systemID.ToString(), key, value, isSuccess);
+                var msg = string.Format("{0};{1};{2};{3};{4}:{5}:{6};", userId, _MechineCode, systemID.ModelName.ToString(), systemID.ToString(), key, value, det);
                 var result = SajetTransData(CMD.ValueReport, ref msg);
                 totalResult &= result;
             }