【问题标题】:Create folders in wix在 wix 中创建文件夹
【发布时间】:2015-05-07 21:12:38
【问题描述】:

我想在 C 盘中创建一个文件夹,然后在 wix 安装程序中的该文件夹内创建一些子文件夹。但这些文件夹与安装的文件夹无关。 .我的程序想安装在 AServiceSetup 文件夹内...但我想在 C 驱动器内创建一个“PTLogFile”文件夹,然后想在该文件夹内创建一些子文件夹。请任何人帮助我更正我的代码。以下是我的代码

    <Directory Id="TARGETDIR" Name="SourceDir">

  <Directory Id="PTLogFile" Name="PTLogFile">
    <Directory Id="Backups" Name="Backups"/>
    <Directory Id="CommandLog" Name="CommandLog"/>
    <Directory Id="EventLog" Name="EventLog"/>
    <Directory Id="Responds" Name="Responds"/>
  </Directory>
        <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLFOLDER" Name="AServiceSetup">
      </Directory>
        </Directory>

    </Directory>
</Fragment>                 

【问题讨论】:

    标签: visual-studio-2012 installation wix directory


    【解决方案1】:

    感谢您的回复。我从上面的回复中得到了答案 目录结构如下

     <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="LogFile" Name="LogFile">
        <Directory Id="Logs" Name="Logs">
          <Directory Id="Log1" Name="Log1"/>
          <Directory Id="Log2" Name="Log2"/>
          <Directory Id="Log3" Name="Log3"/>
          <Directory Id="Log4" Name="Log4"/>
        </Directory>
      </Directory>
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="AServiceSetup">
        </Directory>
      </Directory>
    </Directory>
    

    和组件如下

      <Component Id="CreateLogFolders" Guid="....."  Directory="LogFile" >
        <CreateFolder Directory="LogFile" />
        <CreateFolder Directory="Logs"/>
        <CreateFolder Directory="Log1"/>
       <CreateFolder Directory="Log2"/>
       <CreateFolder Directory="Log3"/>
       <CreateFolder Directory="Log4"/>
     </Component>
    

    并且这个组件在产品的特性里面引用如​​下

     <ComponentRef Id="CreateLogFolders"/>
    

    最后在product里面添加一个属性如下

     <Property Id="LogFile" Value="C:" />
    

    【讨论】:

      【解决方案2】:

      虽然您已经定义了目录结构,但安装程序只会创建组件所需的目录。

      一个简单的选项是添加如下组件:

      <Component Id="CreateLogFolders" Directory="PTLogFile">
          <CreateFolder Directory="PTLogFile" />
          <CreateFolder Directory="Backups" />
          <CreateFolder Directory="CommandLog" />
          <CreateFolder Directory="EventLog" />
          <CreateFolder Directory="Responds" />
      </Component>
      

      并在您的一项功能中引用此组件。

      【讨论】:

      • 感谢您的快速回复...但我收到如下错误。错误 1 ​​ICE18:组件的 KeyPath:'CreateLogFolders' 是目录:'PTLogFile'。目录/组件对必须列在 CreateFolders 表中。
      • 我仍然有同样的错误。请参考以下代码并帮助我...
      • 组件内部需要添加
      • 嗨...对不起我的愚蠢错误,但它仍然无法在 C 盘中创建文件夹。
      • 嗨..这对我来说很紧急。你能尽快回复吗
      【解决方案3】:

      您宁愿将每个&lt;CreateFolder&gt; 元素放置在其自己的组件中,这会导致CreateFolder table 的记录。否则,我不确定这是否符合 component rules...

      保留目录结构如下:

      <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="PTLogFile" Name="PTLogFile" />
        <Directory Id="ProgramFilesFolder">
           <Directory Id="INSTALLFOLDER" Name="AServiceSetup">
        </Directory>
      </Directory>
      

      并以与此类似的方式编写组件:

      <DirectoryRef Id="PTLogFile">
        <Directory Id="Backups">
          <Component Id="..." Guid="...">
            <CreateFolder />
          </Component>
        </Directory>
        <Directory Id="CommandLog">
          <Component Id="..." Guid="...">
            <CreateFolder />
          </Component>
        </Directory>
        <Directory Id="EventLog">
          <Component Id="..." Guid="...">
            <CreateFolder />
          </Component>
        </Directory>
        <Directory Id="Responds">
          <Component Id="..." Guid="...">
            <CreateFolder />
          </Component>
        </Directory>
      </DirectoryRef>
      

      【讨论】:

      • 我认为在这种情况下这不是问题,因为它们只是文件夹,而不是实际资源。这是一个全有或全无的情况,它们在语义上是一回事。
      • Except Component Rules 会说文件夹创建必须永远随组件集合一起提供。您无法从组件中添加或删除(删除可能更具限制性)该集合。文件夹是直接创建的资源。
      • 公平点,虽然我仍然不知道需要做出这种改变的可能性有多大......
      • 嗨..感谢您的回复。我想与您澄清一件事...我想将所有设置 dll 保存在 C:/Program/files/AServiceSetup 文件夹中。但我想要另一个文件夹目录将我的日志详细信息保存在 C:/PTLogFile 中。在这个 PTLogFile...我想创建四个文件夹,如上所述。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多