Как создать папку в папке windows с помощью установщика wix 3.8

Мне нужно установить файл в обычную папку установки (т.е. c:\program files\mycompany\myapp), но мне также нужно скопировать файлы в подпапку, расположенную в папке Windows, т.е. c:\windows\myfolder.

Хотя у меня нет проблем с папкой «установить», я не вижу, как создать подпапку в c:\windows?

Есть идеи?

Спасибо.

Тьерри

ОБНОВЛЕНИЕ:

Я, вероятно, должен был быть немного более точным и предоставить дополнительную информацию. Это xml, который у меня есть:

<Fragment>
  <Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFilesFolder">
      <Directory Id="INSTALLFOLDER" Name="MyCompany">
        <Directory Id="ClientFolder" Name="Client">
        </Directory>
        <Directory Id="ServerFolder" Name="Server">
        </Directory>
      </Directory>
    </Directory>
  </Directory>
  <Directory Id="WindowsFolder" Name="WindowsFolder">
    <Directory Id="MyFolder" Name="MyFolder"></Directory>
  </Directory>
</Fragment>

Когда я пытаюсь скомпилировать свой проект wix, я получаю следующую ошибку:

Error 1 : The Directory with Id 'WindowsFolder' is not a valid root directory.  
There may only be a single root directory per product or module and its Id attribute 
value must be 'TARGETDIR' and its Name attribute value must be 'SourceDir'

PS: я новичок в этом, и я читаю книгу о том, как использовать Wix, но мне нужно это как можно скорее, поэтому, пожалуйста, будьте терпеливы со мной :). Спасибо.


person Thierry    schedule 04.06.2014    source источник
comment
У вас может быть только 1 корневая папка... TARGETDIR. Все остальные папки должны быть дочерними. WF должен быть братом PFF.   -  person Christopher Painter    schedule 04.06.2014
comment
@ChristopherPainter ... Я только что ответил на свой вопрос, но ваш комментарий - это именно то, чего мне не хватало! Спасибо.   -  person Thierry    schedule 05.06.2014


Ответы (3)


Вы создаете элементы каталога на основе Свойства системной папки. . В частности, свойство WindowsFolder. Затем создайте дочерний элемент каталога для вашей папки.

У вас должно быть очень сильное обоснование, прежде чем делать это, так как это область операционной системы. Обычно я говорю разработчикам «нет», если только у них нет очень-очень веской причины.

person Christopher Painter    schedule 04.06.2014
comment
Мне это тоже не нравится, но это требование для стороннего инструмента, который мы используем с нашим программным обеспечением. - person Thierry; 04.06.2014

Копейка упала!!

Вам нужно добавить ссылку на каталог непосредственно под

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

вместе с остальными вашими каталогами. Вы получите что-то вроде этого

  <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLFOLDER" Name="MyApp">
      <Directory Id="ClientFolder" Name="Client"/>
    </Directory>
  </Directory>
  <Directory Id="WindowsFolder">
    <Directory Id="MyFolder" Name="MyFolder"/>
  </Directory>
</Directory>

Если WindowsFolder скажет установщику использовать папку «windows» и использовать подпапку внутри нее, просто установите для каталога вашей группы компонентов (или другого) значение MyFolder, т.е.

<ComponentGroup Id="MyFolderComponents" Directory="MyFolder">
  ..
  ..
</ComponentGroup>
person Thierry    schedule 05.06.2014

Эта ваша обычная установочная папка основана на дереве, в котором где-то будет ProgramFilesFolder, а затем имя вашей подпапки. Вы делаете то же самое для папки Windows, используя стандартное свойство установщика Windows:

Папка Windows

который является одним из этой группы:

Справочник по свойствам

person PhilDW    schedule 04.06.2014
comment
Я не уверен, что вы говорите. Я добавил xml в свой проект. - person Thierry; 04.06.2014