private void UpdateInstance(ApplicationInstance appInstance)
        {
            string rootFolder = _settings.RepositoryFolder;
            if (!Directory.Exists(rootFolder))
            {
                throw new ApplicationException($"Directory {rootFolder} does not exists");
            }

            if (string.IsNullOrEmpty(_settings.InstancesRootFolder))
            {
                throw new ApplicationException("Instances RootFolder is not defined");
            }

            RaiseUpdateProgerss($"Update {appInstance.VirtualApplicationName}");
            List<UpdateComponentBase> components = CreateUpdateComponentsList(appInstance);

            foreach (var component in components)
                component.PreCopySources();

            foreach (var component in components)
                component.CopySources();

            foreach (var component in components)
                component.PostCopySources();

            foreach (var component in components)
                component.UpdateConfig();

            foreach (var component in components)
                component.PostUpdateConfig();

            foreach (var component in components)
                component.PrepareStart();

        }
 private void buttonAddSetting_Click(object sender, RoutedEventArgs e)
 {
     ApplicationInstance model = new ApplicationInstance();
     AppInstance window = new AppInstance();
     window.DataContext = model;
     window.Owner = this;
     window.ShowDialog();
     if (window.DialogResult == true)
     {
         _model.SiteConfig.Instances.Add(model);
     }
 }
        private List<UpdateComponentBase> CreateUpdateComponentsList(ApplicationInstance appInstance)
        {
            List<UpdateComponentBase> components = new List<UpdateComponentBase>();
            if (appInstance.IsUpdateWorker)
            {
                var updateComponent = new WorkerComponent(_settings, appInstance);
                updateComponent.Init(RaiseUpdateProgerss);
                components.Add(updateComponent);
            }

            if (appInstance.IsUpdateSite)
            {
                var updateComponent = new WebSiteComponent(_settings, appInstance);
                updateComponent.Init(RaiseUpdateProgerss);
                components.Add(updateComponent);
            }

            if (appInstance.IsUpdateDb)
            {
                var updateComponent = new DbUpdaterComponent(_settings, appInstance);
                updateComponent.Init(RaiseUpdateProgerss);
                components.Add(updateComponent);
            }

            return components;
        }
 public UpdateComponentBase(SiteInstance siteConfig, ApplicationInstance appplicationConfig)
 {
     SiteConfig = siteConfig;
     ApplicationConfig = appplicationConfig;
     PredefinedConfigOverride = new List<ConfigOverride>();
 }
 public WebSiteComponent(SiteInstance siteConfig, ApplicationInstance appplicationConfig) : base(siteConfig, appplicationConfig)
 {
 }