private void InstallSendResults(Operations.SavedOpData updateData, RvSofOperation operation, List <RVsofResult.AppsToAdd2> appsToAdd = null, List <RVsofResult.AppsToDelete2> appsToDelete = null) { try { var results = new RVsofResult(); results.AppsToAdd = results.AppsToAdd != null ? appsToAdd : new List <RVsofResult.AppsToAdd2>(); results.AppsToDelete = results.AppsToDelete != null ? appsToDelete : new List <RVsofResult.AppsToDelete2>(); results.AppId = updateData.filedata_app_id; results.Operation = updateData.operation; results.OperationId = updateData.operation_id; results.Error = updateData.error; results.RebootRequired = updateData.reboot_required; results.Success = updateData.success; switch (updateData.operation) { case OperationValue.InstallWindowsUpdate: results = WindowsUpdates.AddAppDetailsToResults(results); operation.RawResult = RvFormatter.Install(results); break; case OperationValue.InstallCustomApp: results = CustomAppsManager.AddAppDetailsToResults(results); operation.RawResult = RvFormatter.Install(results); break; case OperationValue.InstallSupportedApp: results = SupportedAppsManager.AddAppDetailsToResults(results); operation.RawResult = RvFormatter.Install(results); break; case OperationValue.InstallAgentUpdate: results = AgentUpdateManager.AddAppDetailsToResults(results); operation.RawResult = RvFormatter.AgentUpdate(results); break; case OperationValue.Uninstall: operation.RawResult = RvFormatter.Install(results); break; } operation.Id = updateData.operation_id; operation.Plugin = "rv"; Operations.UpdateStatus(updateData, Operations.OperationStatus.ResultsPending); Logger.Log("Sending back results for {0}.", LogLevel.Info, updateData.filedata_app_name); if (SendResults(operation)) { Operations.CleanAllOperationData(updateData); } } catch (Exception e) { Logger.Log("Failed when attempting to send back results, Exception inside InstallSendResults()."); Logger.LogException(e); } }
private void InstallAgentUpdate(RvSofOperation operation) { var submittedInstall = false; var counter = 30; var savedOperations = Operations.LoadOpDirectory().Where(p => p.operation == OperationValue.InstallAgentUpdate).ToList(); if (!savedOperations.Any()) { Logger.Log("There are no operations remaining, Unable to update RV Agent: {0}", LogLevel.Warning, operation.Type); return; } Operations.SavedOpData updateDownloadResults = AgentUpdateManager.DownloadUpdate(savedOperations.First()); if (String.IsNullOrEmpty(updateDownloadResults.error)) { do { switch (updateDownloadResults.operation_status) { case Operations.OperationStatus.Pending: if (submittedInstall) { break; } Logger.Log("Agent Updater Application, preparing to upgrade RV Agent to the most recent version."); var startInfo = new ProcessStartInfo(); var fileName = String.Empty; foreach (var item in updateDownloadResults.filedata_app_uris) { var splitted = item.file_name.Split(new[] { '.' }); if (splitted[0] == "UpdateInstaller") { fileName = item.file_name; } } if (String.IsNullOrEmpty(fileName)) { fileName = "UpdateInstaller.exe"; } var filePath = Path.Combine(AgentUpdateManager.AgentUpdateDirectory, fileName); startInfo.FileName = filePath; startInfo.Arguments = updateDownloadResults.filedata_app_clioptions; startInfo.UseShellExecute = false; startInfo.RedirectStandardOutput = false; Operations.UpdateStatus(updateDownloadResults, Operations.OperationStatus.Processing); Process.Start(startInfo); submittedInstall = true; break; } Thread.Sleep(5000); counter--; } while (counter >= 0); } else if (!String.IsNullOrEmpty(updateDownloadResults.error)) { InstallSendResults(updateDownloadResults, operation); } }