/// <summary>
        /// Installs the wing progress.
        /// </summary>
        /// <param name="progressResult">The progress result.</param>
        public void InstallWingProgress(OpenSourceInstallResult progressResult)
        {
            switch (progressResult.Status)
            {
            case OpenSourceInstallFlags.AlreadyExists:
                StatusLog.Add(progressResult.Message);

                if (progressResult.Target != null && WingItems != null && !WingItems.Any(item => item != null && !string.IsNullOrEmpty(item.Name) && item.Name.EqualsIgnoreCase(progressResult.Target.Name)))
                {
                    WingItems.Add(progressResult.Target);
                }
                break;

            case OpenSourceInstallFlags.StatusUpdate:
                StatusLog.Add(progressResult.Message);
                break;

            case OpenSourceInstallFlags.Success:
                StatusLog.Add(progressResult.Message);

                if (progressResult.Target != null && !WingItems.Any(wi => wi.Name.EqualsIgnoreCase(progressResult.Target.Name)))
                {
                    WingItems.Add(progressResult.Target);
                }

                break;
            }
        }
        /// <summary>
        /// Called when [uninstall wing].
        /// </summary>
        /// <param name="dynamicTarget">The dynamic target.</param>
        private async void OnUninstallWing(Target dynamicTarget)
        {
            if (dynamicTarget == null)
            {
                return;
            }



            var uninstallConfirmation = MessageBox.Show(@"Are you sure you want to uninstall '" + dynamicTarget.DisplayName + "'?"
                                                        + Environment.NewLine + "The Website(s) using this Wing will be deleted."
                                                        , @"Uninstall Confirmation", MessageBoxButton.YesNo);

            if (uninstallConfirmation == MessageBoxResult.No)
            {
                return;
            }
            UninstallInProgress = true;
            StatusLog.Clear();
            ProgressPopupVisibility = true;

            await Task.Delay(500);

            UnistallWingName = dynamicTarget.DisplayName;
            var cancellationToken = new CancellationTokenSource();
            var uninstallResult   = await DynamicTargetService.Uninstall(dynamicTarget, cancellationToken.Token, result =>
            {
                if (result.Status == OpenSourceUnInstallFlags.StatusUpdate)
                {
                    StatusLog.Add(result.Message);
                }
                if (result.Status == OpenSourceUnInstallFlags.Success)
                {
                    StatusLog.Add(string.Format("Uninstallation of wing \"{0}\" completed successfully.", dynamicTarget.Name));

                    if (WingItems.Contains(dynamicTarget))
                    {
                        WingItems.Remove(dynamicTarget);
                    }
                }
            },
                                                                         exceptionResult =>
            {
                var statusMessage = string.Format("Uninstallation of wing \"{0}\" was unsuccessful. Please try again. If for any reason the" +
                                                  "the error still remains after trying to uninstall again. Please contact Monahrq technical assistance.",
                                                  dynamicTarget.Name);
                StatusLog.Add(statusMessage);
                Logger.Write(exceptionResult.Exception);
            });


            UninstallInProgress = false;
        }