|
|
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Требуется сделать обновление небольшой программки через интернет ПО ЗАПРОСУ ПОЛЬЗОВАТЕЛЯ. В папке проекта все работает(программа + апдейтер). После установки в program files начались проблемы c доступом. Перечитал много тем по обновлениям, но до истины так и не докопался. Я понял, что нужно создать сервис, который будет запускаться при установке под админской учеткой. Он и будет подменять файлы программы и библиотек в program files Подскажите как запустить сервис из программы? Как потом из сервиса запустить обновленную программу? Или может я вообще двигаюсь в неправильном направлении? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 11:19 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZПодскажите как запустить сервис из программы?Через IPC, например. Shared Memory или Named Pipes или вообще сокеты. Программа подключается к сервису и запрашивает обновление, после чего сервис должен как-то штатно завершить все запущенные экземпляры программы, а на компьютере их может быть запущено несколько, под разными пользователями, а если это удалённый рабочий стол, то кто-то может в ней работать и не будет рад прерыванию своей работы. MasterZКак потом из сервиса запустить обновленную программу?Тут сложнее, надо в первом пункте составить список пользователей, у кого она была запущена и потом заново запустить её от имени этих пользователей (как реализовать - хз, не делал так). MasterZИли может я вообще двигаюсь в неправильном направлении?Если вам необходимо чтобы обновляли программу именно пользователи - может её устанавливать не в Program Files, а в %appdata%?.. Для каждого пользователя - свой экземпляр, с которым он может делать всё что угодно и, заодно, дополнительная служба не потребуется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 11:41 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZИли может я вообще двигаюсь в неправильном направлении? Нынче модно в appdata ставиться и там же обновляться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 11:54 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
wadmanMasterZИли может я вообще двигаюсь в неправильном направлении? Нынче модно в appdata ставиться и там же обновляться. Бесит это! Приложение, которое ставится в appdata - должно сразу же удаляться с компьютера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 12:32 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
ziv-2014wadmanпропущено... Нынче модно в appdata ставиться и там же обновляться. Бесит это! Приложение, которое ставится в appdata - должно сразу же удаляться с компьютера. Правильно! Больше всякого *овна на компьютер с админскими правами! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 13:48 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
ненавижу захламляющие сервисы как в гугл хроме. Лучше брать пример с мозиллы, и проверять обновления при запуске ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 13:59 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
ziv-2014wadmanпропущено... Нынче модно в appdata ставиться и там же обновляться. Бесит это! Приложение, которое ставится в appdata - должно сразу же удаляться с компьютера. Микрософты потом запретят запускать программу из appdata, придется переделывать. Хочется как в мозиле, или notepad++ с одним условием, чтобы приложение или сервис само не лезло в интернет ПО ЗАПРОСУ ПОЛЬЗОВАТЕЛЯ.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 14:09 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZХочется как в мозиле, или notepad++ с одним условием, чтобы приложение или сервис само не лезло в интернет ПО ЗАПРОСУ ПОЛЬЗОВАТЕЛЯ.. Приделать менюшку/кнопку "Проверить обновления" - не предлагать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 14:22 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
[quot alekcvp]MasterZПодскажите как запустить сервис из программы?Через IPC, например. Shared Memory или Named Pipes или вообще сокеты. Программа подключается к сервису и запрашивает обновление, после чего сервис должен как-то штатно завершить все запущенные экземпляры программы, а на компьютере их может быть запущено несколько, под разными пользователями, а если это удалённый рабочий стол, то кто-то может в ней работать и не будет рад прерыванию своей работы. Я думаю немного по другому. Сервис нужен только для того, чтобы с правами админа подменить старые файлики программы новыми. Пользователь запрашивает обновления, через меню и приложение проверяет есть-нет, закачивает все что нужно, сообщает сервису что ему пора работать и убивается. Сервис, как я уже говорил, подменяет старые файлы новыми и запускает обновленное приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 14:43 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZсообщает сервису что ему пора работать и убивается. Сервис, как я уже говорил, подменяет старые файлы новыми и запускает обновленное приложение. ... а в этот момент приложение запущено у ещё 2х пользователей по RDP и сервис идёт лесом, т.к. exeшник заблокирован ?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 14:51 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
alekcvpMasterZсообщает сервису что ему пора работать и убивается. Сервис, как я уже говорил, подменяет старые файлы новыми и запускает обновленное приложение. ... а в этот момент приложение запущено у ещё 2х пользователей по RDP и сервис идёт лесом, т.к. exeшник заблокирован ?.. Да, об этом я не подумал, проблемма... Программа задумывалась как персональная не многопользовательская, но получается, что по закону Мерфи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 14:59 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZПрограмма задумывалась как персональная не многопользовательская В чём тогда проблема засунуть её в профиль пользователя (appdata) ?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 15:06 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
wadmanНынче модно в appdata ставиться и там же обновляться.Каких только сексуальных девиаций в мире не встретишь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 15:08 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
alekcvpЧерез IPC, например. Shared Memory или Named Pipes или вообще сокеты. Программа подключается к сервису и запрашивает обновление, после чего сервис должен как-то штатно завершить все запущенные экземпляры программы, а на компьютере их может быть запущено несколько, под разными пользователями, а если это удалённый рабочий стол, то кто-то может в ней работать и не будет рад прерыванию своей работы. Что-то чересчур мудрено. Всё, что описано как задача сервиса, может выполнять инсталлятор. Который будет запущен от админа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 17:26 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZЗдравствуйте! Требуется сделать обновление небольшой программки через интернет ПО ЗАПРОСУ ПОЛЬЗОВАТЕЛЯ. В папке проекта все работает(программа + апдейтер). После установки в program files начались проблемы c доступом. ... Апдейтер должен работать с правами администратора, нужно добавить соответствующий манифест. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 18:07 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
Запускается отдельная программа апдейт, возвращает через команду что есть обновления. Текущая программа запускает через runas программу апдейт с правами, и закрывает саму себя. И начинает обновления программы - апдейт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 18:19 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
Василий 2Всё, что описано как задача сервиса, может выполнять инсталлятор. Который будет запущен от админа. Вы ТЗ читали? Обновлять приложение должен пользователь, как он запустит инсталлятор "от админа"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 19:02 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
FoxpcТекущая программа запускает через runas программу апдейт с правами, и закрывает саму себя. И начинает обновления программы - апдейт1. Откуда программа знает данные учётной записи администратора? 2. Что делать, если есть экземпляры программы, запущенные другими пользователями? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 19:03 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
alekcvp, 1) Код: pascal 1. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 2) Как понять - другим пользователем? Запускается от того, от кого была запущена программа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2019, 20:49 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
alekcvpПрограмма подключается к сервису и запрашивает обновление, после чего сервис должен как-то штатно завершить все запущенные экземпляры программы, а на компьютере их может быть запущено несколько, под разными пользователями, а если это удалённый рабочий стол, то кто-то может в ней работать и не будет рад прерыванию своей работы. MasterZКак потом из сервиса запустить обновленную программу?Тут сложнее, надо в первом пункте составить список пользователей, у кого она была запущена и потом заново запустить её от имени этих пользователей (как реализовать - хз, не делал так).Все это не надо. Сервис стягивает (можно по запросу) обновление, переименовывает старый экзешник (да, это штатно разрешено, даже он "заблокирован") и переписывает на его место новый. Всё. Ну, можно, если надо, еще сообщить тем, кто запрашивал обновление, что оно готово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 00:59 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
YuRockдаже ондаже если он ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 01:00 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
Foxpcненавижу захламляющие сервисы как в гугл хроме.Меня тоже от этого воротит. Но сейчас это мэйнстрим - при установке, которая проходит с админскими правами, ты можешь установить программу в PF, которую сможет запускать любой, и службу, которая local admin. Определенная логика и польза в таком подходе есть. В будущем всегда можно что-либо дополнительное прикрутить к службе, когда нужны права. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 01:04 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
FoxpcЛучше брать пример с мозиллы, и проверять обновления при запускеНу так бери пример, только полностью. Она не проверяет при запуске, она постоянно апдейты тянет, а пни запуске просто проверяет, стянут ли очередной апдейт. Можно и по запросу это проверять и перезапускаться, если он стянут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 01:09 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZ...нужно создать сервис, который будет запускаться при установке под админской учеткой. Он и будет подменять файлы программы и библиотек в program files... "Все уже украдено до нас" - (с). https://ru.wikipedia.org/wiki/Установщик_Windows Сценарий инсталляции (документ .msi) выполняется под специальной учеткой, в привилегированном режиме службы NT (конкретно — под аккаунтом LocalSystem), эта учетка может доволно много, даже если у юзера совсем немного прав. В сценарий воткнуть можно все, что угодно, даже запуск своего прежнего инсталлятора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 02:14 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
s62MasterZЗдравствуйте! Требуется сделать обновление небольшой программки через интернет ПО ЗАПРОСУ ПОЛЬЗОВАТЕЛЯ. В папке проекта все работает(программа + апдейтер). После установки в program files начались проблемы c доступом. ... Апдейтер должен работать с правами администратора, нужно добавить соответствующий манифест. Как вариант подходит, но возможно ли это для CreateProcess, как?. ShellExecuteEx использвать не хочется. И еще, будет ли запрос на запуск апдейтера под админом. Такой запрос будет пугать пользователей. Не хотелось бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 08:03 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZТакой запрос будет пугать пользователей. Не хотелось бы.А, ты хотел без запроса, молча админские права получить? Надо было сразу с этого начинать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 08:07 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
I partigiani resistonoMasterZ...нужно создать сервис, который будет запускаться при установке под админской учеткой. Он и будет подменять файлы программы и библиотек в program files... "Все уже украдено до нас" - (с). https://ru.wikipedia.org/wiki/Установщик_Windows Сценарий инсталляции (документ .msi) выполняется под специальной учеткой, в привилегированном режиме службы NT (конкретно — под аккаунтом LocalSystem), эта учетка может доволно много, даже если у юзера совсем немного прав. В сценарий воткнуть можно все, что угодно, даже запуск своего прежнего инсталлятора. Обновление через инсталятор я не рассматриваю потому, что пользователю нужно будет сделать много движений при обновлении, а программка расчитана на НЕпродвинутых пользователй. И еще очень сильно усложняется инсталятор. Он должен выполнить скрипт по обновлению БД, а так же в его логике должен быть заложен откат до предыдущей версии в случае ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 08:11 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
YuRockMasterZТакой запрос будет пугать пользователей. Не хотелось бы.А, ты хотел без запроса, молча админские права получить? Надо было сразу с этого начинать... Моя цель не получить админские права, а подменить старые файлы новыми. Ведь в других программах это как то делают и без всяких запросов на запуск под админом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 08:40 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZбез всяких запросов на запуск под админомЕсли это PF и включен UAC - то именно под админом, только. Без запросов - значит одно из двух: 1. Эти программы используют службу; 2. Они знают пользователь/пароль админской учетки (хотя и это не панацея). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 08:44 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
Foxpcalekcvp, Код: pascal 1. И что, таким образом любой пользователь с ограниченными правами может запустить любое приложение с правами администратора?.. Не зная пароля от учётной записи администратора? Серьёзно? FoxpcКак понять - другим пользователем? Запускается от того, от кого была запущена программаWindows - многопользовательская система, кто-то мог работать с этой же программой и не выйти из учётки, после чего зашёл пользователь, который хочет "обновить" приложение. А может программа вообще работает на терминальном сервере, где её запускает куча разных пользователей одновременно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 09:44 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
YuRockСервис стягивает (можно по запросу) обновление, переименовывает старый экзешник (да, это штатно разрешено, даже он "заблокирован") и переписывает на его место новый. Всё. https://stackoverflow.com/questions/7147577/programmatically-rename-open-file-on-windows Renaming requires that the file in question was opened with FileShare.Delete sharing. If that share flag is missing, you can not rename/move the file while it is still open. Вы уверены, что Windows файл на исполнение открывает с этим флагом? Я вот почти уверен что нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 09:49 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZможет я вообще двигаюсь в неправильном направлении?а готовое решение заюзать не вариант, самому обязательно намутить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 10:01 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
alekcvpFoxpcalekcvp, Код: pascal 1. И что, таким образом любой пользователь с ограниченными правами может запустить любое приложение с правами администратора?.. Не зная пароля от учётной записи администратора? Серьёзно? FoxpcКак понять - другим пользователем? Запускается от того, от кого была запущена программаWindows - многопользовательская система, кто-то мог работать с этой же программой и не выйти из учётки, после чего зашёл пользователь, который хочет "обновить" приложение. А может программа вообще работает на терминальном сервере, где её запускает куча разных пользователей одновременно. Насчет этого я придумал как обойти. После того как пользователь нажмет "Обновить" прога посмотрит, есть ли другие пользователи подключенные в данный момент. Если есть, то обновление не выолняется или просит отключить пользователей. Но это потом буду разбираться. Сейчас хотелось бы узнать по подмене файлов, пока решение не найдено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 10:01 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZСейчас хотелось бы узнать по подмене файлов, пока решение не найдено. Подмена файлов в PF с правами пользователя - это отдельный сервис, который устанавливается вместе с программой и запускается от LocalSystem. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 10:39 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
Ну или как вариант - задание в Task Scheduler'е с повышенными привилегиями и правом на запуск для обычных пользователей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 10:40 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
alekcvpИ что, таким образом любой пользователь с ограниченными правами может запустить любое приложение с правами администратора?.. Не зная пароля от учётной записи администратора? Серьёзно? Любой. Только тебе придётся UAC подтвердить, если включён. Хотя.. Можно тупо UAC выключить и начать карновал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 11:10 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
alekcvpMasterZСейчас хотелось бы узнать по подмене файлов, пока решение не найдено. Подмена файлов в PF с правами пользователя - это отдельный сервис, который устанавливается вместе с программой и запускается от LocalSystem. Это я уже писал в начале темы. А дальше вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 11:15 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
alekcvpНу или как вариант - задание в Task Scheduler'е с повышенными привилегиями и правом на запуск для обычных пользователей. Scheduler это запуск по времени, а мне нужно по запросу пользователя. Ставить в Scheduler'е проверку чере 2 сек. по моему это несерьезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 11:17 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
FoxpcalekcvpИ что, таким образом любой пользователь с ограниченными правами может запустить любое приложение с правами администратора?.. Не зная пароля от учётной записи администратора? Серьёзно? Любой. Только тебе придётся UAC подтвердить, если включён. Хотя.. Можно тупо UAC выключить и начать карновал Я думаю отключать UAC это будет не карнавал, а танцы с бубном. Про UAC вроде решено нужен сервис, ведь не зря его создаю и Мозила и Адобе ридер и др. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 11:21 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
alekcvpYuRockСервис стягивает (можно по запросу) обновление, переименовывает старый экзешник (да, это штатно разрешено, даже он "заблокирован") и переписывает на его место новый. Всё. https://stackoverflow.com/questions/7147577/programmatically-rename-open-file-on-windows Renaming requires that the file in question was opened with FileShare.Delete sharing. If that share flag is missing, you can not rename/move the file while it is still open. Вы уверены, что Windows файл на исполнение открывает с этим флагом? Я вот почти уверен что нет.Уверен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 12:13 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZalekcvpНу или как вариант - задание в Task Scheduler'е с повышенными привилегиями и правом на запуск для обычных пользователей. Scheduler это запуск по времени, а мне нужно по запросу пользователя. Ставить в Scheduler'е проверку чере 2 сек. по моему это несерьезно.Виндовый шедулер очень глючная вещь. Особенно - начиная с висты и по сейчас. Мне пришлось из-за разных его глюков полностью отказаться от него (а юзал я его начиная с NT4 sp2). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 12:17 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
YuRockВиндовый шедулер очень глючная вещь а какие уж там болячки, если не секрет? а то у меня он логи архивирует и все такое, несколько лет вроде проблемы обходили стороной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 12:36 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
vavan, после пары недель работы (запускает задание каждые 5-15 минут) приходится перезагружать винду, т.к. в какой-то момент перестает выгружаться svchost, который шедулер запускает каждый раз при запуске задания, и в итоге заканчивается память и хендлы. Особенно быстро это проявляется, если запускать консоли (батники). Проблемы начались (у меня) с приходом Win7. И замечались вплоть до Win10 1803 (скорей всего и в 1809 так). Т.ч. везде заменить пришлось на свой "шедулер" всё. Единственное, зачем я иногда его теперь использую - это запустить программу "При включении компьютера". Типа вместо службы, если переделывать под службу лень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 12:49 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
YuRock, жесть какая. у меня на серверных (2012 кажется) месяцами работают, правда запускаются не чаще раза в сутки вроде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 13:20 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
vavanYuRock, жесть какая. у меня на серверных (2012 кажется) месяцами работают, правда запускаются не чаще раза в сутки вродеНу вот, у меня часто было, и - не на серверных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 13:41 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
YuRockvavanYuRock, жесть какая. у меня на серверных (2012 кажется) месяцами работают, правда запускаются не чаще раза в сутки вродеНу вот, у меня часто было, и - не на серверных.Ну да, получается, у меня в сотни раз чаще запускалось задание (разные задания), и в итоге - винда валилась через 2-3 недели. Возможно, твой сервер завалится через несколько сотен недель именно по этой причине :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 15:21 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
Инсталлятор не обязательно должен иметь сложную логику... ему достаточно уметь запускать другую прогу, сколь угодно большой сложности. Это может быть и сама клиентская прога, запущенная с определенным параметром, например. В описанной ситуации да, наверно сервис и IPC с клиентской софтиной нормальный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 16:46 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
FoxpcalekcvpИ что, таким образом любой пользователь с ограниченными правами может запустить любое приложение с правами администратора?.. Не зная пароля от учётной записи администратора? Серьёзно? Любой. Только тебе придётся UAC подтвердить, если включён. Хотя.. Можно тупо UAC выключить и начать карновалЕщё раз: если у пользователя нет прав администратора (вообще), то UAC ему придётся подтверждать с паролем администратора. MasterZalekcvpНу или как вариант - задание в Task Scheduler'е с повышенными привилегиями и правом на запуск для обычных пользователей. Scheduler это запуск по времени, а мне нужно по запросу пользователя. Ставить в Scheduler'е проверку чере 2 сек. по моему это несерьезно.Scheduler это запуск по условию, а не только по времени. В том числе там есть условие "вручную", через API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 21:16 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
YuRockYuRockпропущено... Ну вот, у меня часто было, и - не на серверных.Ну да, получается, у меня в сотни раз чаще запускалось задание (разные задания), и в итоге - винда валилась через 2-3 недели. Возможно, твой сервер завалится через несколько сотен недель именно по этой причине :) У меня на сервере работает ежудневный бекап SQL-сервера через шедулер месяцами, на десктопе - хром обновления через него проверяет регулярно, ни разу ничего не валилось. Я не думаю что обновления пользователи будут запускать чаще пары раз в день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 21:19 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZ... Или может я вообще двигаюсь в неправильном направлении? Ты понимаешь, что после запуска "обновленная программа" не получит доступ к рабочему столу, потому что ее запустит сервис, не имеющий этот доступ? От сервиса можно получить лишь выполнение привилегированных операций. А контроль за его работой и процесс перезапуска должен выполняться под аккаунтом исходного юзера. Схема работы может быть, например, следующей. При старте основного приложения проверять необходимость обновления (особых прав для этого не требуется, надо полагать). Если обновление требуется - запускать специальный "обновлятор" (приложение без привилегий), который в соответствии с требуемой логикой выполняет нужные операции, при необходимости (для выполнения привилегированных операций) обращаясь к сервису. По завершению работы "обновлятор" перезапускает исходное приложение. MasterZКак потом из сервиса запустить обновленную программу? Подскажите как запустить сервис из программы? Надо книжку приобрести, про API Windows. И читать MSDN. Можно, конечно, искать статьи и лопатить форумы, но это не очень умно. В двух словах про сервисы тебе никто не объяснит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2019, 21:55 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
alekcvpЕщё раз: если у пользователя нет прав администратора (вообще), то UAC ему придётся подтверждать с паролем администратора. Не разу с таким не сталкивался. Но если главная программа запущена от администратора, то последующий запуск другой программы, уже будет без подтверждения UAC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2019, 01:05 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
А я обновляю всё репликацией. Уж правки и мелкие апдейты всегда. И не парюсь особо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2019, 01:19 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
GatorА я обновляю всё репликацией. Уж правки и мелкие апдейты всегда. И не парюсь особо Можно поподробнее, как это через репликации? Я тоже не хочу парится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2019, 06:10 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
ёёёёёСхема работы может быть, например, следующей. При старте основного приложения проверять необходимость обновления (особых прав для этого не требуется, надо полагать). Если обновление требуется - запускать специальный "обновлятор" (приложение без привилегий), который в соответствии с требуемой логикой выполняет нужные операции, при необходимости (для выполнения привилегированных операций) обращаясь к сервису. По завершению работы "обновлятор" перезапускает исходное приложение. Ну, вот более менее картина проясняется, спасибо. Будет три екзешника: собственно само приложение, апдейтер и сервис. Теперь осталось выяснить, как лучше(проще) сделать общение апдейтера с сервисом. Через TCP мне кажется очень сложно. Через мютекс? В идеале чтобы сервис не сканировал каждые 2 сек, а чтобы запускался только во время обновления. Предложите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2019, 06:23 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZёёёёёСхема работы может быть, например, следующей. При старте основного приложения проверять необходимость обновления (особых прав для этого не требуется, надо полагать). Если обновление требуется - запускать специальный "обновлятор" (приложение без привилегий), который в соответствии с требуемой логикой выполняет нужные операции, при необходимости (для выполнения привилегированных операций) обращаясь к сервису. По завершению работы "обновлятор" перезапускает исходное приложение. Ну, вот более менее картина проясняется, спасибо. Будет три екзешника: собственно само приложение, апдейтер и сервис. Теперь осталось выяснить, как лучше(проще) сделать общение апдейтера с сервисом. Через TCP мне кажется очень сложно. Через мютекс? В идеале чтобы сервис не сканировал каждые 2 сек, а чтобы запускался только во время обновления. Предложите. Ну, например. Сервис создает мэилслот и тупо ждет поступления команды. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Клиент сервиса подключается к мэилслоту и эвенту с такими же именами, отправляет команжду и пинает эвент: Код: pascal 1. 2. 3. 4. 5. 6. Всё... . Ну, надо разобраться в методах работы с эвентами, мэилслотами, в правилах их наименования и еще в некоторых мелочах. Может быть, мьютексы задействовать. Например, сервис, при выполнении команд, будет взводить флажок "я работаю". А клиент ждет, чтобы флажок не был взведен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2019, 06:48 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZ, можно пайпы задействовать, вместо мэилслотов. Тоже несложно, и связь двусторонняя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2019, 06:49 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
YuRockВозможно, твой сервер завалится через несколько сотен недель именно по этой причинене, моему нельзя никак ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2019, 10:54 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZ, Ну как? Пишешь изменения в базу, и она их распространяет. Заодно с правами легче разобраться. Всё работает через роли и права MSSQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2019, 10:56 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
GatorMasterZ, Ну как? Пишешь изменения в базу, и она их распространяет. Заодно с правами легче разобраться. Всё работает через роли и права MSSQL Ну, это уже высший пилотаж. У меня программка маленькая и использую sqlite3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2019, 12:30 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZКак потом из сервиса запустить обновленную программу? Это непростая задача. Можно запустить на текущем рабочем столе, но это мало поможет в случае RDP и/или нескольких рабочих столов. Так что надо сообщать программам, которые обновляем, что им надо перезапуститься. MasterZПодскажите как запустить сервис из программы? OpenSCManager/OpenService/StartService (ControlService), и можно в цикле ждать необходимого состояния с помощью QueryServiceStatusEx. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2019, 14:04 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZalekcvpпропущено... И что, таким образом любой пользователь с ограниченными правами может запустить любое приложение с правами администратора?.. Не зная пароля от учётной записи администратора? Серьёзно? пропущено... Windows - многопользовательская система, кто-то мог работать с этой же программой и не выйти из учётки, после чего зашёл пользователь, который хочет "обновить" приложение. А может программа вообще работает на терминальном сервере, где её запускает куча разных пользователей одновременно. Насчет этого я придумал как обойти. После того как пользователь нажмет "Обновить" прога посмотрит, есть ли другие пользователи подключенные в данный момент. Если есть, то обновление не выолняется или просит отключить пользователей. Но это потом буду разбираться. программа при запуске будет создавать мьютекс с именем GetUserDir + 'МОЙ_МЬЮТЕКС'. при обновлении прога проверит есть ли мьютексы с именами всех пользователей. Как получить список пользователей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2019, 06:29 |
|
||
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#18+
MasterZпрограмма при запуске будет создавать мьютекс с именем GetUserDir + 'МОЙ_МЬЮТЕКС'. при обновлении прога проверит есть ли мьютексы с именами всех пользователей. Как получить список пользователей? Легче создавать (первый экземпляр) / открывать (все последующие) мьютекс/событие. Проверять инсталлятором через OpenEvent. При закрытии экземпляра ссылка на объект сама удалится, если ссылок нет - объект уничтожится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2019, 15:25 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2039595]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
191ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 538ms |

| 0 / 0 |
