Как изменить настройки приложения/пользователя .NET при установке?
-
22-09-2019 - |
Вопрос
В проекте службы Windows с помощью установщика проекта я попробовал следующее:
[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.
Для меня важно определить эту переменную во время установки, поскольку я получу ее значение из пользовательского ввода в проекте установки.Постоянное значение здесь используется только в целях тестирования.
Решение
Платформа не позволит вам изменить настройки во время установки, поскольку настройки приложения доступны только для чтения и контекст пользователя отсутствует до тех пор, пока служба не будет установлена и запущена (под именем пользователя).
Единственное решение, которое я нашел, — это изменить настройки, используя простую XML-манипуляцию файла конфигурации.Я переопределяю метод Install и вношу изменения в сам файл.