Пример #1
0
 /// <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);
 }
Пример #2
0
        /// <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();
            }
        }
Пример #3
0
 /// <summary> 获得指定下载包的完整路径 </summary>
 /// <param name="packageName" type="string">文件名</param>
 /// <returns>完整路径</returns>
 public string GetUpdatePackageFullUrl(string packageName)
 {
     return(string.Format(UpdateDownloadUrl.Replace("\\", "\\\\"), packageName));
 }