private void Download(UpdateFile hak, string url, NetworkCredential credentials, Int64 filesize)
        {
            var request = (FtpWebRequest)WebRequest.Create(url);

            request.Method      = WebRequestMethods.Ftp.DownloadFile;
            request.Credentials = credentials;

            var response       = (FtpWebResponse)request.GetResponse();
            var responsestream = response.GetResponseStream();

            if (responsestream != null)
            {
                var   file   = File.Create(_nwnRoot + hak.Path);
                var   buffer = new byte[32 * 1024];
                int   read;
                Int64 downloaded = 0;
                while ((read = responsestream.Read(buffer, 0, buffer.Length)) > 0)
                {
                    file.Write(buffer, 0, read);
                    downloaded = downloaded + read;
                    StatusUpdate("Downloading " + hak.Path + " Received: " + downloaded + " of " + filesize);
                    Application.DoEvents();
                }
                file.Close();
                responsestream.Close();
            }
            response.Close();
        }
        private static Int64 GetFileSize(UpdateFile hak, string url, NetworkCredential credentials)
        {
            var request = (FtpWebRequest)WebRequest.Create(url);

            request.Method      = WebRequestMethods.Ftp.GetFileSize;
            request.Credentials = credentials;

            var response = (FtpWebResponse)request.GetResponse();

            var length = response.ContentLength;

            response.Close();

            return(length);
        }