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
Мысли об этом?
2 ответа
К сожалению, я не думаю, что это так увлекательно, как кажется...
В 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(); в теме.
Вам следует использовать обновление с осторожностью, поскольку оно не поддерживает добавление новых функций в пакет решений.
Также имейте в виду, что если вы используете -local, вы развертываете только в локальном WFE. Для согласованности я всегда использую -immediate и после завершения добавления заданий таймера запускаю stsadm -o execadmsvcjobs
Я не уверен насчет двух сообщений, но так как upgradedesolution - это двухэтапная операция, которая сначала добавляет новую версию старого решения, а затем добавляет ее, было бы разумно, именно поэтому вы получили два сообщения.