6

我想在 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>                 
4

3 回答 3

11

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

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

最后在产品内部添加一个属性如下

 <Property Id="LogFile" Value="C:" />
于 2013-03-19T11:42:53.117 回答
4

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

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

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

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

于 2013-03-19T11:03:21.207 回答
1

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

保留目录结构如下:

<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>
于 2013-03-19T12:17:59.450 回答