使用 MSDeploy 创建包时设置文件夹的写入权限

使用 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提供程序可用于此特定目的,但它可以在创建包时使用吗?

答案1

您可以使用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 调用中,以避免必须动态生成清单,并且您可以在 deploy 调用中使用类似的语句来更改要部署到的站点/路径。您可以将 dest 设置为不同的清单文件,作为后一个问题的替代解决方案。

相关内容