【问题标题】:Locating installer paths in c#在 C# 中定位安装程序路径
【发布时间】:2010-09-17 22:41:50
【问题描述】:

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

谢谢

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

【问题讨论】:

    标签: c# visual-studio-2008 installation service


    【解决方案1】:

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

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

    【讨论】:

    • 好的,简单的例子。安装程序创建文件夹 %program files%\mycompany\myapp ,但如果安装人员更改安装路径,这可能会发生变化。那么,例如,我怎样才能进入安装文件夹?此示例中的代码仅适用于 ProgramFiles。
    • 您在寻找安装 myapp 的文件夹吗?仅查看程序集所在的目录怎么样? IE。 Assembly.GetExecutingAssembly().Location?
    【解决方案2】:

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

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      在安装服务器样式程序(Windows 服务或其他非用户特定程序)时,我所做的是将默认或模板 XML 设置文件与程序一起安装在 Program Files 中。但我从不尝试写入该文件——这通常是不允许的。

      相反,在程序初始化期间,我测试该文件是否先前已复制到我在 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 设置文件 - 这应该是一次性操作,仅在安装后第一次运行程序时执行。

      更多信息请看这里:As a developer, how should I use the special folders in Windows Vista (and Windows 7)?

      【讨论】:

        【解决方案4】:

        您可以随时使用注册表。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-03
          相关资源
          最近更新 更多