AppManager.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using System;
  2. using System.IO;
  3. using System.Windows.Media.Imaging;
  4. using System.Windows.Threading;
  5. using vCloud.GeneratePackages.Entitys;
  6. using vCloud.GeneratePackages.Utilities;
  7. using Vinno.IUS.Common.Utilities;
  8. namespace vCloud.GeneratePackages.Tool
  9. {
  10. public class AppManager
  11. {
  12. private static AppManager _instance;
  13. private static ZipHelper _zipHelper;
  14. private static DescriptionUpdater _updater;
  15. private static string _appConfigFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "AppSettings.cfg");
  16. private static string _ftpLocal = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "FtpLocal");
  17. private static string _outputdir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Output");
  18. private static string _installPackagePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "InstallPackage");
  19. private static string _deploymentToolPath = Path.Combine(_installPackagePath, "DeploymentTool");
  20. private static string _outDeploymentToolPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DeploymentTool");
  21. private static string _deployPackage = Path.Combine(_outDeploymentToolPath, "DeployPackage");
  22. private Version _upgradePackagesVersion;
  23. private FlyinsonoVersionResult _languageInfoDes;
  24. /// <summary>
  25. /// The unique instance of app manager
  26. /// </summary>
  27. public static AppManager Instance => _instance ?? (_instance = new AppManager());
  28. /// <summary>
  29. /// Package client data in pak
  30. /// </summary>
  31. public bool PackageClientData{ get; set; }
  32. /// <summary>
  33. /// is need upload server package
  34. /// </summary>
  35. public bool IsNeedRemoteDeployment { get; set; }
  36. /// <summary>
  37. /// The main dispatcher
  38. /// </summary>
  39. public static Dispatcher MainDispatcher { get; set; }
  40. /// <summary>
  41. /// Support languages
  42. /// </summary>
  43. /// <summary>
  44. /// Zip file icon
  45. /// </summary>
  46. public BitmapImage ZipFileIcon { get; private set; }
  47. /// <summary>
  48. /// app Settings
  49. /// </summary>
  50. public AppSettings AppSettings { get; }
  51. private AppManager()
  52. {
  53. var content = File.ReadAllText(_appConfigFile);
  54. AppSettings = JsonHelper.DeserializerJsonResult<AppSettings>(content);
  55. _updater = new DescriptionUpdater();
  56. _upgradePackagesVersion = new Version();
  57. IsNeedRemoteDeployment = true;
  58. }
  59. //Save ftp Url
  60. public void SaveFtpUrl(string url)
  61. {
  62. AppSettings.FtpUrl = url;
  63. var content = JsonHelper.SerializerToJsonString<AppSettings>(AppSettings);
  64. File.WriteAllText(_appConfigFile, content);
  65. }
  66. /// <summary>
  67. /// Initialize
  68. /// </summary>
  69. public void Initialize()
  70. {
  71. var assembly = GetType().Assembly;
  72. var assemblyName = assembly.GetName().Name;
  73. var resourcePath = $"{assemblyName}.Images.compressed.png";
  74. var stream = assembly.GetManifestResourceStream(resourcePath);
  75. if (stream != null)
  76. {
  77. byte[] bytes = new byte[stream.Length];
  78. stream.Read(bytes, 0, bytes.Length);
  79. stream.Seek(0, SeekOrigin.Begin);
  80. var bitmapImage = new BitmapImage();
  81. bitmapImage.BeginInit();
  82. bitmapImage.StreamSource = new MemoryStream(bytes);
  83. bitmapImage.EndInit();
  84. ZipFileIcon = bitmapImage;
  85. }
  86. _zipHelper = new ZipHelper();
  87. }
  88. /// <summary>
  89. /// Do a modal action, user can not do other things before the action finished
  90. /// </summary>
  91. /// <param name="action"></param>
  92. /// <param name="description"></param>
  93. public static void DoModalAction(Action action, string description = null, string title = null, IDescriptionUpdater descriptionUpdater = null, Action contiueAction = null)
  94. {
  95. var modalActionWindow = new ModalActionWindow(action, descriptionUpdater, description, title);
  96. modalActionWindow.Owner = System.Windows.Application.Current.MainWindow;
  97. modalActionWindow.ShowDialog();
  98. }
  99. }
  100. }