Создание папок в wix

Я хочу создать папку на диске C, а затем создать некоторые подпапки внутри этой папки в программе установки wix. Но эти папки не связаны с установленной папкой. . Моя программа хочет установить внутри папки AServiceSetup...но я хочу создать папку "PTLogFile" внутри диска C, а затем хочу создать некоторые подпапки внутри этой папки. Пожалуйста, помогите мне исправить мой код.Ниже приведен мой код

    <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 ответов


Спасибо за ваши ответы. Я получил ответ из вышеупомянутых ответов Структура каталогов следующим образом

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

пока вы определили структуру каталогов, установщик будет создавать только каталоги, необходимые для компонентов.

простой вариант-добавить такой компонент, как:

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

и ссылаться на этот компонент в одной из ваших функций.


вы бы предпочли разместить каждый <CreateFolder> элемент, который приводит к записи в таблица CreateFolder, в своем собственном компоненте. В противном случае, я не уверен, что это хорошо соответствует правила составляющая...

сохранить структуру каталогов следующим образом:

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