1

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

谢谢

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

4

4 回答 4

4

我不确定哪个地方更适合存储 XML 文件。我不认为这很重要。但是如果你需要在系统中获取特殊的文件夹路径,你可以使用 Environment 类来做到这一点。以下代码行获取程序文件的路径:

string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
于 2008-10-18T20:31:16.103 回答
1

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

1)在您的安装项目中打开“自定义操作”编辑器

2)从您的安装程序类所在的程序集中添加自定义操作(如果您还没有这样做)

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

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

于 2011-08-13T18:29:00.717 回答
1

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

在安装服务器风格的程序(Windows 服务或其他非用户特定程序)时,我所做的是在 Program Files 中随程序一起安装默认或模板 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 设置文件 - 这应该是一次性操作,仅在安装后第一次运行程序时执行。

See here for more information: As a developer, how should I use the special folders in Windows Vista (and Windows 7)?

于 2013-09-16T02:31:59.137 回答
0

您可以随时使用注册表。

于 2008-10-18T20:53:28.243 回答