Ejemplo n.º 1
0
        private void SaveApplicationDialogModel(ApplicationDialogModel applicationDialog)
        {
            if (applicationDialog == null)
            {
                throw new ArgumentNullException(nameof(applicationDialog));
            }

            if (applicationDialog.SelectedProvider == null)
            {
                throw new ArgumentException("The selected provider is null", nameof(applicationDialog));
            }

            Application applicationFolder;

            if (applicationDialog.EntityId == default)
            {
                applicationDialog.EntityId = GetNewApplicationId();
                applicationFolder          = new Application
                {
                    Id = applicationDialog.EntityId
                };
                _configurationService.Configuration.Applications.Add(applicationFolder);
            }
            else
            {
                applicationFolder = _configurationService.Configuration.Applications.FirstOrDefault(af => af.Id == applicationDialog.EntityId);
                if (applicationFolder == null)
                {
                    throw new Exception(Strings.EntityNotFound);
                }
            }

            applicationFolder.Name = applicationDialog.Name;
            applicationFolder.EnableSilentInstallation            = applicationDialog.EnableSilentInstallation;
            applicationFolder.DisableReboot                       = applicationDialog.DisableReboot;
            applicationFolder.EnableInstallationLogging           = applicationDialog.EnableInstallationLogging;
            applicationFolder.AutomaticallyDeleteInstallationLogs = applicationDialog.AutomaticallyDeleteInstallationLogs;
            applicationFolder.KeepNewestInstallationLogs          = applicationDialog.KeepNewestInstallationLogs;
            applicationFolder.Configuration                       = applicationDialog.SelectedProvider.CreateConfiguration();
            applicationFolder.FilterDuplicateInstallers           = applicationDialog.FilterDuplicateInstallers;

            if (applicationDialog.Parent is MainWindowDialogModel mainWindowDialogModel)
            {
                var applicationViewModel = CreateApplicationViewModel(applicationFolder, mainWindowDialogModel);
                mainWindowDialogModel.Applications.Add(applicationViewModel);
            }

            applicationDialog.IsDirty = false;
        }
Ejemplo n.º 2
0
        private ApplicationDialogModel CreateApplicationDialogModel(IViewModel?parent = null)
        {
            ApplicationDialogModel dialogModel;

            if (parent is ApplicationViewModel applicationViewModel)
            {
                dialogModel = new ApplicationDialogModel
                {
                    Parent   = applicationViewModel,
                    Title    = Strings.Edit,
                    EntityId = applicationViewModel.EntityId,
                    Name     = applicationViewModel.Name,
                    EnableSilentInstallation            = applicationViewModel.EnableSilentInstallation,
                    DisableReboot                       = applicationViewModel.DisableReboot,
                    EnableInstallationLogging           = applicationViewModel.EnableInstallationLogging,
                    AutomaticallyDeleteInstallationLogs = applicationViewModel.AutomaticallyDeleteInstallationLogs,
                    KeepNewestInstallationLogs          = applicationViewModel.KeepNewestInstallationLogs,
                    FilterDuplicateInstallers           = applicationViewModel.FilterDuplicateInstallers
                };

                foreach (var provider in CreateAvailableProviderViewModels(dialogModel))
                {
                    dialogModel.AvailableProviders.Add(provider);
                }

                var application = _configurationService.Configuration.Applications.FirstOrDefault(af => af.Id == applicationViewModel.EntityId);
                if (application == null)
                {
                    throw new InvalidOperationException(Strings.EntityNotFound);
                }

                var matchingProvider = dialogModel.AvailableProviders.FirstOrDefault(p => p.ProviderType.ToString() == application.Configuration.ProviderType);
                if (matchingProvider == null)
                {
                    throw new InvalidOperationException("The installer file provider is not supported.");
                }

                matchingProvider.LoadConfiguration(application.Configuration);
                dialogModel.SelectedProvider = matchingProvider;
            }
            else
            {
                var defaultValues = new Application();
                dialogModel = new ApplicationDialogModel
                {
                    Parent = parent,
                    Title  = Strings.Add,
                    Name   = String.Empty,
                    EnableSilentInstallation            = defaultValues.EnableSilentInstallation,
                    DisableReboot                       = defaultValues.DisableReboot,
                    EnableInstallationLogging           = defaultValues.EnableInstallationLogging,
                    AutomaticallyDeleteInstallationLogs = defaultValues.AutomaticallyDeleteInstallationLogs,
                    KeepNewestInstallationLogs          = defaultValues.KeepNewestInstallationLogs,
                    FilterDuplicateInstallers           = defaultValues.FilterDuplicateInstallers
                };
                foreach (var provider in CreateAvailableProviderViewModels(dialogModel))
                {
                    dialogModel.AvailableProviders.Add(provider);
                }
                dialogModel.SelectedProvider = dialogModel.AvailableProviders.FirstOrDefault();
            }

            dialogModel.OpenLogFolderCommand = new OpenLogFolderCommand(_uriService, _ioService, _logFolderPath);
            dialogModel.IsDirty = false;
            return(dialogModel);
        }
