2014-11-12 3 views
0

У меня есть ряд пользовательских настроек и настроек приложений, определенных в моих проектах app.config, идея заключается в том, что пользователь может изменить пользовательские настройки в пользовательском интерфейсе, и мы можем в случае необходимости изменить настройки приложения.Wix app.config Application and User Scope

Что я планирую сделать, это иметь параметры приложения вместе с exe в папке APPDIR C: \ Program Files {Company} {Application} (что означает, что пользователи не могут редактировать файл) и иметь пользовательские настройки в LocalAppDataFolder C: \ Пользователи \\ AppData \ Local {Company} {Приложение}, чтобы приложение могло записывать файл.

Буду признателен за то, как наилучшим образом добиться этого с помощью 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> 

Это прекрасно работает и НОАК es конфигурационный файл в APPDIR, но я не знаю, что делать с LocalAppDataFolder.

Я подхожу к этому правильным способом?

+0

Настоящий [статья] (http://www.codeproject.com/Articles/616065/Why-Where-and-How-of-NET-Configuration-Files) является хорошим обзором; Не пропустите раздел об обновлении. –

ответ

0

ОК, так что это позаботятся для вас в первый раз, что любой из UserSettings будут внесены поправки с помощью метода Save() из сгенерированного класса Настройки:

Settings.Default.MyProperty = "foo"; 
Settings.Default.Save(); 

, который приводит к созданию пользователь .config в файле LocalAppDataFolder \ {Company} \ {Application} \ {ProductName_xxx} \ {Version}, содержащем только содержимое раздела userSettings файла app.config.