使用安装程序部署应用程序's xml文件,如果应用程序不存在,则动态创建它
本文关键字:应用程序 不存在 如果 文件 创建 动态 xml 程序 安装 部署 | 更新日期: 2023-09-27 18:08:48
我有一个xml文件,如:
<CurrentProject>
// Elements like
// last opened project file to reopen it when app starts
// and more global project independend settings
</CurrentProject>
现在我问自己,我是否应该为我的应用程序的安装程序提供上述空元素的xml文件,或者我应该在应用程序启动时创建这个文件,如果它不存在,否则从它读取值。
考虑到用户可以删除这个文件,如果我的应用程序不再阻止工作。
什么更好,为什么?
:
我所做的对我来说很好,所以我把我的代码贴在这里:)它只是在飞行中创建了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);
}
}
}
在一个类似的场景中,我最近尝试动态创建初始文件。我选择这个的主要原因是我不依赖于这个文件的存在和有效性。由于这是一个经常被读取/写入的文件,因此它有可能被损坏(例如,如果在文件被写入时电源丢失)。
在我的代码中,我试图打开这个文件进行读取,然后读取数据。如果在这些步骤中的任何地方遇到错误,我只需使用默认值重新创建文件并向用户显示相应的消息。