【发布时间】:2011-07-21 11:36:31
【问题描述】:
我有:
- 为 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 状态“正常”)。
详细:当前同步过程缺少 2 个对象的流内容。
详细:执行同步传递 #2。
...
高级
通常我会部署一个新构建的包,其位比服务器上的更新。
在第二关中,它复制了第一关中所做的一切。
在第 1 阶段,它将:
- 停止、卸载(删除服务安装创建的一些日志文件)、安装和启动 Windows 服务
在第 2 阶段,它将:
- 停止、卸载、复制文件、安装和启动 Windows 服务。
我不知道为什么它不复制第 1 遍中的文件,或者为什么会触发第 2 遍。
如果我重新部署相同的包而不是部署新的位,它将运行第 1 步中的所有步骤,而不运行第 2 步。可能是因为文件具有相同的时间戳。
【问题讨论】:
-
您能否使用
-verbose选项运行 msdeploy 并查看日志是否为您提供任何有用的信息? -
是否所有命令都执行了两次?还是只有一些?你是怎么注意到的?
-
劫持问题以添加
-verbose日志输出。重新排序清单中的执行,使其更有意义。
标签: iis deployment msdeploy