//Check to see if there is an update. private void DownloadUpdateDoWork(object sender, DoWorkEventArgs e) { DownloadUpdateResult result = new DownloadUpdateResult(); String fileList = DownloadString((String)e.Argument); if (fileList == null) { result.Message = "Failed to download update file list."; e.Result = result; return; } String[] fileListLines = StringToLines(fileList); DownloadFileInfo[] filesList = StringToDownloadFilesArray(fileListLines); DownloadFileInfo[] filesToDownload = CheckFilesToDownload(filesList); if (filesToDownload == null) { result.Message = "No files need downloaded."; e.Result = result; return; } DownloadFiles(filesToDownload); if (!HashCheckDownloadFiles(filesToDownload)) { result.Message = "Download hash check failed."; e.Result = result; return; } InstallDownloadedFiles(filesList, filesToDownload); foreach (DownloadFileInfo fileInfo in filesList) { if (fileInfo.Action == "Run") { if (result.RunFiles == null) { result.RunFiles = new String[1]; } else { Array.Resize(ref result.RunFiles, result.RunFiles.GetUpperBound(0) + 2); } result.RunFiles[result.RunFiles.GetUpperBound(0)] = fileInfo.Path + fileInfo.Name; } } result.Success = true; result.Message = "Download finished!"; e.Result = result; }