Разверните xml-файл приложения с помощью установщика или создайте его на лету, если он не существует - PullRequest
0 голосов
/ 18 сентября 2011

У меня есть XML-файл вроде:

<CurrentProject>
// Elements like 
// last opened project file to reopen it when app starts
// and more global project independend settings
</CurrentProject>

Теперь я спросил себя, должен ли я доставить этот xml-файл с указанными выше пустыми элементами вместе с программой установки для моего приложения, или я должен создать этот файл на лету при запуске приложения, если он не существует, иначе прочитайте значения из него.

Учтите также, что пользователь может удалить этот файл и что мое приложение больше не будет работать.

Что лучше и почему?

UPDATE :

То, что я сделал, было для меня нормально, поэтому я публикую здесь свой код :) Он просто создает структуру xml + на лету с некоторыми проверками безопасности ...

public ProjectService(IProjectDataProvider provider)
       {
           _provider = provider;   

           string applicationPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
           _projectPath = Path.Combine(applicationPath,@"TBM\Settings.XML");

           if (!File.Exists(_projectPath))
           {
               string dirPath = Path.Combine(applicationPath, @"TBM");

               if (!Directory.Exists(dirPath))
                   Directory.CreateDirectory(dirPath);

               using (var stream = File.Create(_projectPath))
               {
                   XElement projectElement = new XElement("Project");
                   projectElement.Add(new XElement("DatabasePath"));

                   projectElement.Save(stream, SaveOptions.DisableFormatting);   
               }   
           }                
       } 

1 Ответ

1 голос
/ 18 сентября 2011

В похожем сценарии я недавно пошел на создание исходного файла на лету. Основной причиной, по которой я выбрал это, был тот факт, что я не зависел от того, был ли этот файл там и был ли он действительным. Поскольку этот файл часто читается / записывается, есть вероятность, что он может быть поврежден (например, если питание теряется во время записи файла).

В своем коде я попытался открыть этот файл для чтения, а затем прочитать данные. Если во время этих шагов я обнаружил ошибку, я просто заново создал файл со значениями по умолчанию и отобразил соответствующее сообщение пользователю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...