Запуск обновления с командной строки

Ваші пропозиції щодо розширення функціоналу програми.
sashaoli
Повідомлень: 164
З нами з: 18 січня 2013, 01:13
Контактна інформація:

Re: Запуск обновления с командной строки

Повідомлення sashaoli » 04 лютого 2013, 13:44

доктор писав: По MAU - столкнулся с ошибкой и невозможностью обновить на некоторых XP. Ругалось на "невозможно удалить файл...." предполагаю, что что-то с правами. Перемещал каталог с upd файлами на разные диски, закономерности пока не словил. То на разделе D работает, то на С... :? :?
на семерках все ок... :roll:
Проблема помилки "невозможно удалить файл...." на win XP виявлена, файл не можливо видалити, якщо його не маэ :) .
Виправлення у версії № 3, викладу після тестування (2-3 дні).

доктор
Повідомлень: 857
З нами з: 22 травня 2012, 11:39
Звідки: Полтава
Контактна інформація:

Re: Запуск обновления с командной строки

Повідомлення доктор » 05 лютого 2013, 17:37

Сегодня столкнулся, в v2.11 если на ПК стоит несколько медков (и сетевой и локальный), то затирает в реестра записи по одной из версий (меняло пути к медку, параметр PATH ), приходилось менять вручную обратно. :(
багрепорт «ничего не работает!» оскорбляет чувства программирующих.

sashaoli
Повідомлень: 164
З нами з: 18 січня 2013, 01:13
Контактна інформація:

Re: Запуск обновления с командной строки

Повідомлення sashaoli » 05 лютого 2013, 19:22

доктор писав:Сегодня столкнулся, в v2.11 если на ПК стоит несколько медков (и сетевой и локальный), то затирает в реестра записи по одной из версий (меняло пути к медку, параметр PATH ), приходилось менять вручную обратно. :(
:| :idea: Тоді треба зберегти шляхи в реєстрі та відновити їх після роботи програми. (думки в голос).
Я так розумію, який медок перший встановлений - той і пишеться в реестр першим, а наступний під іншим (якмимось) номером :?:
Взагалі, я добавив зміну шляхів для того щоб, при перенесені (НЕ ВСТАНОВЛЕНІ) Медка, він міг оновлюватися.

Значить v.3 вийде пізніше.
Востаннє редагувалось 05 лютого 2013, 19:28 користувачем sashaoli, всього редагувалось 1 раз.

sashaoli
Повідомлень: 164
З нами з: 18 січня 2013, 01:13
Контактна інформація:

Re: Запуск обновления с командной строки

Повідомлення sashaoli » 05 лютого 2013, 19:24

А розробник, тим часом, спостерігає - що з того вийде и тихо посміюється ......

доктор
Повідомлень: 857
З нами з: 22 травня 2012, 11:39
Звідки: Полтава
Контактна інформація:

Re: Запуск обновления с командной строки

Повідомлення доктор » 05 лютого 2013, 19:26

К примеру есть два медка, в реестре как businessdoc и businessdoc1. Ставлю обновление на businessdoc1, первый не трогаю, в итоге прописало в businessdoc путь как у businessdoc1 :(
багрепорт «ничего не работает!» оскорбляет чувства программирующих.

sashaoli
Повідомлень: 164
З нами з: 18 січня 2013, 01:13
Контактна інформація:

Re: Запуск обновления с командной строки

Повідомлення sashaoli » 05 лютого 2013, 19:34

Мене цікавить питання, як update.exe визначає куди треба звернутися в реєстрі...?
Хіба що перебирає усі можливі варіанти та порівнює їх з каталогом запуску себе любимого!?

sashaoli
Повідомлень: 164
З нами з: 18 січня 2013, 01:13
Контактна інформація:

Re: Запуск обновления с командной строки

Повідомлення sashaoli » 09 лютого 2013, 14:37

M.e.doc Auto Updater v.3.0
Тепер автоматичне завантаження оновлень з інтернет
http://sashaoli.narod.ru

ANB
Повідомлень: 74
З нами з: 02 лютого 2012, 18:24

Re: Запуск обновления с командной строки

Повідомлення ANB » 12 лютого 2013, 17:45

HLS64 писав:
Программа должна работать в командном и диалоговом режиме. Командный режим обязателен (из командной строки с параметрами). Диалоговый желателен.
Так практически есть:
update.exe /UC файл_обновления.upd ? AUTO - установка обновления в конкретную папку медка без GUI
update.exe /UL явно_указана_папка_медка папка2 - обновить медок в каталоге явно_указана_папка_медка всеми обновлениями с каталога папка2 с GUI
Логи пишутся в папка_медка\Update\UpdateLog.txt
Можно ещё поиграться с ключами /UG /UU /UW /UR.
Кроме того update.exe перезапускает сервис медка во время обновления.
Спасибо за приведенные ключики. Только играться некогда. Хотелось бы, чтобы разработчик сам привел все ключи с подробным описанием.
HLS64 писав:Можно поинтересоваться, что это вам даст?
| Показать
Кто будет закачивать новые обновления? Как быть с контролем качества закачки, обрывами связи, повторами и таймаутами?
Обновления выходят неожиданно, в любое время суток. Ну поставите вы в шедулер 2 часа ночи, а в 11 часов дня 20 числа выйдет обновление, в 17:30 бухгалтер поднимет крик и что? Опять вручную в срочном порядке, и попробуй кого выгони, все ж сдают в последний момент и некоторые уже отправили в предыдущей версии и ждут квитанцию.
Поставите шароварную програму, которая синхронизирует вам весь каталог обновлений, где 2/3 обновлений лишние, вместе с коментариями? И кто будет отслеживать запущенные клиенты во время обновления?
Поставите в шедулер обновление на 2 часа ночи, в надежде, что пользователь в 2 часа не зайдёт по терминалу? Есть такие упоротые, что зайдут, особенно в период сдачи отчетов, немотря на ваши прописанные политики. Будете прописывать блокировку аккаунтов пользователей на ночь и надеятся, что никто из других админов эти параметры не провтыкает и будет помнить, что это только для пользователей медка? А некоторые не только медком пользуются и могут пребывать в другом часовом поясе в командировке.
Как будете контролировать как вообще дела с обновлениями ? Заглядывать вручную в логфайл? Парсер логфайла по расписанию и ручная отправка мыла?
Не все так просто, как кажется сначала.
Все равно надо писать ещё много скриптов для автоматизации всего процесса, ну тогда и того что есть выше, по идее, должно хватить.
Согласен. Писать скрипты возможно придется. Но если бы разработчик помог с описанием ключей, то, возможно, и мучаться пришлось бы меньше.
HLS64 писав:Почему вас так интересует стандартный планировщик Windows? Я понимаю что удобно, отсортировав задачи по дате, увидеть всё расписание служебных процессов, но может у вас есть какой-то хитрый план по поводу графика обновлений? Не могли бы вы навести пример?
Нет никакого хитрого плана. Поставлю обновлялку на ночь или раннее утро. И пусть обновляет раз в сутки. В экстренных случаях, админ инициирует обновление в ручном режиме. Все, как обычно! ;)
HLS64 писав:Я тоже за стандартизацию и описание ключей для update.exe от разработчиков. Это даст некоторую стабильность и уверенность в завтрашнем дне админам, которые полагаются на пока недокументированный функционал.
Золотые слова! Хочется, чтобы была стандартизация, стабильность и, чтобы был выбор между графическим интерфейсом и командной строкой. Вообще я считаю, что разработку подобных программ необходимо начинать с работы в командном режиме. И уже потом дорабатывать графические оболочки для обычных пользователей.

sashaoli
Повідомлень: 164
З нами з: 18 січня 2013, 01:13
Контактна інформація:

Re: Запуск обновления с командной строки

Повідомлення sashaoli » 17 лютого 2013, 15:21

M.e.doc Auto Updater v.3.1
Додані деякі приємності до програми.
Про зміни на сайті http://sashaoli.narod.ru/

Шановні, відписуйтеся про баги, побажання, а тож як можна написати гарну (потрібну) прогу без критики 8-)

ANB
Повідомлень: 74
З нами з: 02 лютого 2012, 18:24

Re: Запуск обновления с командной строки

Повідомлення ANB » 17 лютого 2013, 15:35

sashaoli писав:M.e.doc Auto Updater v.3.1
Додані деякі приємності до програми.
Про зміни на сайті http://sashaoli.narod.ru/

Шановні, відписуйтеся про баги, побажання, а тож як можна написати гарну (потрібну) прогу без критики 8-)
:cry: Не могу покритиковать, т.к.
Якщо у Вас встановлена мережева версія "M.e.doc" НЕ ВИКОРИСТОВУЙТЕ цю програму, скористайтесь стандартною процедурою оновлення.

