Tim*_*ett 10 deployment iis 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>
Run Code Online (Sandbox Code Playgroud)
发出包装命令:
"C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy"
-verb:sync
-source:manifest=c:\msdeploy\custom.xml
-dest:package=c:\msdeploy\package.zip
Run Code Online (Sandbox Code Playgroud)
发出执行它的命令:
"C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy"
-verb:sync
-source:package=c:\msdeploy\package.zip
-dest:auto,computername=<computerNameHere>
Run Code Online (Sandbox Code Playgroud)
我作为具有管理访问权限的域用户运行.我也尝试过传递凭据 - 这不是权限问题,命令是成功的,只执行两次.
编辑:
我启用-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遍中,它将:
在第2阶段,它将:
我不知道为什么它不会复制传递1中的文件,或者为什么传递2被触发.
如果我重新部署相同的包而不是部署新位,它将运行第1步中的所有步骤,而不是运行第2步.可能是因为文件具有相同的时间戳.
问题中没有足够的信息来真正重现问题以给出具体的答案......但是有几件事需要检查/更改/尝试使其工作:
waitInterval="240000"和waitAttempt="1"(双引号而不是单引号)-whatif和-verbose选项编辑-添加-verbose输出后:
我看到了这些可能性:
编辑2 - 根据评论:
在我的上一次编辑中,我写了关于时间戳的内容,因为我怀疑在比较它们时会出现问题......这可能是两台机器之间不同的时钟(甚至 30 秒的差异也会产生影响)和/或某些时区问题...
我写过关于文件系统的文章。FAT 因为 FAT 的时间戳分辨率约为 2 秒,而 NTFS 具有更高的分辨率,这在比较时间戳时可能会产生影响......
根据您的描述,我建议采用以下解决方法:
preSync和postSync用于服务处理部分(即preSync用于停止+卸载和postSync用于安装+启动),并且仅在清单或命令行中进行纯同步runCommand对零件使用脚本编辑 3 - 根据 Merlyn Morgan-Graham 的评论,结果供将来参考:
使用runCommand提供程序时,请使用批处理文件。由于某种原因,这使得它停止运行两次。
该解决方案的问题在于,无法通过SetParameters.xml文件指定服务的安装目录(对于dontUseCommandExe//而言preSync也是如此)。postSyncSetParameters.xml
编辑 4 - 根据 Merlyn Morgan-Graham 的评论:
超时参数适用于是否终止该特定命令,而不是关闭 Windows 服务本身...在这种情况下,Windows 服务似乎需要相当长的时间才能停止,因此只有 s 在runCommand没有复制/同步的情况下执行整个运行的新尝试开始了......
| 归档时间: |
|
| 查看次数: |
2009 次 |
| 最近记录: |