/// <summary> 获得指定下载包的完整路径 </summary> /// <param name="packageName" type="string">文件名</param> /// <returns>完整路径</returns> public string GetUpdatePackageFullUrl(string packageName) { if (!string.IsNullOrEmpty(UpdateInfoFileName)) { return(string.Format(UpdateDownloadUrl.Replace("\\", "\\\\"), packageName)); } return(UpdateDownloadUrl.Substring(0, UpdateDownloadUrl.LastIndexOf("/") + 1) + packageName); }
/// <summary> /// 初始化一些升级的参数 /// </summary> public void Init() { if (!Uri.TryCreate(UpdateDownloadUrl, UriKind.RelativeOrAbsolute, out var uri)) { throw new ArgumentException("Invalid uri.", nameof(UpdateDownloadUrl)); } //本地路径 var defaultInfoName = "update_c.xml"; if (uri.IsFile) { var downloadUrl = UpdateDownloadUrl; if (!string.IsNullOrEmpty(UpdateInfoFileName)) { //有设置文件名,则检查有没有占位模板;没有的话,则自动附加一个 if (!UpdateDownloadUrl.Contains("{0}")) { if (downloadUrl[downloadUrl.Length - 1] != Path.DirectorySeparatorChar) { downloadUrl += Path.DirectorySeparatorChar; } downloadUrl += "{0}"; } } else { if (downloadUrl[downloadUrl.Length - 1] != Path.DirectorySeparatorChar) { if (!downloadUrl.Contains("{0}")) { //没有指定新文件的名字,则取文件名后,再使用目录组合 UpdateInfoFileName = Path.GetFileName(UpdateDownloadUrl); downloadUrl = Path.Combine(Path.GetDirectoryName(downloadUrl), "{0}"); } else { UpdateInfoFileName = defaultInfoName; } } else { //是目录 UpdateInfoFileName = defaultInfoName; if (!downloadUrl.Contains("{0}")) { downloadUrl += "{0}"; } } } UpdateDownloadUrl = downloadUrl; } else { //网址模式 if (string.IsNullOrEmpty(UpdateInfoFileName)) { if (uri.LocalPath.Contains("{0}")) { UpdateInfoFileName = defaultInfoName; } else { if (uri.LocalPath.EndsWith("/")) { UpdateInfoFileName = defaultInfoName; uri = new Uri(new Uri(uri, "{0}"), uri.Query); } else { UpdateInfoFileName = uri.Segments[uri.Segments.Length - 1]; uri = new Uri(new Uri(uri, "./{0}"), uri.Query); } } } else { if (!uri.LocalPath.Contains("{0}")) { //有文件,没模板,自动在最后拼接 if (uri.LocalPath.EndsWith("/")) { uri = new Uri(new Uri(uri, "./{0}"), uri.Query); } else { uri = new Uri(new Uri(uri, $"./{uri.Segments[uri.Segments.Length - 1]}/{{0}}"), uri.Query); } } } UpdateDownloadUrl = uri.ToString(); } }
/// <summary> 获得指定下载包的完整路径 </summary> /// <param name="packageName" type="string">文件名</param> /// <returns>完整路径</returns> public string GetUpdatePackageFullUrl(string packageName) { return(string.Format(UpdateDownloadUrl.Replace("\\", "\\\\"), packageName)); }