我已经:
- 创建了一个msdeploy清单,以实现:
停止、卸载、复制、安装和启动Windows服务。 - 从清单中创建了一个包。
- 对远程服务器执行了msdeploy命令。
问题:它会执行整个清单两次。
尝试过:我已经调整了waitInterval和waitAttempts,以为它会超时并重新开始,但没有帮助。
问题:是什么原因导致了它执行两次?
清单内容:
<sitemanifest>
<runCommand path="net stop TestSvc"
waitInterval="240000"
waitAttempts="1"/>
<runCommand
path="C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u
C:\msdeploy\TestSvc\TestSvc\bin\Debug\TestSvc.exe"
waitInterval="240000"
waitAttempts="1"/>
<dirPath path="C:\msdeploy\TestSvc\TestSvc\bin\Debug" />
<runCommand
path="C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe
C:\msdeploy\TestSvc\TestSvc\bin\Debug\TestSvc.exe"
waitInterval="240000"
waitAttempts="1"/>
<runCommand path="net start TestSvc"
waitInterval="240000"
waitAttempts="1"/>
</sitemanifest>
用于打包的命令:
"C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy"
-verb:sync
-source:manifest=c:\msdeploy\custom.xml
-dest:package=c:\msdeploy\package.zip
执行该命令的命令:
"C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy"
-verb:sync
-source:package=c:\msdeploy\package.zip
-dest:auto,computername=<computerNameHere>
我正在以拥有管理员访问权限的域用户身份运行。 我已经尝试了传递凭据 - 这不是权限问题,命令成功执行,只是执行两次。
编辑:
我启用了 -verbose
并在日志中发现了一些有趣的行:
详细信息:执行同步传递#1。
...
详细信息:源文件路径(C:\ msdeploy \ MyTestWindowsService \ MyTestWindowsService \ bin \ Debug \ MyTestWindowsService.exe)与目标文件路径(C:\ msdeploy \ MyTestWindowsService \ MyTestWindowsService \ bin \ Debug \ MyTestWindowsService.exe)不匹配,在属性上不同(lastWriteTime ['11/08/2011 23:40:30','11/08/2011 23:39:52'])。 更新待处理。
详细信息:源文件路径(C:\ msdeploy \ MyTestWindowsService \ MyTestWindowsService \ bin \ Debug \ MyTestWindowsService.pdb)与目标文件路径(C:\ msdeploy \ MyTestWindowsService \ MyTestWindowsService \ bin \ Debug \ MyTestWindowsService.pdb)不匹配,在属性上不同(lastWriteTime ['11/08/2011 23:40:30','11/08/2011 23:39:52'])。 更新待处理。
在这些行之后,文件第一次不会被复制,但第二次会被复制
...
详细信息:依赖项检查“DependencyCheckInUse”未发现问题。
详细信息:从代理收到响应(HTTP状态 'OK')。
详细信息:当前同步传递缺少 2 个对象的流内容。
详细信息:执行同步传递#2。
...
高级
通常,我会部署一个具有比服务器上更新的版本的新构建包。
在第二遍中,它会重复执行第一遍中所做的所有操作。
在第一遍中,它将:
- 停止、卸载(删除服务安装创建的某些日志文件)、安装和启动 Windows 服务
在第二遍中,它将:
- 停止、卸载、复制文件、安装和启动 Windows 服务。
我不知道为什么它不会在第一遍中复制文件,或者为什么会触发第二遍。
如果我重新部署相同的包而不是部署新的版本,则会运行第一遍中的所有步骤,而不会运行第二遍。这可能是因为文件具有相同的时间戳。
-verbose
选项启动 msdeploy,看一下日志是否提供了有用的信息? - mthierba