使用MSDeploy将可执行文件复制到服务器并运行相同的文件。

9
我已成功使用MSDeploy/WebDeploy来更新我的Web应用程序 - 对于我目前设置的东西,这解决了大约90%的部署问题。
除此之外,我想做的是将可执行文件(实际上是一个文件夹的内容)复制到服务器上,然后运行该可执行文件(用于模式更新)。
我可以看到这应该是可能的,但我正在努力将这些元素组合在一起(这显然是一个边缘案例)。
具体来说:
- 我不想将可执行文件(文件夹)复制到Web目录中。 - 我需要考虑运行可执行文件的结果(返回失败状态会很有用,尽管如果重要的话,这将被发布部署测试卡住)。
因此,关键是什么特定的命令以及按照什么顺序运行这些命令 - 如果我能找到模式,我就可以使其正常工作,但我正在努力找出这个模式。
注:
我想到了一种方法,即将文件夹复制到Web目录,运行代码,然后再删除文件夹,但我对此感到不舒服,在任何情况下,最好在部署后在服务器上保留代码。
另外值得注意的是,我真的非常非常满意我维护数据库模式的方式,所以可执行文件正在执行的操作与问题无关。
1个回答

12
Web Deploy提供了很多选项。你选择哪些选项取决于你想在一个命令中放入多少东西。如果要将文件夹中的文件传输到目标位置,可以使用Web Deploy的dirPath提供程序将其复制到所选位置。如果要复制单个文件,则可以使用filePath提供程序。如果您的复制源有许多小文件,则Web Deploy在网络上的性能比RoboCopy更好(请参阅我的博客文章Web Deploy vs. Robocopy)。要运行已复制到目标服务器的命令文件,可以使用runCommand提供程序。(这是一个重要的选项,一定要仔细阅读。)
请注意,此时我们至少谈论了两个不同的Web Deploy命令,不包括任何“常规”的Web Deploy操作,如部署网站或Web服务器。
但是,如果您的目标是在一个Web Deploy操作中完成所有操作,则可以使用manifest提供程序。创建一个自定义清单文件,指定一系列将依次执行的Web Deploy提供程序操作。然后,在Web Deploy命令中,将清单提供程序指向自定义清单文件。有关此方法的更多信息,请参见Creating and Synchronizing a Custom Manifest
如果您使用清单提供程序,则可以在清单文件中指定dirPath提供程序以复制文件,然后在随后的行上指定runCommand提供程序以实际运行您复制的可执行文件。
最后,一个比使用清单文件更简单的方法是使用preSync和/或postSync命令行开关,在实际Web部署操作发生之前或之后在目标服务器上运行命令。您可以在Web Deploy Operation Settings页面上找到有关preSyncpostSync的更多信息。
所有被引用的页面都有语法示例,这应该会有所帮助。

谢谢,这很有帮助 - dirPath + runCommand 应该可以完美地解决问题(我很乐意运行尽可能多的 Web 部署步骤,实际上,如果命令运行失败,我需要在部署网站之前使进程失败) - Murph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接