Назад | Перейти на главную страницу

Установка прав на запись для папок при создании пакета с помощью MSDeploy

Я использую MSDeploy для создания артефакта на этапе сборки в NAnt. Этот конкретный шаг сборки вызывается при успешной компиляции. Затем артефакт используется для развертывания.

Вот шаг, указанный в моем файле сборки.

  <target name="BuildMsDeployPackage" depends="StageForMsDeployPackaging">
    <exec program="${msdeploy.exe}"
          workingdir="${buildDirectory}"
          verbose="true"
          commandline="-verb:sync 
                      -source:iisapp=${packagingDirectory} 
                      -dest:package=${publishDirectory}\${webapp.artifact.zip}"/>

В source вот мой веб-проект.

Я хочу иметь возможность указать доступ для записи к паре папок в созданном пакете. Это возможно? Я знаю что есть setAcl поставщика для этой конкретной цели, но можно ли его использовать при создании пакета?

Вы можете использовать manifest провайдер для включения нескольких поставщиков в синхронизацию, которые будут работать с пакетом:

msdeploy verb:sync -source:manifest=manifest.xml -dest:package=package.zip
msdeploy verb:sync -source:package=package.zip -dest:auto,computerName=...

затем manifest.xml является:

<multipleAcls>
    <iisApp path="local iis app or path" />
    <setAcl path="remote iis site name/relative path1" setAclAccess="Write" />
    <setAcl path="remote iis site name/relative path2" setAclAccess="Read" />
</multipleAcls>

Ты можешь использовать параметры или операторы замены в вызове dest: package, чтобы избежать необходимости динамически генерировать манифест, и вы можете использовать аналогичные операторы в вызове развертывания, чтобы изменить сайт / путь, на который вы развертываете. Вы можете установить свой dest в другой файл манифеста в качестве альтернативного решения последней проблемы.