2013-03-19 4 views
6

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

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

ответ

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

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

простой вариант, чтобы добавить компонент, как следующее:

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

и ссылки этот компонент в одном из своих возможностей.

+0

спасибо за ваш быстрый ответ ... Но я получил ошибку, как показано ниже. Исключение ICE18: KeyPath для компонента: «CreateLogFolders» - это каталог: «PTLogFile». Параметр Directory/Component должен быть указан в таблице CreateFolders. – Programmer

+0

Ах да, обновлено выше. – ChrisPatrick

+0

По-прежнему у меня такая же ошибка. Пожалуйста, ознакомьтесь со следующими кодами и помогите мне ... <Идентификатор компонента = «Создать логические папки» Каталог = «PTLogFile» Guid = "2F15F916-2EEF-4F62-AE23-BC2882A9E12E"> Programmer

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

Я не считаю, что это проблема в этом случае, поскольку это только папки, а не фактические ресурсы. Это случай «все или ничего», когда они семантически одно. – ChrisPatrick

+0

За исключением Компонентных правил, скажем, создание папки должно было бы поставляться с этой коллекцией компонентов навсегда. Вы не можете добавлять или удалять (удалять, возможно, более ограничивающие) набор из Компонента. Папки являются ресурсами при создании напрямую. –

+0

Справедливая точка, хотя я до сих пор не знаю, насколько вероятно, что нужно будет сделать это изменение ... – ChrisPatrick

Смежные вопросы