首页 > 解决方案 > msdeploy 从包含多个站点的包中还原一个站点

问题描述

我们为多个站点创建一个 msdeploy 包,如下所示:

"c:\Program Files\iis\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:manifest=MultipleSitesMultipleProviders.xml -dest:package=Test.zip,encryptPassword="password" -disableLink:ContentExtension -enableLink:AppPoolExtension  

MultipleSitesMultipleProviders.xml

<sitemanifest>

   <appHostConfig path="SITE1" />
   <appPoolNetFx path="SITE1" />
   <dirPath path="C:\SITES\SITE1" />

   <appHostConfig path="SITE2" />
   <appPoolNetFx path="SITE2" />
   <dirPath path="C:\SITES\SITE2" />

   <appHostConfig path="SITE3" />
   <appPoolNetFx path="SITE3" />
   <dirPath path="C:\SITES\SITE3" />

</sitemanifest>

以下是该软件包的恢复方式

"c:\Program Files\iis\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -dest:auto -source:package=Test.zip,encryptPassword="password"

这将恢复所有三个站点。我要解决的问题是如何告诉 msdeploy.exe 仅恢复我以某种方式指定的站点之一。我认为这可以使用-skip 规则来完成,该规则会告诉部署跳过我们不想安装的两个站点。但我无法理解该命令的格式可能是什么样的。

这甚至可能吗?任何帮助都将不胜感激!谢谢你。

更新:我想我找到了一种通过 UI 执行此操作的方法。导入服务器或站点包 这仅从包含两个站点的包中安装了 SITE1 而不是 SITE2。我想了解如何从命令行执行此操作。

标签: iisrestorewebdeploy

解决方案


了解如何执行此操作。除 SITE1 之外的所有站点都被排除在外。您需要使用包 zip 文件中的 archive.xml 并提出 xpath 表达式,该表达式将排除由六个 MultipleSitesMultipleProviders.xml 条目生成的六个元素。

阻止文件复制的 xpath 很棘手,因为 archive.xml 中的元素是 '<MSDeploy.dirPath>' 并且您认为 xpath 表达式将是 //MSDeploy.dirPath[@path='C:\SITES \SITE3'] 但那没有用,但 //dirPath[@path='C:\SITES\SITE3'] 确实有效。不知道为什么会这样。

-skip=xPath=//appHostConfig[@path='SITE2'] -skip:xPath=//appPoolNetFx[@Site='SITE2'] -skip:xPath=//dirPath[@path='C:\SITES\SITE2'] -skip=xPath=//appHostConfig[@path='SITE3'] -skip:xPath=//appPoolNetFx[@Site='SITE3'] -skip:xPath=//dirPath[@path='C:\SITES\SITE3'] 

我猜还有其他方法可以完成同样的事情,但我很高兴找到有效的方法!


推荐阅读