Wix app.config Область применения и пользователя
У меня есть несколько userSettings и applicationSettings, определенных в моих проектах app.config, идея состоит в том, что пользователь может изменить userSettings в пользовательском интерфейсе, и мы можем изменить applicationSettings при необходимости.
То, что я планирую сделать, это иметь applicationSettings вместе с exe-файлом в папке APPDIR C:\Program Files{Company}{Application} (что означает, что пользователи не могут редактировать файл) и иметь userSettings в LocalAppDataFolder C:\Users\\AppData\Local{Company}{Application}, чтобы приложение могло записывать в файл.
Я был бы признателен за некоторые советы о том, как лучше всего достичь этого с помощью Wix, или даже если это правильный способ достижения того, чего я хочу добиться.
В настоящее время у меня есть:
<!--main installation location-->
<Directory Id="ProgramFilesFolder">
<Directory Id="fooFolder" Name="foo">
<Directory Id="INSTALLFOLDER" Name="Application Name" />
</Directory>
</Directory>
<!-- users appdata folder-->
<Directory Id="LocalAppDataFolder" Name="AppData">
<Directory Id="AppRootDirectory" Name="Application Name" />
</Directory>
</Directory>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="ProductComponent" Guid="{GUID}">
<File Id="app.config.programfiles" Source="$(var.{ProjectName}.TargetDir)/{TargetName}.exe.config" />
</Component>
</ComponentGroup>
<Fragment>
<DirectoryRef Id="ApplicationProgramsFolder">
<Component Id="ApplicationShortcut" Guid="{GUID}">
<Shortcut Id="ApplicationStartMenuShortcut"
Name="My App"
Description="My App description"
Target="[INSTALLFOLDER]$(var.{App}.TargetFileName)"
WorkingDirectory="INSTALLFOLDER"/>
<RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
<RegistryValue Root="HKCU" Key="Software\{Company}\{Application}" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</DirectoryRef>
Это прекрасно работает и помещает файл конфигурации в APPDIR, но я не знаю, что делать с LocalAppDataFolder.
Правильно ли я подхожу к этому?
1 ответ
ОК, так что вы позаботитесь о том, чтобы в первый раз любые пользовательские настройки были изменены с помощью метода Save() автоматически сгенерированного класса Settings:
Settings.Default.MyProperty = "foo";
Settings.Default.Save();
в результате создается файл user.config в LocalAppDataFolder\{Company}\{Application}\{ProductName_xxx}\{Version}, содержащий только содержимое раздела userSettings файла app.config.