Beispiel #1
0
        /// <summary>
        /// Initializes the <see cref="MonahrqConfiguration"/> class.
        /// </summary>
        static MonahrqConfiguration()
        {
            try
            {
                if (!File.Exists(ConfigFilePath))
                {
                    //	Create Config Directory if not present.
                    if (!Directory.Exists(ConfigDirectoryPath))
                    {
                        Directory.CreateDirectory(ConfigDirectoryPath);
                    }

                    //	Copy the config file from the User Roaming Directory, if present.
                    var curUserConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
                    if (File.Exists(curUserConfig.FilePath))
                    {
                        FileInfo finfo = new FileInfo(curUserConfig.FilePath);
                        finfo.CopyTo(ConfigFilePath);
                    }
                    //	File not present in User Roamin Directory; try to find it in the last 'versioned' directory for app.
                    else
                    {
                        var dirPath = curUserConfig.FilePath.Replace("\\user.config", "\\..");
                        if (Directory.Exists(dirPath))
                        {
                            List <string> dirs               = new List <string>(Directory.EnumerateDirectories(dirPath));
                            var           versions           = dirs.Select(d => new Version(d.Substring(d.LastIndexOf("\\") + 1))).ToList();
                            var           latestVersionIndex = versions.IndexOf(versions.Max());
                            if (latestVersionIndex > -1)
                            {
                                //FileInfo finfo = new FileInfo(dirs[latestVersionIndex] + "\\user.config");
                                //finfo.CopyTo(ConfigFilePath);

                                var monahrqConfig = UserSettingsConfig.GetMonahrqSectionGroup().Sections.Get(MonahrqConfigurationSection.MonahrqConfigurationSectionSectionName)
                                                    as MonahrqConfigurationSection;
                                TransformToNewConfig(dirs[latestVersionIndex] + "\\user.config", ConfigFilePath, ref monahrqConfig);

                                Save(monahrqConfig);
                            }
                        }
                    }
                }

                //  Test that section is valid.
                var config             = UserSettingsConfig;
                var group              = config.GetMonahrqSectionGroup();
                var tempMonahrqSetcion = group.Sections.Get(MonahrqConfigurationSection.MonahrqConfigurationSectionSectionName)
                                         as MonahrqConfigurationSection;

                //if (tempMonahrqSetcion != null && !string.IsNullOrEmpty(tempMonahrqSetcion.UpdateScriptToRunAtStartup))
                //    config.Save();
            }
            catch (ConfigurationErrorsException ex)
            {
                var config = UserSettingsConfig;
                var group  = config.GetMonahrqSectionGroup();
                group.Sections.Remove(MonahrqConfigurationSection.MonahrqConfigurationSectionSectionName);
                config.Save(ConfigurationSaveMode.Minimal);
            }
            catch (Exception ex)
            {
                var config = UserSettingsConfig;
                var group  = config.GetMonahrqSectionGroup();
                group.Sections.Remove(MonahrqConfigurationSection.MonahrqConfigurationSectionSectionName);
                config.Save(ConfigurationSaveMode.Minimal);
            }
        }