Ejemplo n.º 3
0
        public void SelectedProvider_property()
        {
            var dialogModel = new ApplicationDialogModel();

            dialogModel.TestProperty(() => dialogModel.SelectedProvider, new DiskInstallerFileBundleProviderViewModel());
        }
Ejemplo n.º 4
0
        public void EntityId_property()
        {
            var dialogModel = new ApplicationDialogModel();

            dialogModel.TestProperty(() => dialogModel.EntityId, Guid.NewGuid());
        }
Ejemplo n.º 5
0
        public void FilterDuplicateInstallers_property()
        {
            var dialogModel = new ApplicationDialogModel();

            dialogModel.TestProperty(() => dialogModel.FilterDuplicateInstallers, true);
        }
Ejemplo n.º 6
0
        public void AvailableProviders_not_null()
        {
            var dialogModel = new ApplicationDialogModel();

            Assert.NotNull(dialogModel.AvailableProviders);
        }
Ejemplo n.º 7
0
        public void AutomaticallyDeleteInstallationLogs_property()
        {
            var dialogModel = new ApplicationDialogModel();

            dialogModel.TestProperty(() => dialogModel.AutomaticallyDeleteInstallationLogs, true);
        }
Ejemplo n.º 8
0
        public void KeepNewestInstallationLogs_property()
        {
            var dialogModel = new ApplicationDialogModel();

            dialogModel.TestProperty(() => dialogModel.KeepNewestInstallationLogs, 5);
        }
Ejemplo n.º 9
0
        public void EnableInstallationLogging_property()
        {
            var dialogModel = new ApplicationDialogModel();

            dialogModel.TestProperty(() => dialogModel.EnableInstallationLogging, true);
        }
Ejemplo n.º 10
0
        public void DisableReboot_property()
        {
            var dialogModel = new ApplicationDialogModel();

            dialogModel.TestProperty(() => dialogModel.DisableReboot, true);
        }
Ejemplo n.º 11
0
        public void EnableSilentInstallation_property()
        {
            var dialogModel = new ApplicationDialogModel();

            dialogModel.TestProperty(() => dialogModel.EnableSilentInstallation, true);
        }
Ejemplo n.º 12
0
        public void Name_property()
        {
            var dialogModel = new ApplicationDialogModel();

            dialogModel.TestProperty(() => dialogModel.Name, "test");
        }
Ejemplo n.º 13
0
        public void OpenLogFolderCommand_property()
        {
            var dialogModel = new ApplicationDialogModel();

            dialogModel.TestProperty(() => dialogModel.OpenLogFolderCommand, new TestCommand(), PropertyTestSettings.IsDirtyIgnored | PropertyTestSettings.IsReadOnlyIgnored);
        }