public SetupFile(string fileName, string baseFolder = null) { if (System.IO.File.Exists(fileName)) { File = Path.GetFileName(fileName); if (Path.GetExtension(fileName).Equals(".exe", StringComparison.InvariantCultureIgnoreCase) || Path.GetExtension(fileName).Equals(".dll", StringComparison.InvariantCultureIgnoreCase)) { FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(fileName); Version = new Base.Version(fvi.FileVersion ?? "0.0.0.0"); Description = fvi.FileDescription ?? Path.GetFileNameWithoutExtension(fileName); } else { Version = new Base.Version(); Description = Path.GetExtension(fileName).ToLower() + " FILE"; } FileInfo fi = new FileInfo(fileName); Size = fi.Length; CreationTime = IO.FileCreationTime(fileName); MD5 = IO.MD5(fileName); if (string.IsNullOrEmpty(baseFolder)) { baseFolder = Path.GetDirectoryName(fileName); } if (!baseFolder.EndsWith(Path.DirectorySeparatorChar.ToString())) { baseFolder += Path.DirectorySeparatorChar; } if (fileName.StartsWith(baseFolder, StringComparison.InvariantCultureIgnoreCase)) { if (Path.GetDirectoryName(fileName).Length > baseFolder.Length) { Folder = Path.GetDirectoryName(fileName).Substring(baseFolder.Length); } else { Folder = ""; } } else { Folder = baseFolder; } } }
public bool Assign(object value) { if (value is SetupFile v) { File = v.File; Version = (Base.Version)v.Version.Clone(); Description = v.Description; MD5 = v.MD5; Size = v.Size; CreationTime = v.CreationTime; Folder = v.Folder; FileFlags = v.FileFlags; return(true); } return(false); }
/// <summary> /// Cria instância de FileEntry a partir de informações /// </summary> /// <param name="fileName"></param> /// <param name="basePath"></param> /// <param name="md5"></param> /// <param name="fileTime"></param> /// <param name="fileSize"></param> public FileEntry(string fileName, string basePath, string md5, DateTime fileTime, long fileSize, object version) { if (string.IsNullOrEmpty(fileName)) { throw new ArgumentNullException("fileName"); } if (fileName.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0) { throw new ArgumentException("Invalid fileName"); } if (!IO.IsMD5(md5)) { throw new ArgumentException("Invalid md5"); } if (fileSize <= 0) { throw new ArgumentOutOfRangeException("fileSize", "must be 0 or greater"); } if (version != null) { if (version is string) { _version = new Base.Version((string)version); } else if (version is Base.Version) { _version = (Base.Version)((Base.Version)version).Clone(); } else if (version is System.Version) { _version = new Base.Version(((System.Version)version).ToString()); } } FileName = fileName; BasePath = basePath ?? throw new ArgumentNullException("basePath"); _md5 = md5; _fileTime = fileTime; _size = fileSize; }