AppdataFolder中的文件对所有用户都不可见-Wix

时间:2015-06-02 07:11:43

标签: wix windows-installer installer setup-project wix3.5

我已经开发了一个插件,其设置是使用wix构建的。当安装设置时,我需要在该appdatat文件夹中有许多文件,如helpdocument,logs和 Mainly Templates 。文件和文件夹将安装完成后自动创建。

我需要

  
      
  1. 最初我的问题是,此文件夹和文件仅为安装了安装程序的用户创建。但我希望这些文件夹和文件可见   适用于所有用户,包括admin。
  2.   
  3. 该文件和文件夹包含模板,此处有两种类型的模板 2.1.PRE DEFINED TEMPLATES ,它们包含在设置中   应该对所有用户可见。 2.2.USER DEFINED TEMPLATES   用户在使用应用程序时创建的应该只对用户可见   创建它。(即)它必须是用户特定的。
  4.   

2 个答案:

答案 0 :(得分:3)

所有用户都需要看到的内容应该保存到“CommonAppDataFolder”中,只有当前用户的任何内容都应该保存到“AppDataFolder”中。

只需创建一个ID设置为适当值的Directory元素,如下所示:

  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="CommonAppDataFolder">
        <Directory Id="INSTALLDIR" Name="CommonTemplates"/>
      </Directory>

      <Directory Id="AppDataFolder">
        <Directory Id="INSTALLDIR2" Name="UserSpecificTemplates"/>
      </Directory>
    </Directory>
  </Fragment>

有关其他常见位置,请参阅此列表:https://msdn.microsoft.com/en-us/library/aa370905(VS.85).aspx#system_folder_properties

答案 1 :(得分:1)

公共文件应该放在Program Data文件夹中,该文件夹通常解析为“C:\ ProgramData”。在Windows安装程序中,这源自“CommonAppDataFolder”。通常情况下,将您的公司和产品名称包含在路径中,以尽量减少与其他产品发生冲突的可能性。使用WIX:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="CommonAppDataFolder">
    <Directory Id="CompanyCommonAppDataFolder" Name="MyCompanyName">
      <Directory Id="ProductCommonAppDataFolder" Name="ProductName"/>
    </Directory>
  </Directory>
</Directory>

在典型系统上,这将创建文件夹C:\ProgramData\MyCompanyName\ProductName

对于特定于用户的文件夹,有两组用户配置文件夹:本地和漫游。为了获得最大的可移植性,通常最好使用Local配置文件。

在安装程序中创建本地配置文件文件夹更具挑战性。可以使用广告的捷径。当用户第一次从快捷方式运行产品时,公布的快捷方式会调用安装程序来安装组件。在此组件中,您可以包含<CreateFolder...>元素,以在用户的​​配置文件中创建其他目录。用户个人资料文件夹应该来自LocalAppDataFolder,并且公共文件夹也应该在路径中包含您的公司和产品名称,以避免与其他产品发生冲突。

另一种方法是让您的应用程序在启动时直接创建用户文件夹。我个人更喜欢这种方式,因为调试广告的捷径可能有些困难。传递System.Environment.GetFolderPath()的函数Environment.SpecialFolder.LocalAppData返回当前用户本地配置文件的路径。您可以将其用作应用程序中用户文件夹的基础。