using Resources; using System; using System.Drawing; using System.IO; using System.Reflection; using System.Text; using System.Windows.Forms; namespace SmartCoalApplication.Resources { /// /// 特定的本应用程序相关的功能 /// public static class PdnInfo { private static Icon appIcon; public static Icon AppIcon { get { if (appIcon == null) { Stream stream = PdnResources.GetResourceStream("Icons.sanas.ico"); appIcon = new Icon(stream); stream.Close(); } return appIcon; } } public static DateTime BuildTime { get { Version version = GetVersion(); DateTime time = new DateTime(2000, 1, 1, 0, 0, 0); time = time.AddDays(version.Build); time = time.AddSeconds(version.Revision * 2); return time; } } /// /// Gets the full path to where user customization files should be stored. /// /// /// User data files should include settings or customizations that don't go into data files such as *.PDN. /// An example of a user data file is a color palette. /// public static string UserDataPath { get { string myDocsPath = SystemLayer.Shell.GetVirtualPath(SystemLayer.VirtualFolderName.UserDocuments, true); string userDataDirName = PdnResources.GetString("SystemLayer.UserDataDirName"); string userDataPath = Path.Combine(myDocsPath, userDataDirName); return userDataPath; } } private static string GetAppConfig() { object[] attributes = typeof(PdnInfo).Assembly.GetCustomAttributes(typeof(AssemblyConfigurationAttribute), false); AssemblyConfigurationAttribute aca = (AssemblyConfigurationAttribute)attributes[0]; return aca.Configuration; } private static readonly bool isFinalBuild = GetIsFinalBuild(); private static bool GetIsFinalBuild() { return !(GetAppConfig().IndexOf("Final", StringComparison.OrdinalIgnoreCase) == -1); } public static bool IsFinalBuild { get { return isFinalBuild; } } public static bool IsDebugBuild { get { return false; } } public const int BetaExpireTimeDays = 60; public static DateTime ExpirationDate { get { if (PdnInfo.IsFinalBuild && !IsDebugBuild) { return DateTime.MaxValue; } else { return PdnInfo.BuildTime + new TimeSpan(BetaExpireTimeDays, 0, 0, 0); } } } public static string GetApplicationDir() { string appPath = Application.StartupPath; return appPath; } public static string GetProductName(bool withTag) { string bareProductName = GetBareProductName(); string productNameFormat = PdnResources.GetString("Application.ProductName.Format"); string tag; if (withTag) { string tagFormat = PdnResources.GetString("Application.ProductName.Tag.Format"); tag = string.Format(tagFormat, GetAppConfig()); } else { tag = string.Empty; } string version = "1.10"; string productName = string.Format( productNameFormat, bareProductName, version, tag); return productName; } public static string GetBareProductName() { return "SANAS Vision"; } private static string copyrightString = null; public static string GetCopyrightString() { copyrightString = "Copyright 2020 HuiHong. All rights reserved."; return copyrightString; } public static Version GetVersion() { return new Version(Application.ProductVersion); } public static string GetVersionNumberString(Version version, int fieldCount) { if (fieldCount < 1 || fieldCount > 4) { throw new ArgumentOutOfRangeException("fieldCount", "must be in the range [1, 4]"); } StringBuilder sb = new StringBuilder(); sb.Append(version.Major.ToString()); if (fieldCount >= 2) { //sb.AppendFormat(".{0}", version.Minor.ToString("D2")); } if (fieldCount >= 3) { sb.AppendFormat(".{0}", version.Build.ToString()); } if (fieldCount == 4) { sb.AppendFormat(".{0}", version.Revision.ToString()); } return sb.ToString(); } public static string GetFullAppName() { return PdnInfo.GetProductName(false); } public static string GetAppName() { if (PdnInfo.IsFinalBuild && !PdnInfo.IsDebugBuild) { return PdnInfo.GetProductName(false); } else { return GetFullAppName(); } } } }