【问题标题】:Where to place the program.exe.config file when creating a WIX installer创建 WIX 安装程序时 program.exe.config 文件的放置位置
【发布时间】:2015-02-07 03:09:13
【问题描述】:

我正在为 C# 应用程序创建 WIX 安装程序。 在应用程序中,我使用 System.Configuration.ConfigurationManager.AppSettings[Setting1] 来获取设置。

我的问题是,我必须将 program.exe.config 文件放在机器上的哪个位置才能正常工作? 我不能将它与程序一起放在 ProgramFiles 目录中,因为这些文件是只读的。

我试过了: 配置配置 = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); config.AppSettings.Settings[Config1].Value = "Value1"; config.Save();

很遗憾,我不知道它在寻找什么。

谢谢你的回复,特里维

【问题讨论】:

标签: wix configuration-files


【解决方案1】:

它应该在 program.exe 的同一文件夹中。使用 wix 将 program.exe 和 program.exe.config 复制到所需的文件夹。

如果您需要在安装过程中编辑配置文件,您需要使用 wix 中的自定义操作来完成。确保将文件路径传递给自定义操作并编写代码以读取该文件中的配置并进行编辑。

【讨论】:

    【解决方案2】:

    问题不在于那里的文件是只读的 - 问题在于您正在尝试使用 config.Save 更新 Program Files 文件夹中的文件,如果您是受限用户,则不能这样做,除非您提升,否则您总是受到限制(即使您是管理员)。简短的回答是:

    1. 如果您的应用程序定期更新受限区域中的文件,那么它可能需要提升,所以给它一个提升清单。

    2. 但是,如果您要求有限用户使用您的应用并允许他们更新该配置文件,则不要安装到 Program Files。例如,选择 User Appdata 文件夹。 Windows 可能在程序启动期间使用您的配置文件,因此您无法将其与 exe 分开。

    【讨论】:

    • 我确实将它放在了 Appdata 文件夹中。问题是,我如何让程序找到它?谢谢。
    【解决方案3】:

    当我为我的应用创建安装程序时,我发现我无法保存我的设置。

    原因是因为 Program Files 存储库,从实际的角度来看,是只读的(应用程序永远不应以提升的权限运行)。安装程序时,我们修改MyApp.exe.config文件的唯一时间是安装/升级/修复时。

    配置文件有很多部分。其中之一是用户设置。这是我们存储在应用程序生命周期内需要修改的任何数据的地方。首次运行时,Windows 会在用户的 AppData 文件夹中创建一个隐藏文件。这就是为什么我们可以保存用户设置,即使配置文件与 MyApp.exe 位于同一目录中

    所以答案是,如果我们在尝试保存设置时遇到权限错误,这意味着我们将设置写入配置文件的错误部分。我们需要将它放在 userSettings 部分,而不是其他任何地方。

    为方便起见,Visual Studios 有一个设置编辑器(属性页的设置选项卡)。它允许您创建强类型的用户和应用程序设置。由于上述原因,生成的类允许您保存用户设置,但不能保存应用程序设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 2021-03-17
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多