我正在使用 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 设置为不同的清单文件,作为后一个问题的替代解决方案。