Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AppdataFolder中的文件对所有用户都不可见-Wix_Wix_Windows Installer_Installation_Setup Project_Wix3.5 - Fatal编程技术网

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

AppdataFolder中的文件对所有用户都不可见-Wix,wix,windows-installer,installation,setup-project,wix3.5,Wix,Windows Installer,Installation,Setup Project,Wix3.5,我开发了一个加载项,其中的安装程序是使用wix构建的。安装安装程序时,我需要在该appdatatfolder中包含许多文件,如helpdocument、日志和主要模板。安装安装程序时,将自动创建文件和文件夹 我的需要是 最初我的问题是,此文件夹和文件仅为安装安装程序的用户创建。但我希望这些文件夹和文件可见 适用于所有用户,包括管理员 该文件和文件夹包含模板,这里有两种类型的模板2.1。预定义模板包含在安装-It中 应该对所有用户可见2.2.用户定义的模板 由用户在使用应用程序时创建,并且仅对 创

我开发了一个加载项,其中的安装程序是使用wix构建的。安装安装程序时,我需要在该appdatatfolder中包含许多文件,如helpdocument、日志和主要模板。安装安装程序时,将自动创建文件和文件夹

我的需要是

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

  • 需要对所有用户可见的任何内容都应保存到“CommonAppDataFolder”中,仅针对当前用户的任何内容都应保存到“AppDataFolder”中

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

      <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>
    
    
    

    有关其他常见位置,请参阅此列表:

    所有需要对所有用户可见的内容都应保存到“CommonAppDataFolder”中,而仅针对当前用户的内容都应保存到“AppDataFolder”中

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

      <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>
    
    
    

    有关其他常用位置,请参阅此列表:

    常用文件应放在程序数据文件夹中,该文件夹通常解析为“C:\ProgramData”。在windows installer中,这源于“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

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

    在安装程序中创建本地配置文件文件夹更具挑战性。使用广告宣传的捷径是可能的。当用户第一次从快捷方式运行产品时,播发的快捷方式将调用安装程序来安装组件。在这个组件中,您可以包含一个
    元素,以便在用户配置文件中创建一个附加目录。用户配置文件文件夹应源自
    LocalAppDataFolder
    ,并且与公用文件夹一样,还应在路径中包含您的公司和产品名称,以避免与其他产品发生冲突


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

    常用文件应放在程序数据文件夹中,该文件夹通常解析为“C:\ProgramData”。在windows installer中,这源于“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

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

    在安装程序中创建本地配置文件文件夹更具挑战性。使用广告宣传的捷径是可能的。当用户第一次从快捷方式运行产品时,播发的快捷方式将调用安装程序来安装组件。在这个组件中,您可以包含一个
    元素,以便在用户配置文件中创建一个附加目录。用户配置文件文件夹应源自
    LocalAppDataFolder
    ,并且与公用文件夹一样,还应在路径中包含您的公司和产品名称,以避免与其他产品发生冲突


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

    非常感谢您的回复。关于您的第二点“仅适用于当前用户的任何内容都应保存到“AppDataFolder”中。”我需要为AppDataFolder中的所有用户创建一个目录。如何执行此操作…?AppDataFolder是一个特定于用户的位置,通常(基于操作系统)解析为c:\users\USERNAME\AppData\Roaming。只有当前用户才能访问它。你是不是在问如何在每个用户的AppDataFolder中创建一个文件夹?那么所有系统用户都会有这个新的私有位置?如果是这样,那么您可能需要重新考虑您正在做的事情,因为这在安装过程中是不可持续的(当安装完成后新用户出现时会发生什么情况?)。更好的方法是在启动项中安装一个实用程序,以便所有用户在首次登录时都能执行此操作。@ArminSa