public bool IsMet(NAppUpdate.Framework.Tasks.IUpdateTask task) { string localPath = string.Empty; if (Attributes.ContainsKey("localPath")) { localPath = Attributes["localPath"]; } else if (task != null && task.Attributes.ContainsKey("localPath")) { localPath = task.Attributes["localPath"]; } if (!File.Exists(localPath)) { return(true); } if (Attributes.ContainsKey("sha256-checksum")) { string sha256 = Utils.FileChecksum.GetSHA256Checksum(localPath); if (!string.IsNullOrEmpty(sha256) && sha256.Equals(Attributes["sha256-checksum"])) { return(true); } } // TODO: Support more checksum algorithms (although SHA256 has no collisions, other are more commonly used) return(false); }
public bool IsMet(NAppUpdate.Framework.Tasks.IUpdateTask task) { string localPath = string.Empty; if (Attributes.ContainsKey("localPath")) { localPath = Attributes["localPath"]; } else if (task != null && task.Attributes.ContainsKey("localPath")) { localPath = task.Attributes["localPath"]; } return(System.IO.File.Exists(localPath)); }
public bool IsMet(NAppUpdate.Framework.Tasks.IUpdateTask task) { if (ChildConditions == null) { return(true); } // perform the update if Passed == true // otherwise, do not perform the update bool Passed = true, firstRun = true; foreach (ConditionItem item in ChildConditions) { // If after the first iteration, accept as fulfilled if we are at an OR clause and the conditions // before this checked OK (i.e. update needed) if (!firstRun) { if (Passed && (item._ConditionType & ConditionType.OR) > 0) { return(true); } } else { firstRun = false; } // Skip all ANDed conditions if some of them failed, until we consume all the conditions // or we hit an OR'ed one if (!Passed) { if ((item._ConditionType & ConditionType.OR) > 0) { bool checkResult = item._Condition.IsMet(task); Passed = (item._ConditionType & ConditionType.NOT) > 0 ? !checkResult : checkResult; } } else { bool checkResult = item._Condition.IsMet(task); Passed = (item._ConditionType & ConditionType.NOT) > 0 ? !checkResult : checkResult; } } return(Passed); }
// TODO: Work with enums on code and Attributes to get a proper and full OS version comparison // use http://stackoverflow.com/questions/545666/how-to-translate-ms-windows-os-version-numbers-into-product-names-in-net // and http://msdn.microsoft.com/en-us/library/ms724429(VS.85).aspx #region IUpdateCondition Members public bool IsMet(NAppUpdate.Framework.Tasks.IUpdateTask task) { bool is64Bit = Is64BitOperatingSystem(); if (OsBits == 32 && OsBits != 64) { return(true); } // OS bitness check, if requested if (OsBits == 32 && is64Bit) { return(false); } if (OsBits == 64 && !is64Bit) { return(false); } return(true); }
public bool IsMet(NAppUpdate.Framework.Tasks.IUpdateTask task) { long fileLength = 0; if (!Attributes.ContainsKey("size") || !long.TryParse(Attributes["size"], out fileLength)) { return(true); } string localPath = string.Empty; if (Attributes.ContainsKey("localPath")) { localPath = Attributes["localPath"]; } else if (task != null && task.Attributes.ContainsKey("localPath")) { localPath = task.Attributes["localPath"]; } if (!File.Exists(localPath)) { return(true); } FileInfo fi = new FileInfo(localPath); if (Attributes.ContainsKey("what")) { switch (Attributes["what"]) { case "above": return(fileLength < fi.Length); case "is": return(fileLength == fi.Length); } } return(fileLength > fi.Length); }
public bool IsMet(NAppUpdate.Framework.Tasks.IUpdateTask task) { if (!Attributes.ContainsKey("version")) { return(true); } string localPath = string.Empty; if (Attributes.ContainsKey("localPath")) { localPath = Attributes["localPath"]; } else if (task != null && task.Attributes.ContainsKey("localPath")) { localPath = task.Attributes["localPath"]; } if (!System.IO.File.Exists(localPath)) { return(true); } string versionString = FileVersionInfo.GetVersionInfo(localPath).FileVersion.Replace(", ", "."); Version localVersion = new Version(versionString); Version updateVersion = new Version(Attributes["version"]); if (Attributes.ContainsKey("what")) { switch (Attributes["what"]) { case "above": return(updateVersion < localVersion); case "is": return(updateVersion == localVersion); } } return(updateVersion > localVersion); }
public bool IsMet(NAppUpdate.Framework.Tasks.IUpdateTask task) { DateTime fileDateTime; if (!Attributes.ContainsKey("timestamp") || !DateTime.TryParse(Attributes["timestamp"], out fileDateTime)) { return(true); } string localPath = string.Empty; if (Attributes.ContainsKey("localPath")) { localPath = Attributes["localPath"]; } else if (task != null && task.Attributes.ContainsKey("localPath")) { localPath = task.Attributes["localPath"]; } if (!File.Exists(localPath)) { return(true); } DateTime localFileDateTime = File.GetLastWriteTime(localPath); if (Attributes.ContainsKey("what")) { switch (Attributes["what"]) { case "newer": return(localFileDateTime > fileDateTime); case "is": return(localFileDateTime.Equals(fileDateTime)); } } return(localFileDateTime < fileDateTime); // == what="older" }
public bool IsMet(NAppUpdate.Framework.Tasks.IUpdateTask task) { // OS bitness check, if requested if (Attributes.ContainsKey("bit")) { bool Is64Bit = Is64BitOperatingSystem(); if ("32".Equals(Attributes["bit"]) && Is64Bit) { return(false); } else if ("64".Equals(Attributes["bit"]) && !Is64Bit) { return(false); } } return(true); // TODO: Work with enums on code and Attributes to get a proper and full OS version comparison // use http://stackoverflow.com/questions/545666/how-to-translate-ms-windows-os-version-numbers-into-product-names-in-net // and http://msdn.microsoft.com/en-us/library/ms724429(VS.85).aspx throw new NotImplementedException(); }