iis - 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。我想了解如何从命令行执行此操作。
解决方案
了解如何执行此操作。除 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']
我猜还有其他方法可以完成同样的事情,但我很高兴找到有效的方法!
推荐阅读
- c - 如何删除字符串中的第一个零?(不使用atoi)
- asp.net-mvc - 如何在 ASP.NET MVC 视图中显示图像?
- java - 新线程的 thread.start() 方法是否立即返回到当前线程?
- ios - 不知何故,我在我的应用程序中丢失了推送通知。我想不通
- c - 得到分段错误。Valgrind (CS50 PSET5 Speller) 上大小为 1 的无效内存写入
- modelica - 何时在 Modelica 语言中使用 noEvent 运算符?
- python - ASCII 期望范围循环
- c# - 将窗体对象添加到绘图
- git - 使用 Git 和 Ansible 管理许多文件的最佳实践
- kubernetes - 如何检查字段是否在自定义资源中显式设置