Wix app.config应用程序和用户范围

时间:2014-11-12 11:08:26

标签: wix app-config settings

我的项目app.config中定义了许多userSettings和applicationSettings,用户可以修改UI中的userSettings,我们可以在必要时修改applicationSettings。

我打算做的是在APPDIR C:\ Program Files {Company} {Application}文件夹中将applicationSettings放在exe旁边(这意味着用户无法编辑文件)并在LocalAppDataFolder C:\ Users中使用userSettings \\ 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 个答案:

答案 0 :(得分:0)

好的,所以第一次使用自动生成的Settings类的Save()方法修改任何userSettings时,这将为您解决:

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

导致在LocalAppDataFolder \ {Company} \ {Application} \ {ProductName_xxx} \ {Version}中创建一个user.config文件,其中仅包含app.config的userSettings部分的内容。