/// <summary> /// Performs a DNN bulk install of the deployed packages. /// <remarks>This must be running within the DNN bin directory in order to work.</remarks> /// </summary> public static bool PerformBulkInstall(Uri portalUrl, DirectoryInfo targetDir, Action <string> logMessage, int maxRetries = 5) { int retryCount = 0; bool success = false; string message = "Performing bulk module install @ " + portalUrl; logMessage(message); FileInfo[] deployPackages = GetInstallPackagesInDirectory(targetDir); //var remainingPackageCount = //var lastPackageCount = remainingPackageCount; // deployPackages.AsEnumerable().Where(e => e.Exists).Count(); // message = string.Format("{0} packages to insall.", deployPackages.Count()); // logMessage(message); while (!success && retryCount < maxRetries) { logMessage("Attempt " + (retryCount + 1)); logMessage(string.Format("{0} packages to install.", deployPackages.Count())); try { using (var client = new ExtendedWebClient()) { //Prvent proxy use.. client.Proxy = new WebProxy(); client.Timeout = 600000; using (var stream = client.OpenRead(portalUrl)) { if (stream != null) { using (var reader = new StreamReader(stream)) { var response = reader.ReadToEnd(); // analyse to see if it failed. if (response.Contains("Error")) { //logMessage("Response contains an error. Response is: " + response); continue; } success = true; } } } } } catch (WebException ex) { logMessage("Exception Message: " + ex.Message); if (ex.Response is HttpWebResponse) { var statusCode = ((HttpWebResponse)ex.Response).StatusCode; // logMessage("Request errored with status code is: " + statusCode); } } catch (Exception e) { logMessage("Error. " + e.Message); } finally { var remainingPackages = GetInstallPackagesInDirectory(targetDir); if (remainingPackages.Count() < deployPackages.Count()) { var progress = deployPackages.Count() - remainingPackages.Count(); // we made some progress so this is just a network jitter. logMessage(string.Format("{0} packages were just installed.", progress)); deployPackages = remainingPackages; // reset retry counter. retryCount = 0; } else { // we made no progress so could be legitimate error preventing install. retryCount++; logMessage(string.Format("No packages were installed, will retry..")); } } } return(success); }
/// <summary> /// Performs a DNN bulk install of the deployed packages. /// <remarks>This must be running within the DNN bin directory in order to work.</remarks> /// </summary> public static bool PerformBulkInstall(Uri portalUrl, DirectoryInfo targetDir, Action<string> logMessage, int maxRetries = 5) { int retryCount = 0; bool success = false; string message = "Performing bulk module install @ " + portalUrl; logMessage(message); FileInfo[] deployPackages = GetInstallPackagesInDirectory(targetDir); //var remainingPackageCount = //var lastPackageCount = remainingPackageCount; // deployPackages.AsEnumerable().Where(e => e.Exists).Count(); // message = string.Format("{0} packages to insall.", deployPackages.Count()); // logMessage(message); while (!success && retryCount < maxRetries) { logMessage("Attempt " + (retryCount + 1)); logMessage(string.Format("{0} packages to install.", deployPackages.Count())); try { using (var client = new ExtendedWebClient()) { //Prvent proxy use.. client.Proxy = new WebProxy(); client.Timeout = 600000; using (var stream = client.OpenRead(portalUrl)) { if (stream != null) { using (var reader = new StreamReader(stream)) { var response = reader.ReadToEnd(); // analyse to see if it failed. if (response.Contains("Error")) { //logMessage("Response contains an error. Response is: " + response); continue; } success = true; } } } } } catch (WebException ex) { logMessage("Exception Message: " + ex.Message); if (ex.Response is HttpWebResponse) { var statusCode = ((HttpWebResponse)ex.Response).StatusCode; // logMessage("Request errored with status code is: " + statusCode); } } catch (Exception e) { logMessage("Error. " + e.Message); } finally { var remainingPackages = GetInstallPackagesInDirectory(targetDir); if (remainingPackages.Count() < deployPackages.Count()) { var progress = deployPackages.Count() - remainingPackages.Count(); // we made some progress so this is just a network jitter. logMessage(string.Format("{0} packages were just installed.", progress)); deployPackages = remainingPackages; // reset retry counter. retryCount = 0; } else { // we made no progress so could be legitimate error preventing install. retryCount++; logMessage(string.Format("No packages were installed, will retry..")); } } } return success; }