【问题标题】:Files in AppdataFolder not visible for all the users -WixAppdataFolder 中的文件对所有用户都不可见-Wix
【发布时间】:2015-06-02 07:11:42
【问题描述】:

我开发了一个插件,它的设置是使用 wix 构建的。安装设置时,我需要在该 appdatatfolder 中有许多文件,如帮助文档、日志和 主要模板。文件和文件夹将在安装安装程序时自动创建。

我的需要是

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

【问题讨论】:

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


    【解决方案1】:

    任何需要对所有用户可见的内容都应保存到“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

    【讨论】:

    • 感谢您的回复。谈到您的第二点“任何仅适用于当前用户的内容都应保存到 'AppDataFolder'”中,我需要创建一个目录,该目录应为所有用户创建AppDataFolder 如何做到这一点...??
    • AppDataFolder 是用户特定的位置,它通常(基于操作系统)解析为类似 c:\Users\USERNAME\AppData\Roaming 的位置。只有当前用户可以访问它。您是在问如何在 每个 用户 AppDataFolder 中创建一个文件夹吗?所以所有系统用户都会有这个新的私人位置?如果是这样,那么您可能需要重新考虑您在做什么,因为这在设置期间是不可持续的(设置完成后新用户出现时会发生什么?)。更好的方法是在启动项中安装一个实用程序,以便所有用户在他们第一次登录时完成这项工作。
    • @ArminSadeghi,我想 OP 想知道如何在上面的代码中添加另一个目录定义。
    【解决方案2】:

    公用文件应放在 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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      相关资源
      最近更新 更多