我正在为C#应用程序创建WIX安装程序。 在应用程序中,我使用System.Configuration.ConfigurationManager.AppSettings [Setting1]来获取设置。
我的问题是,我必须在哪里放置program.exe.config文件才能使用它? 我不能将它与ProgramFiles目录中的程序放在一起,因为这些文件是只读的。
我试过了: 配置config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); config.AppSettings.Settings [Config1] .Value =" Value1&#34 ;; config.Save();
不幸的是,我不知道它在哪里。
谢谢你的回复,Trevy
答案 0 :(得分:1)
它应该在program.exe的同一文件夹中。使用wix将program.exe和program.exe.config复制到所需的文件夹。
如果您需要在安装期间编辑配置文件,则需要使用wix中的自定义操作来执行此操作。确保将文件路径传递给自定义操作并编写代码以读取该文件中的配置并进行编辑。
答案 1 :(得分:0)
问题不在于那里的文件只是readonly - 问题是你试图用config.Save更新Program Files文件夹中的文件,如果你是一个有限的用户,你不能这样做,除非你提升,否则你总是受限制(即使你是管理员)。简短的回答是:
如果您的应用定期更新受限区域中的文件,则可能需要提升,因此请为其提供高程清单。
但是,如果您要求应用程序供有限用户使用并允许他们更新该配置文件,则不要安装到Program Files。例如,选择User Appdata文件夹。 Windows可能在程序启动期间使用您的配置文件,因此您无法将其与exe分开。
答案 2 :(得分:-1)
当我为我的应用创建安装程序时,我发现无法保存我的设置。
原因是,从实际角度来看,Program Files存储库是只读的(应用程序永远不应该使用提升的权限运行)。安装程序时,我们修改MyApp.exe.config文件的唯一时间是安装/升级/修复时间。
配置文件有很多部分。其中之一是userSettings。这是我们存储在应用程序生命周期内需要修改的任何数据的地方。首次运行时,Windows会在用户的AppData文件夹中创建一个隐藏文件。这就是为什么我们可以保存用户设置,即使配置文件与MyApp.exe
在同一目录中所以答案是,如果我们在尝试保存设置时遇到权限错误,则意味着我们将设置写入配置文件的错误部分。我们需要将它放在userSettings部分而不是其他地方。
为方便起见,Visual Studios有一个设置编辑器(属性页面的设置选项卡)。它允许您创建强类型的用户和应用程序设置。由于上述原因,生成的类允许您保存用户设置,但不保存应用程序设置。