2009-10-06 61 views
1

对于命令像这样:STSADM.exe - “操作成功完成” - 两次?

C:\>stsadm -o upgradeSolution -name zzz.wsp -filename zzz.wsp -allowGacDeployment -local 

我收到了成功的语句的两个输出而不是只有一个:

Operation completed successfully. 

Operation completed successfully. 

这似乎是有关-local标志,所以我的猜测因为它成功地创建了计时器作业然后在引擎盖下运行execadmsvcjobs。

stsadm -o execadmsvcjobs 

对此有何想法?

+1

TechNet声明使用'-local'运行'upgradesolution'不使用计时器服务,并且作业同步运行:http://technet.microsoft.com/en-us/library/cc262014.aspx – 2009-10-06 14:33:38

+0

这使得感觉,但是第二个操作成功完成的是什么? – 2009-10-06 15:06:37

回答

1

不幸的是,我不认为这是因为它看起来几乎一样令人兴奋

在STSADM,如果你部署本地解决方案(立即),将出现以下情况(裂开反射镜):

base.DeployRetractSolution(solution, urls, userTypedIn, lcid, gacInstallWPPackDlls, true, force); 
    base.OutputSucceedMessage(); 

但是,如果部署在服务器场(计时器作业)的解决方案,这种情况发生:

base.CreateSolnDeployTimerJob(strTime, immediate, solution, urls, userTypedIn, SPSolutionDeploymentJobType.Deploy, lcid, gacInstallWPPackDlls, force); 

base.OutputSucceedMessage();只是将“Operation Completed Success”的本地化语言版本写入控制台。

这两种方法都会产生STSADM SPOperation(和“Operation Completed Successfully”控制台消息),但是直接的还有另一个base.OutputSucceedMessage();就可以了。

+0

+1优秀且反思明确:-) – 2009-10-07 15:50:59

1

您应该小心使用upgradedesolution,因为它不支持向解决方案包添加新功能。

另外要警告的是,如果您使用-local,则只能在本地WFE上进行部署。为了一致性,我总是使用-immediate和完成添加计时器作业后,运行stsadm -o execadmsvcjobs

我不确定这两条消息,但由于升级解决方案是一个两阶段操作,首先添加旧版本解决方案,然后添加它,这是有道理的,这就是为什么你有两条消息。

+0

这是有道理的,并感谢您的建议。这适用于本地部署到单个WFE - 因此使用-local运行以同步执行升级非常理想。 – 2009-10-07 00:09:23