HLS64
Повідомлень: 10
З нами з: 21 січня 2013, 17:46

Re: Запуск обновления с командной строки

Повідомлення HLS64 » 18 лютого 2013, 13:58

Такой вопрос к администраторам сетей. Есть проблема, которая касается всех, у кого медок на платформе Vista и выше: Vista, Windows 7, Windows Server 2008 [R2] и т.п. - update.exe требует десктоп.
| Показать
Свой двухкомпонентный вариант для полностью автоматического обновления всех версий медка написал, все работает, но уже несколько недель потерял на "финальный штрих" -
есть момент с update.exe от производителя медка. update.exe написан на .NET и всегда требует интерактивный десктоп даже в максимально автоматическом режиме, который мы нашли (с ключем /AUTO), тоесть, если программе некуда вывести окно (даже есло оно мелькнуло на секунду или его не видно, или если его принудительно сделать скрытым) update.exe вываливается с exception error:
Зображення
То-есть, если апдейт запускать из планировщика задач либо сервиса, как минимум в самом конце успешного апдейта будет такой эксепшн. Это касается версий выше Windows XP и Windows Server 2003, соответственно.
Если разработчик медка просто поставит атрибут ServiceNotification, то с каждым обновлением медка будет вываливаться UAC с переключением на безопасный рабочий стол, где будет сообщение от окна медка (кто ставил полные драйвера от принтеров canon LBP то знает как это выглядит) это ничем не лучше.

