STSADM.exe - «Операция завершена успешно» - дважды? - PullRequest
1 голос
/ 06 октября 2009

Для такой команды:

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

Я получаю два вывода об успехе, а не один:

Operation completed successfully.

Operation completed successfully.

Похоже, он связан с флагом -local, поэтому я предполагаю, что он успешно создает задание таймера , а затем запускает execadmsvcjobs под капотом.

stsadm -o execadmsvcjobs

Мысли об этом?

Ответы [ 2 ]

1 голос
/ 07 октября 2009

К сожалению, я не думаю, что это так увлекательно, как кажется ...

В 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 (); .

1 голос
/ 07 октября 2009

Вам следует использовать обновление с осторожностью, поскольку оно не поддерживает добавление новых функций в пакет решений.

Также имейте в виду, что если вы используете -local, вы развертываете только в своем локальном WFE. Для согласованности я всегда использую -immediate и после завершения добавления заданий таймера запускаю stsadm -o execadmsvcjobs

Я не уверен насчет двух сообщений, но так как upgradedesolution - это двухэтапная операция, которая сначала добавляет новую версию старого решения, а затем добавляет ее, было бы разумно, поэтому вы получили два сообщения.

...