如何使Web Deploy(msdeploy)部署在不同的文件夹中?

时间:2014-04-28 00:41:00

标签: msdeploy webdeploy

我试图制作一个简单的概念验证Web部署方案。我的目标是:

  1. 获取包含少量文件的文件夹并将其打包为.zip文件
  2. 将.zip文件解压缩到不同的文件夹
  3. 从解压缩的文件夹中运行.exe(同时让.exe知道解压缩的位置)。
  4. 我在没有安装IIS的虚拟机上执行此操作,否则它出于某种原因想要读取IIS配置,即使它不需要对它执行任何操作(并且由于缺少它而失败)行政权)。

    我有以下文件:

    C:\Temp\TheFolder\readme.txt
    C:\Temp\TheFolder\MagicScript\CSTest.exe
    

    .zip包是通过清单创建的:

    <sitemanifest>
      <contentPath path="C:\Temp\TheFolder"/>
      <runCommand path="C:\Temp\TheFolder\MagicScript\CSTest.exe"/>
    </sitemanifest>
    

    对于包装,我使用以下命令:

    msdeploy -verb:sync -source:manifest=manifest.xml -dest:package=ready.zip
    

    对于解包,我使用以下命令:

    msdeploy -verb:sync -source:package=ready.zip -dest:auto -replace:match=TheFolder,replace=OtherFolder
    

    然而,MSDeploy顽固地解压缩同一TheFolder中的所有内容。 .exe文件也不是从未打包的文件夹运行。而是将其复制到临时文件夹,然后从那里运行,将当前目录设置为从我运行部署脚本的任何位置。

    我也尝试使用参数而不是替换,但这仍然没有任何效果。

    我做错了什么?

1 个答案:

答案 0 :(得分:0)

“msdeploy -verb:sync” - 执行源和目标之间的同步。如果您使用“自动”提供程序 - 它会将源与目标同步,因此在您的情况下,在同一台PC上它是同一个文件夹。 “replace”参数仅适用于文件。

您可以尝试以下方式:

msdeploy -verb:sync -source:package=ready.zip -dest:contentPath="C:\Temp\OtherFolder"

或者,如果它不起作用,请尝试使用目标清单:

msdeploy -verb:sync -source:package=ready.zip -dest:-source:manifest=manifestDestination.xml

manifestDestination.xml是:

<sitemanifest>
  <contentPath path="C:\Temp\OtherFolder"/>
  <runCommand />
</sitemanifest>