//download regular update files
        void BeginDownload(List<string> sites, long adler32, byte[] signedSHA1Hash, bool relativeProgress, bool checkSigning)
        {
            if (downloader != null)
            {
                downloader.ProgressChanged -= ShowProgress;
                downloader.ProgressChanged -= SelfUpdateProgress;
            }

            downloader = new FileDownloader(sites, tempDirectory)
                             {
                                 Adler32 = adler32,
                                 UseRelativeProgress = relativeProgress,
                                 SignedSHA1Hash = signedSHA1Hash,
                                 PublicSignKey = checkSigning ? update.PublicSignKey : null
                             };

            downloader.ProgressChanged += ShowProgress;
            downloader.Download();
        }
        //download self update files (server file or update file)
        void BeginSelfUpdateDownload(List<string> sites, long adler32)
        {
            if (downloader != null)
            {
                downloader.ProgressChanged -= ShowProgress;
                downloader.ProgressChanged -= SelfUpdateProgress;
            }

            string suFolder = Path.Combine(tempDirectory, "selfupdate");

            if (!Directory.Exists(suFolder))
                Directory.CreateDirectory(suFolder);

            downloader = new FileDownloader(sites, suFolder)
                             {
                                 Adler32 = adler32
                             };

            downloader.ProgressChanged += SelfUpdateProgress;
            downloader.Download();
        }