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.

Другие вопросы по тегам