Дела в том, что Майкрософт, что в общем-то правильно, принудительно для новых версий требует код, который не взаимодействует с десктопом из-под сервисов, планировщиков и других процессов с повышенными привилегиями, во первых это некорректно, поскольку уже давно стало повсеместно общей практикой использовать несколько сессий на одной машине (fast user switching дома и терминальный сервер на работе), а во вторых приводит к проблемам безопасности типа http://en.wikipedia.org/wiki/Shatter_attack.

Это означает, что в нашем случае для обновления медка все равно кому-то нужно логинится в рабочий стол, исправить ситуацию можно несколькими способами:
1. Разработчик всё таки добавит ключ к update.exe, который позволит полностью silent апгрейд, без каких-либо (даже скрытых) окон
все остальные варианты падают на нас:
2. Поставить в систему свой глобальный exception handler типа это делает дебаггер от Visual Studio для специального игнора защиты .NET кода update.exe, что очень грубо и требует разовую перезагрузку сервака ради установки "апдейтера-апдейтера"
3. Сервис обновлений изначально с момента старта системы мониторит сеансы пользователей и отлавливает сеанс залогиненного пользователя с правами администратора (сеанс с session id отличным от нуля), копирует его токен, чтобы запустить в его контексте прав апдейтер медка. Чтобы пользователь не охренел от вдруг неожиданно мелькающих окон стандартного апдейтера медка (я их отлавливаю и прячу, но все равно на 50-70 мс они мелькают, чем меньше интервал, тем больше загрузка ЦПУ на мониторинг окон) запускаю апдейтер в отдельном десктопе (типа Winsta0\desktop1) который потом убираю, это если апдейтер медка переживёт вывод на "левый" десктоп. Недостаток очевиден - лишнее потребление ресурсов на мониторинг сеансов пользователей, для того, чтобы наложить патч на медок, мало того, что нужно проверять не запущен ли клиент, сетевой клиент или админка медка, надо ещё и чтобы в этот момент на машину/сервер был залогинен пользователь с правами админа и имел доступ к папкам медка. А ведь есть сервера, куда вообще не логинятся под админом месяцами. А держать залогиненным пользователя - это такой же вариант, как и с GUI обертками обновлений для медка, мы теряем автоматизацию.
4. Сервис обновлений изначально с момента старта системы вешает хук, который перехватывает все обращения к функции создать окно, и блокирует их именно для update.exe от медка. Ну во первых антивирусу и админам не сильно понравится необходимость добавить исключения dll-инжектора от неизвестного разработчика, во вторых это дополнительные затраты ресурсов.

