1

对于这样的命令:

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

我收到了成功声明的两个输出,而不仅仅是一个:

Operation completed successfully.

Operation completed successfully.

它似乎与-local标志有关,所以我的猜测是它成功创建了Timer Job,然后在后台运行 execadmsvcjobs。

stsadm -o execadmsvcjobs

对此有什么想法?

4

2 回答 2

1

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

另请注意,如果您使用 -local,则只能在本地 WFE 上部署。为了保持一致性,我总是使用 -immediate 并在完成添加计时器作业后运行 stsadm -o execadmsvcjobs

我不确定这两条消息,但由于 upgradesolution 是一个两阶段操作,首先添加旧解决方案的新版本,然后添加它,因此这就是您收到两条消息的原因是有道理的。

于 2009-10-06T22:26:51.173 回答
1

不幸的是,我认为这并不像看起来那么令人兴奋......

在 STSADM 中,如果您部署本地解决方案(立即),则会发生以下情况(破解打开 Reflector):

    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(); 只是将“操作成功完成”的本地化语言版本写入控制台。

这两者都在后台执行生成 STSADM SPOperation (和“操作成功完成”控制台消息)的事情,但直接的只有另一个base.OutputSucceedMessage(); 在上面。

于 2009-10-07T15:47:18.450 回答