在Windows服务项目中,使用Project Installer我尝试了以下操作:
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
protected override void OnBeforeInstall(System.Collections.IDictionary savedState)
{
base.OnBeforeInstall(savedState);
Settings.Default.ASetting = "aValue";
Settings.Default.Save();
}
protected override void OnAfterInstall(System.Collections.IDictionary savedState)
{
base.OnAfterInstall(savedState);
Settings.Default.ASetting = "aValue";
Settings.Default.Save();
}
}
但是在我检查.config文件安装后,仍然存在较旧的值。通常的[userfolder] \ AppData \ Local
中没有.config文件对我而言,在安装时定义此变量非常重要,因为我将从安装项目中的用户输入中接收其值。此处的常量值仅用于测试目的。
答案 0 :(得分:1)
该框架不允许您在安装时更改设置,因为应用程序设置是只读的,并且在安装并运行服务之前没有用户上下文(在用户名下)。
我找到的唯一解决方案是使用配置文件的纯XML操作来更改设置。我重写了Install方法并对文件本身进行了更改。