public static void SaveToZipFile(string fileName) { var folderName = AppDataFolderHelper.GetTempFolder(); if (!Directory.Exists(folderName)) Directory.CreateDirectory(folderName); if (File.Exists(fileName)) File.Delete(fileName); TempZipConfigurationItemsCollection = new ZipConfigurationItemsCollection(); AddConfiguration(folderName, "DeviceConfiguration.xml", FiresecManager.FiresecConfiguration.DeviceConfiguration, 1, 1); AddConfiguration(folderName, "PlansConfiguration.xml", FiresecManager.PlansConfiguration, 1, 1); AddConfiguration(folderName, "SystemConfiguration.xml", FiresecManager.SystemConfiguration, 1, 1); AddConfiguration(folderName, "XDeviceConfiguration.xml", XManager.DeviceConfiguration, 1, 1); AddConfiguration(folderName, "SKDConfiguration.xml", SKDManager.SKDConfiguration, 1, 1); AddConfiguration(folderName, "LayoutsConfiguration.xml", FiresecManager.LayoutsConfiguration, 1, 1); AddConfiguration(folderName, "ZipConfigurationItemsCollection.xml", TempZipConfigurationItemsCollection, 1, 1); var destinationImagesDirectory = AppDataFolderHelper.GetFolder(Path.Combine(folderName, "Content")); if (Directory.Exists(ServiceFactory.ContentService.ContentFolder)) { if (Directory.Exists(destinationImagesDirectory)) Directory.Delete(destinationImagesDirectory); if (!Directory.Exists(destinationImagesDirectory)) Directory.CreateDirectory(destinationImagesDirectory); var sourceImagesDirectoryInfo = new DirectoryInfo(ServiceFactory.ContentService.ContentFolder); foreach (var fileInfo in sourceImagesDirectoryInfo.GetFiles()) { fileInfo.CopyTo(Path.Combine(destinationImagesDirectory, fileInfo.Name)); } } var zipFile = new ZipFile(fileName); zipFile.AddDirectory(folderName); zipFile.Save(fileName); zipFile.Dispose(); if (Directory.Exists(folderName)) Directory.Delete(folderName, true); }
public static string SaveAllConfigToFile(bool saveAnyway = false) { try { var tempFolderName = AppDataFolderHelper.GetTempFolder(); if (!Directory.Exists(tempFolderName)) Directory.CreateDirectory(tempFolderName); var tempFileName = AppDataFolderHelper.GetTempFileName(); if (File.Exists(tempFileName)) File.Delete(tempFileName); TempZipConfigurationItemsCollection = new ZipConfigurationItemsCollection(); if (ServiceFactory.SaveService.FSChanged || ServiceFactory.SaveService.FSParametersChanged || saveAnyway) AddConfiguration(tempFolderName, "DeviceConfiguration.xml", FiresecManager.FiresecConfiguration.DeviceConfiguration, 1, 1); if (ServiceFactory.SaveService.PlansChanged || saveAnyway) AddConfiguration(tempFolderName, "PlansConfiguration.xml", FiresecManager.PlansConfiguration, 1, 1); if ((ServiceFactory.SaveService.InstructionsChanged) || (ServiceFactory.SaveService.SoundsChanged) || (ServiceFactory.SaveService.FilterChanged) || (ServiceFactory.SaveService.CamerasChanged) || (ServiceFactory.SaveService.EmailsChanged) || saveAnyway) AddConfiguration(tempFolderName, "SystemConfiguration.xml", FiresecManager.SystemConfiguration, 1, 1); if (ServiceFactory.SaveService.GKChanged || ServiceFactory.SaveService.XInstructionsChanged || saveAnyway) AddConfiguration(tempFolderName, "XDeviceConfiguration.xml", XManager.DeviceConfiguration, 1, 1); AddConfiguration(tempFolderName, "ZipConfigurationItemsCollection.xml", TempZipConfigurationItemsCollection, 1, 1); if (ServiceFactory.SaveService.SecurityChanged || saveAnyway) AddConfiguration(tempFolderName, "SecurityConfiguration.xml", FiresecManager.SecurityConfiguration, 1, 1); if (ServiceFactory.SaveService.LibraryChanged || saveAnyway) AddConfiguration(tempFolderName, "DeviceLibraryConfiguration.xml", FiresecManager.DeviceLibraryConfiguration, 1, 1); if (ServiceFactory.SaveService.XLibraryChanged || saveAnyway) AddConfiguration(tempFolderName, "XDeviceLibraryConfiguration.xml", XManager.DeviceLibraryConfiguration, 1, 1); if (ServiceFactory.SaveService.SKDChanged || saveAnyway) AddConfiguration(tempFolderName, "SKDConfiguration.xml", SKDManager.SKDConfiguration, 1, 1); if (ServiceFactory.SaveService.SKDLibraryChanged || saveAnyway) AddConfiguration(tempFolderName, "SKDLibraryConfiguration.xml", SKDManager.SKDLibraryConfiguration, 1, 1); if (ServiceFactory.SaveService.LayoutsChanged || saveAnyway) AddConfiguration(tempFolderName, "LayoutsConfiguration.xml", FiresecManager.LayoutsConfiguration, 1, 1); var destinationImagesDirectory = AppDataFolderHelper.GetFolder(Path.Combine(tempFolderName, "Content")); if (Directory.Exists(ServiceFactory.ContentService.ContentFolder)) { if (Directory.Exists(destinationImagesDirectory)) Directory.Delete(destinationImagesDirectory); if (!Directory.Exists(destinationImagesDirectory)) Directory.CreateDirectory(destinationImagesDirectory); var sourceImagesDirectoryInfo = new DirectoryInfo(ServiceFactory.ContentService.ContentFolder); foreach (var fileInfo in sourceImagesDirectoryInfo.GetFiles()) { fileInfo.CopyTo(Path.Combine(destinationImagesDirectory, fileInfo.Name)); } } var zipFile = new ZipFile(tempFileName); zipFile.AddDirectory(tempFolderName); zipFile.Save(tempFileName); zipFile.Dispose(); if (Directory.Exists(tempFolderName)) Directory.Delete(tempFolderName, true); return tempFileName; } catch (Exception e) { Logger.Error(e, "ConfigManager.SaveAllConfigToFile"); } return null; }
static void AddConfigurationList(ZipFile zipFile, ZipConfigurationItemsCollection configurationsList) { var configurationStream = ZipSerializeHelper.Serialize(configurationsList); if (zipFile.Entries.Any(x => x.FileName == "ZipConfigurationItemsCollection.xml")) zipFile.RemoveEntry("ZipConfigurationItemsCollection.xml"); configurationStream.Position = 0; zipFile.AddEntry("ZipConfigurationItemsCollection.xml", configurationStream); }
public void ConvertConfiguration() { if (FiresecManager.FiresecDriver == null) return; if (MessageBoxService.ShowQuestion("Вы уверены, что хотите конвертировать конфигурацию?") == MessageBoxResult.Yes) { WaitHelper.Execute(() => { LoadingService.Show("Конвертирование конфигурации", "Конвертирование конфигурации", 6); var convertationResult = FiresecManager.FiresecDriver.Convert(); if (convertationResult.HasError) { MessageBoxService.ShowError(convertationResult.Error); return; } LoadingService.Show("Синхронизация конфигурации", "Конвертирование конфигурации", 6); FiresecManager.FiresecDriver.Synchronyze(false); ServiceFactory.SaveService.FSChanged = false; ServiceFactory.SaveService.PlansChanged = false; LoadingService.DoStep("Обновление конфигурации"); FiresecManager.UpdateConfiguration(); LoadingService.DoStep("Сохранение конфигурации"); var tempFolderName = AppDataFolderHelper.GetTempFolder(); if (!Directory.Exists(tempFolderName)) Directory.CreateDirectory(tempFolderName); var tempFileName = AppDataFolderHelper.GetTempFileName(); if (File.Exists(tempFileName)) File.Delete(tempFileName); TempZipConfigurationItemsCollection = new ZipConfigurationItemsCollection(); AddConfiguration(tempFolderName, "DeviceConfiguration.xml", FiresecManager.FiresecConfiguration.DeviceConfiguration, 1, 1); AddConfiguration(tempFolderName, "PlansConfiguration.xml", FiresecManager.PlansConfiguration, 1, 1); AddConfiguration(tempFolderName, "ZipConfigurationItemsCollection.xml", TempZipConfigurationItemsCollection, 1, 1); var destinationImagesDirectory = AppDataFolderHelper.GetFolder(Path.Combine(tempFolderName, "Content")); if (Directory.Exists(ServiceFactory.ContentService.ContentFolder)) { if (Directory.Exists(destinationImagesDirectory)) Directory.Delete(destinationImagesDirectory); if (!Directory.Exists(destinationImagesDirectory)) Directory.CreateDirectory(destinationImagesDirectory); var sourceImagesDirectoryInfo = new DirectoryInfo(ServiceFactory.ContentService.ContentFolder); foreach (var fileInfo in sourceImagesDirectoryInfo.GetFiles()) { fileInfo.CopyTo(Path.Combine(destinationImagesDirectory, fileInfo.Name)); } } var zipFile = new ZipFile(tempFileName); zipFile.AddDirectory(tempFolderName); zipFile.Save(tempFileName); zipFile.Dispose(); if (Directory.Exists(tempFolderName)) Directory.Delete(tempFolderName, true); if (Directory.Exists(tempFolderName)) Directory.Delete(tempFolderName, true); using (var fileStream = new FileStream(tempFileName, FileMode.Open)) { FiresecManager.FiresecService.SetConfig(fileStream); } File.Delete(tempFileName); LoadingService.DoStep("Оповещение клиентов об изменении конфигурации"); FiresecManager.FiresecService.NotifyClientsOnConfigurationChanged(); LoadingService.Close(); }); ServiceFactory.Events.GetEvent<ConfigurationChangedEvent>().Publish(null); } }