|
|
|
|
using System.Diagnostics;
|
|
|
|
|
|
|
|
|
|
namespace Estsh.Client.Common.FileManager
|
|
|
|
|
{
|
|
|
|
|
public static class FileInfoExtensions
|
|
|
|
|
{
|
|
|
|
|
public static int CompareTo(this FileInfo fileInfo, FileInfo other)
|
|
|
|
|
{
|
|
|
|
|
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(fileInfo.FullName);
|
|
|
|
|
FileVersionInfo fviOther = FileVersionInfo.GetVersionInfo(other.FullName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (null == fvi.FileVersion || null == fviOther.FileVersion)
|
|
|
|
|
{
|
|
|
|
|
return fileInfo.LastWriteTime.CompareTo(other.LastWriteTime);
|
|
|
|
|
}
|
|
|
|
|
else if (fvi.FileVersion.IndexOf('.') < 0 || fviOther.FileVersion.IndexOf('.') < 0)
|
|
|
|
|
{
|
|
|
|
|
return fileInfo.LastWriteTime.CompareTo(other.LastWriteTime);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//return Version.CompareTo(other.Version);
|
|
|
|
|
string[] vers = fvi.FileVersion.Split('.');
|
|
|
|
|
string[] vers_other = fviOther.FileVersion.Split('.');
|
|
|
|
|
|
|
|
|
|
int iVer = 0, iVer_other = 0;
|
|
|
|
|
|
|
|
|
|
for (int index = 0; index < vers.Length; index++)
|
|
|
|
|
{
|
|
|
|
|
iVer = Convert.ToInt32(vers[index]);
|
|
|
|
|
iVer_other = Convert.ToInt32(vers_other[index]);
|
|
|
|
|
|
|
|
|
|
if (iVer != iVer_other)
|
|
|
|
|
return iVer.CompareTo(iVer_other);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return iVer.CompareTo(iVer_other);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
///// <summary>
|
|
|
|
|
///// <20><><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58>
|
|
|
|
|
///// </summary>
|
|
|
|
|
//[Serializable]
|
|
|
|
|
//public class FileInfos
|
|
|
|
|
//{
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// <20><><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public List<FileInfo> Infos;
|
|
|
|
|
|
|
|
|
|
// // private long _totalBytes;
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// <20>c<EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public FileInfos()
|
|
|
|
|
// {
|
|
|
|
|
// Infos = new List<FileInfo>();
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// public long TotalBytes
|
|
|
|
|
// {
|
|
|
|
|
// get
|
|
|
|
|
// {
|
|
|
|
|
// long totals = 0;
|
|
|
|
|
|
|
|
|
|
// foreach (FileInfo fi in Infos)
|
|
|
|
|
// {
|
|
|
|
|
// totals += fi.Size;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// return totals;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
///// <summary>
|
|
|
|
|
///// <20><><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><48><EFBFBD><EFBFBD>
|
|
|
|
|
///// </summary>
|
|
|
|
|
//[Serializable]
|
|
|
|
|
//public class FileInfo : IComparable<FileInfo>
|
|
|
|
|
//{
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// <20><><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57>
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// private string _name;
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// <20><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>p
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// private long _size;
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// <20><><EFBFBD><EFBFBD><EFBFBD>̦Z<CCA6>ק<EFBFBD><D7A7>ɶ<EFBFBD>
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// private DateTime _lastWriteTime;
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// <20><><EFBFBD><EFBFBD><F3AAA9A5>]EXE, DLL <20><><EFBFBD><EFBFBD>)
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// private string _version;
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// <20><><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57>
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public string Name
|
|
|
|
|
// {
|
|
|
|
|
// get { return _name; }
|
|
|
|
|
// set { _name = value; }
|
|
|
|
|
// }
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// <20><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>p
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public long Size
|
|
|
|
|
// {
|
|
|
|
|
// get { return _size; }
|
|
|
|
|
// set { _size = value; }
|
|
|
|
|
// }
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// <20><><EFBFBD><EFBFBD><EFBFBD>̦Z<CCA6>ק<EFBFBD><D7A7>ɶ<EFBFBD>
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public DateTime LastWriteTime
|
|
|
|
|
// {
|
|
|
|
|
// get { return _lastWriteTime; }
|
|
|
|
|
// set { _lastWriteTime = value; }
|
|
|
|
|
// }
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// <20><><EFBFBD><EFBFBD><F3AAA9A5>]EXE, DLL <20><><EFBFBD><EFBFBD><EFBFBD>^
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public string Version
|
|
|
|
|
// {
|
|
|
|
|
// get { return _version; }
|
|
|
|
|
// set { _version = value; }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// #region IComparable<FileInfo> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
// public int CompareTo(FileInfo other)
|
|
|
|
|
// {
|
|
|
|
|
// if (null == Version || null == other.Version)
|
|
|
|
|
// {
|
|
|
|
|
// return LastWriteTime.CompareTo(other.LastWriteTime);
|
|
|
|
|
// }
|
|
|
|
|
// else if (Version.IndexOf('.') < 0 || other.Version.IndexOf('.') < 0)
|
|
|
|
|
// {
|
|
|
|
|
// return LastWriteTime.CompareTo(other.LastWriteTime);
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// //return Version.CompareTo(other.Version);
|
|
|
|
|
// string[] vers = Version.Split('.');
|
|
|
|
|
// string[] vers_other = other.Version.Split('.');
|
|
|
|
|
|
|
|
|
|
// int iVer = 0, iVer_other = 0;
|
|
|
|
|
|
|
|
|
|
// for (int index=0; index < vers.Length; index++)
|
|
|
|
|
// {
|
|
|
|
|
// iVer = Convert.ToInt32(vers[index]);
|
|
|
|
|
// iVer_other = Convert.ToInt32(vers_other[index]);
|
|
|
|
|
|
|
|
|
|
// if (iVer != iVer_other)
|
|
|
|
|
// return iVer.CompareTo(iVer_other);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// return iVer.CompareTo(iVer_other);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
//}
|
|
|
|
|
}
|