在wix中创建文件夹

时间:2013-03-19 10:40:12

标签: visual-studio-2012 installer wix directory

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

3 个答案:

答案 0 :(得分: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:" />

答案 1 :(得分:4)

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

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

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

并在您的某个功能中引用此组件。

答案 2 :(得分:1)

您宁愿将每个<CreateFolder>元素放置在自己的组件中,这会在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>