Собственно вопрос, какой метод п.3 или п.4 более предпочтителен для сетевых администраторов (для ОС ОС выше сервера 2003 и Windows XP): держать "залогиненого юзера" (никаких програм запускать не надо, просто залогиненый сеанс) для того, чтобы патчер медка сам запускался или допустить что утилита инсталлирует хук для перехвата и отключения окон update.exe медка, тоесть разрешить dll-injection с пониманием того, что будет теряться дополнительный ресурс (.dll инжектится всем процессам без исключения, и не освобождается, пока все "зараженные" приложения не закроются).

P.S. Просьба всё таки передать этот пост разработчику, пусть сжалятся, и сделают ключ для работы update.exe без каких-либо окон, трудозатраты для обхода этого недостатка в несколько раз превышают трудозатраты на написание самого автоматического апдейтера вместе с собственным планировщиком,нотификейшенами и определением подключенных клиентов со стороны. Кроме того, любое решение полной автоматизации без отключения окон оригинального update.exe будет кривым.
UPD: это касается только машин разработчиков с отдельными дебаггерами и специальным global exception handler, так что не страшно.
Востаннє редагувалось 23 лютого 2013, 17:24 користувачем HLS64, всього редагувалось 1 раз.

ANB
Повідомлень: 74
З нами з: 02 лютого 2012, 18:24

Re: Запуск обновления с командной строки

Повідомлення ANB » 18 лютого 2013, 18:17

2 HLS64
Для меня было бы лучше, если бы никакие окна в процессе обновления вообще не появлялись, т.к. для автоматического обновления они не нужны. А по процессу обновления велся бы обычный журнал, который записывался бы в обычный текстовый log-файл, с возможностью дописывания и указания пути к этому файлу.
Мой сетевой медок установлен на Win 2003 Server, клиенты к нему подключены из-под Win XP Pro. Поэтому не могу ни подтвердить ни опровергнуть вышесказанное. На другой сервер Win 2008 Server ставить сей продукт, слава богу, пока нету необходимости, а на эксперименты тратить время не могу. При автоматизации обслуживания другого ПО, установленного на Win 2008 Server из-под стандартного виндового планировщика заметил такую особенность. Планировщик Win 2008 Server при обработке заданий полностью "глушит" все окна, даже если задание выполняется от имени залогиненного пользователя с правами админа. Т.е. в Win 2003 Server окна выполнения заданий видны, а в Win 2008 Server их нет, но задание выполняется. Поэтому иногда для контроля правильности выполнения заданий под Win 2008 Server приходится запускать команды задания вручную из командной строки. Может Ваша проблема тоже с этим связана. Еще в планировщике Win 2008 Server есть опции "Выполнять только для зарегистрированного пользователя" и "Выполнять вне зависимости от регистрации пользователя". Может с этими опциями следует "поиграться".

