我试图制作一个简单的概念验证Web部署方案。我的目标是:
我在没有安装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文件也不是从未打包的文件夹运行。而是将其复制到临时文件夹,然后从那里运行,将当前目录设置为从我运行部署脚本的任何位置。
我也尝试使用参数而不是替换,但这仍然没有任何效果。
我做错了什么?
答案 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>