代码之家  ›  专栏  ›  技术社区  ›  JoeT

msdeploy从包含多个站点的包中还原一个站点

  •  0
  • JoeT  · 技术社区  · 8 年前

    我们为多个站点创建一个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 rule 这将告诉部署人员跳过我们不想安装的两个站点。但我无法理解这个命令的格式。

    这是否可能?任何帮助都将不胜感激!谢谢您。

    更新:我想我找到了一种通过用户界面实现这一点的方法。 Import Server or Site Package 这只从包含两个站点的包中安装了Site1而不是Site2。我想从命令行了解如何执行此操作。

    1 回复  |  直到 8 年前
        1
  •  0
  •   JoeT    8 年前

    知道怎么做。排除站点1以外的所有站点。您需要在包zip文件中使用archive.xml,并想出一个xpath表达式,该表达式将排除由六个multiplesitemultipleproviders.xml条目生成的六个元素。

    由于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'] 
    

    我猜还有其他方法可以做到同样的事情,但我很高兴能找到一些有用的方法!