protected internal override void Start()
        {
            // construct the url
            var url = new StringBuilder();

            url.Append(_urlPrefix);
            if (url[url.Length - 1] != '/')
            {
                url.Append('/');
            }

            // zip file name
            var fileName = string.Format("{0}.{1}-{2}{3}", _packageNamePrefix, _checkVersionHandler.LocalVersion,
                                         _checkVersionHandler.RemoteVersion,
                                         _packageExtension);

            url.AppendFormat(fileName);

            // ���̵�ַ
            var savePath = Path.Combine(_downloadToPath, fileName);

            _savePath = savePath;
            _fullUrl  = url.ToString();

            _down = new HttpDownloader(_fullUrl, _savePath, true);
            _down.SetRequsterAsyncHook(_requesterAsyncHook);
            _down.SetFinishCallback((_) =>
            {
                if (_.Error != null)
                {
                    OnError(this, string.Format("{0} : {1}", _fullUrl, _.Error.Message));
                }

                Finish();
            });

            _down.Start();
        }