А вообще. Очень хотел бы, чтобы разработчик дал полное описание всех ключей для update.exe. Именно разработчик мог бы с наименьшими временными затратами "подрехтовать" эту свою утилиту под нужды админов. Но почему-то разработчик молчит. :(
Единственное положительное действие от разработчика в направлении автоматизаци обновления - это создание собственного планировщика, который заработал таки только после 119-120-го апдейта. Только накой ляд админу эти графические украшения и бААльшущий календарь медковского планировщика? Не могу понять логику разработчика. Все глючит зато в графической оболочке куча картинок и большой календарь никому нахрен не нужный! :shock:

HLS64
Повідомлень: 10
З нами з: 21 січня 2013, 17:46

Re: Запуск обновления с командной строки

Повідомлення HLS64 » 18 лютого 2013, 23:54

Планировщик Win 2008 Server при обработке заданий полностью "глушит" все окна
Не глушит, а эта фунция вообще не поддерживается принципиально. 2003 сервер и ХР всякое рисование окон от имени сервисов "прощали", хотя и не приветствовали.
Трагикомедия в том, что update.exe от медка, видя, что в 2008/windows7 окна рисовать некуда, сам вываливается в ошибку.

HLS64
Повідомлень: 10
З нами з: 21 січня 2013, 17:46

Re: Запуск обновления с командной строки

Повідомлення HLS64 » 20 лютого 2013, 21:32

Выкладываю решение для больших сетей: MedocAdvancedUpdater.zip
Основные преимущества:
- автоматическое обновление в фоновом режиме всех версий медка (и сетевой и локальной)
- пользователю локальной версии не нужны права администратора для обновления
- гарантированное качество закачки: контроль обрывов и целосности файлов
- контроль версий для закачки и обновлений - верхний и нижний лимит
- проверка наличия запущеных клиентов или административных програм перед обновлением, остановка сервера медка и запрет запуска клиентов перед обновлением
- возможность разделения модуля закачки и модулей обновлений: проксирование обновлений в локальной сети, централизованное управление версиями
- собственный планировщик для каждого модуля
- одноразовый запуск с командной строки с ключем -nosheduler
- уведомления о ключевых событиях с помощью электронной почты или http:// запроса (например в корпоративный джаббер или смс админу)
- детальный журнал событий



sashaoli
Повідомлень: 164
З нами з: 18 січня 2013, 01:13
Контактна інформація:

Re: Запуск обновления с командной строки

Повідомлення sashaoli » 19 березня 2013, 03:50

M.e.doc Auto Updater v.3.4
http://sashaoli.narod.ru/
Підтримка мрежевих версій!

sashaoli
Повідомлень: 164
З нами з: 18 січня 2013, 01:13
Контактна інформація:

Re: Запуск обновления с командной строки

Повідомлення sashaoli » 08 квітня 2013, 09:26

M.e.doc Auto Updater
Додав на сайт докладну довідку про використання програми.
Довідка безпосередньо стосується наступної версії програми (v.3.5)
Наступна версія вийде, орієнтовно, до 14.04.2013 р.
http://sashaoli.narod.ru

доктор
Повідомлень: 857
З нами з: 22 травня 2012, 11:39
Звідки: Полтава
Контактна інформація:

Re: Запуск обновления с командной строки

Повідомлення доктор » 11 квітня 2013, 14:53

sashaoli
потестировал версию 3.4 на разных осях, в принципе интерфейс мне нравится, с приколами конечно, но даже забавно.
Единственно заметил что процесс MAU.exe сам по себе начинает валиться (либо завершение работы, либо куча ероров кидает наподобие этой):
| Показать
ЗображенняЗображення
Ну а так, все равно юзаю и юзать буду, спасибо ;)
багрепорт «ничего не работает!» оскорбляет чувства программирующих.

sashaoli
Повідомлень: 164
З нами з: 18 січня 2013, 01:13
Контактна інформація:

M.e.doc Auto Updater

Повідомлення sashaoli » 12 квітня 2013, 09:31

Нова версія програми 3.5
Значні зміни в роботі
Короткий опис змін http://sashaoli.narod.ru/history/
Читаємо довідку до програми. http://sashaoli.narod.ru/help/
У зв'язку з перенесенням "Народу" на uCoz сайт глючить. Неможливо нормально внести зміни

доктор
Про помилки в курсі, дякую за повідомлення.
Думав, що ніхто про них не напише.
Сам помітив коли на декількох компах запустив.
У версії 3.5 цих глюків бути не повинно.

http://sashaoli.narod.ru/

Відповісти

Повернутись до “Побажання”