在VS2008中,我编写了一个c#服务,一个安装程序并创建了一个安装程序包来安装它。该服务需要加载xml文件才能运行。将此文件放在VS安装项目提供的各种文件系统文件夹中的最佳位置在哪里,我如何从代码中引用这些路径?

由于

[我应该指出该服务作为LocalService运行,这意味着“用户的应用程序数据文件夹”提供的applicationdata文件夹即使在“为所有用户安装”时,也无法访问VS安装项目中的项目。在安装过程中使用。我可以很容易地解决这个问题,但是想要了解最佳实践]

有帮助吗?

解决方案

我不确定哪个地方更适合存储XML文件。我认为这不重要。但是,如果您需要在系统中获取特殊文件夹路径,则可以使用Environment类来执行此操作。以下代码行获取Program Files的路径:

string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);

其他提示

读取从安装项目创建的安装程序使用的安装路径:

1)打开“自定义操作”您的设置项目中的编辑器

2)从安装程序类所在的程序集中添加自定义操作(如果尚未执行此操作)

3)选择此自定义操作并将 / myKey =" [TARGETDIR] \" 添加到属性网格中的CustomActionData

4)在您的安装程序类中,您可以按如下方式访问您的值:方法覆盖中的 Context.Parameters [" myKey"] 取决于您在步骤2中的选择

这是一个非常古老的问题,但由于我不同意接受的答案,至少如果程序会更新XML文件,我会发布这个。

安装服务器式程序(Windows服务或其他非特定于用户的程序)时,我要做的是在程序文件中安装默认或模板XML设置文件以及程序。但我从不尝试写入该文件 - 通常不允许这样做。

相反,在程序初始化期间,我测试文件是否先前已复制到我在C:\ ProgramData下创建的子文件夹,即“C:\ ProgramData \ myCompanyName \ myProgramName \ mySettingsFile.xml”。 (使用Environment.SpecialFolder.CommonApplicationData查找C:\ ProgramData - 请参阅此处: http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx )。如果XML设置文件已经存在,我只需打开它并使用它 - 它是可写的。如果它不存在,那么我会根据需要创建子文件夹并从Program Files复制模板XML设置文件 - 这应该是一次性操作,只有在安装后第一次运行程序时才会执行。

有关详细信息,请参阅此处:作为开发人员,我应该如何使用Windows Vista(和Windows 7)中的特殊文件夹?

您可以随时使用注册表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top