powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Опять обновление программы
25 сообщений из 62, страница 2 из 3
Опять обновление программы
    #39796930
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZТакой запрос будет пугать пользователей. Не хотелось бы.А, ты хотел без запроса, молча админские права получить? Надо было сразу с этого начинать...
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796932
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I partigiani resistonoMasterZ...нужно создать сервис, который будет запускаться при установке под админской учеткой. Он и будет подменять файлы программы и библиотек в program files...

"Все уже украдено до нас" - (с).

https://ru.wikipedia.org/wiki/Установщик_Windows

Сценарий инсталляции (документ .msi) выполняется под специальной учеткой, в привилегированном режиме службы NT (конкретно — под аккаунтом LocalSystem), эта учетка может доволно много, даже если у юзера совсем немного прав.

В сценарий воткнуть можно все, что угодно, даже запуск своего прежнего инсталлятора.

Обновление через инсталятор я не рассматриваю потому, что пользователю нужно будет сделать много движений при обновлении, а программка расчитана на НЕпродвинутых пользователй. И еще очень сильно усложняется инсталятор. Он должен выполнить скрипт по обновлению БД, а так же в его логике должен быть заложен откат до предыдущей версии в случае ошибки.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796942
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockMasterZТакой запрос будет пугать пользователей. Не хотелось бы.А, ты хотел без запроса, молча админские права получить? Надо было сразу с этого начинать...

Моя цель не получить админские права, а подменить старые файлы новыми. Ведь в других программах это как то делают и без всяких запросов на запуск под админом.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796948
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZбез всяких запросов на запуск под админомЕсли это PF и включен UAC - то именно под админом, только. Без запросов - значит одно из двух:
1. Эти программы используют службу;
2. Они знают пользователь/пароль админской учетки (хотя и это не панацея).
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796992
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Foxpcalekcvp,
Код: pascal
1.
ShellExecute(0, PWideChar('runas'), PWideChar(Application.ExeName), nil, nil, 5);

И что, таким образом любой пользователь с ограниченными правами может запустить любое приложение с правами администратора?.. Не зная пароля от учётной записи администратора? Серьёзно?

FoxpcКак понять - другим пользователем? Запускается от того, от кого была запущена программаWindows - многопользовательская система, кто-то мог работать с этой же программой и не выйти из учётки, после чего зашёл пользователь, который хочет "обновить" приложение. А может программа вообще работает на терминальном сервере, где её запускает куча разных пользователей одновременно.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796997
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 файл на исполнение открывает с этим флагом? Я вот почти уверен что нет.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797010
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZможет я вообще двигаюсь в неправильном направлении?а готовое решение заюзать не вариант, самому обязательно намутить?
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797011
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpFoxpcalekcvp,
Код: pascal
1.
ShellExecute(0, PWideChar('runas'), PWideChar(Application.ExeName), nil, nil, 5);

И что, таким образом любой пользователь с ограниченными правами может запустить любое приложение с правами администратора?.. Не зная пароля от учётной записи администратора? Серьёзно?

FoxpcКак понять - другим пользователем? Запускается от того, от кого была запущена программаWindows - многопользовательская система, кто-то мог работать с этой же программой и не выйти из учётки, после чего зашёл пользователь, который хочет "обновить" приложение. А может программа вообще работает на терминальном сервере, где её запускает куча разных пользователей одновременно.

Насчет этого я придумал как обойти. После того как пользователь нажмет "Обновить" прога посмотрит, есть ли другие пользователи подключенные в данный момент. Если есть, то обновление не выолняется или просит отключить пользователей. Но это потом буду разбираться. Сейчас хотелось бы узнать по подмене файлов, пока решение не найдено.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797048
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZСейчас хотелось бы узнать по подмене файлов, пока решение не найдено.
Подмена файлов в PF с правами пользователя - это отдельный сервис, который устанавливается вместе с программой и запускается от LocalSystem.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797052
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или как вариант - задание в Task Scheduler'е с повышенными привилегиями и правом на запуск для обычных пользователей.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797079
Foxpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvpИ что, таким образом любой пользователь с ограниченными правами может запустить любое приложение с правами администратора?.. Не зная пароля от учётной записи администратора? Серьёзно?

Любой. Только тебе придётся UAC подтвердить, если включён.

Хотя.. Можно тупо UAC выключить и начать карновал
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797082
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpMasterZСейчас хотелось бы узнать по подмене файлов, пока решение не найдено.
Подмена файлов в PF с правами пользователя - это отдельный сервис, который устанавливается вместе с программой и запускается от LocalSystem.

Это я уже писал в начале темы. А дальше вопросы.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797085
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpНу или как вариант - задание в Task Scheduler'е с повышенными привилегиями и правом на запуск для обычных пользователей.

Scheduler это запуск по времени, а мне нужно по запросу пользователя.
Ставить в Scheduler'е проверку чере 2 сек. по моему это несерьезно.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797090
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxpcalekcvpИ что, таким образом любой пользователь с ограниченными правами может запустить любое приложение с правами администратора?.. Не зная пароля от учётной записи администратора? Серьёзно?

Любой. Только тебе придётся UAC подтвердить, если включён.

Хотя.. Можно тупо UAC выключить и начать карновал

Я думаю отключать UAC это будет не карнавал, а танцы с бубном.
Про UAC вроде решено нужен сервис, ведь не зря его создаю и Мозила и Адобе ридер и др.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797159
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 файл на исполнение открывает с этим флагом? Я вот почти уверен что нет.Уверен.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797164
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZalekcvpНу или как вариант - задание в Task Scheduler'е с повышенными привилегиями и правом на запуск для обычных пользователей.

Scheduler это запуск по времени, а мне нужно по запросу пользователя.
Ставить в Scheduler'е проверку чере 2 сек. по моему это несерьезно.Виндовый шедулер очень глючная вещь. Особенно - начиная с висты и по сейчас. Мне пришлось из-за разных его глюков полностью отказаться от него (а юзал я его начиная с NT4 sp2).
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797187
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockВиндовый шедулер очень глючная вещь
а какие уж там болячки, если не секрет? а то у меня он логи архивирует и все такое, несколько лет вроде проблемы обходили стороной
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797205
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan,

после пары недель работы (запускает задание каждые 5-15 минут) приходится перезагружать винду, т.к. в какой-то момент перестает выгружаться svchost, который шедулер запускает каждый раз при запуске задания, и в итоге заканчивается память и хендлы.
Особенно быстро это проявляется, если запускать консоли (батники).
Проблемы начались (у меня) с приходом Win7. И замечались вплоть до Win10 1803 (скорей всего и в 1809 так). Т.ч. везде заменить пришлось на свой "шедулер" всё.

Единственное, зачем я иногда его теперь использую - это запустить программу "При включении компьютера". Типа вместо службы, если переделывать под службу лень.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797232
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock, жесть какая. у меня на серверных (2012 кажется) месяцами работают, правда запускаются не чаще раза в сутки вроде
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797253
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavanYuRock, жесть какая. у меня на серверных (2012 кажется) месяцами работают, правда запускаются не чаще раза в сутки вродеНу вот, у меня часто было, и - не на серверных.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797338
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockvavanYuRock, жесть какая. у меня на серверных (2012 кажется) месяцами работают, правда запускаются не чаще раза в сутки вродеНу вот, у меня часто было, и - не на серверных.Ну да, получается, у меня в сотни раз чаще запускалось задание (разные задания), и в итоге - винда валилась через 2-3 недели.
Возможно, твой сервер завалится через несколько сотен недель именно по этой причине :)
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797442
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Инсталлятор не обязательно должен иметь сложную логику... ему достаточно уметь запускать другую прогу, сколь угодно большой сложности. Это может быть и сама клиентская прога, запущенная с определенным параметром, например.
В описанной ситуации да, наверно сервис и IPC с клиентской софтиной нормальный вариант.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797537
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxpcalekcvpИ что, таким образом любой пользователь с ограниченными правами может запустить любое приложение с правами администратора?.. Не зная пароля от учётной записи администратора? Серьёзно?
Любой. Только тебе придётся UAC подтвердить, если включён.
Хотя.. Можно тупо UAC выключить и начать карновалЕщё раз: если у пользователя нет прав администратора (вообще), то UAC ему придётся подтверждать с паролем администратора.

MasterZalekcvpНу или как вариант - задание в Task Scheduler'е с повышенными привилегиями и правом на запуск для обычных пользователей.
Scheduler это запуск по времени, а мне нужно по запросу пользователя.
Ставить в Scheduler'е проверку чере 2 сек. по моему это несерьезно.Scheduler это запуск по условию, а не только по времени. В том числе там есть условие "вручную", через API.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797538
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockYuRockпропущено...
Ну вот, у меня часто было, и - не на серверных.Ну да, получается, у меня в сотни раз чаще запускалось задание (разные задания), и в итоге - винда валилась через 2-3 недели.
Возможно, твой сервер завалится через несколько сотен недель именно по этой причине :)

У меня на сервере работает ежудневный бекап SQL-сервера через шедулер месяцами, на десктопе - хром обновления через него проверяет регулярно, ни разу ничего не валилось.
Я не думаю что обновления пользователи будут запускать чаще пары раз в день.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39797545
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZ...
Или может я вообще двигаюсь в неправильном направлении?
Ты понимаешь, что после запуска "обновленная программа" не получит доступ к рабочему столу, потому что ее запустит сервис, не имеющий этот доступ?
От сервиса можно получить лишь выполнение привилегированных операций. А контроль за его работой и процесс перезапуска должен выполняться под аккаунтом исходного юзера.

Схема работы может быть, например, следующей.
При старте основного приложения проверять необходимость обновления (особых прав для этого не требуется, надо полагать). Если обновление требуется - запускать специальный "обновлятор" (приложение без привилегий), который в соответствии с требуемой логикой выполняет нужные операции, при необходимости (для выполнения привилегированных операций) обращаясь к сервису. По завершению работы "обновлятор" перезапускает исходное приложение.

MasterZКак потом из сервиса запустить обновленную программу?
Подскажите как запустить сервис из программы?
Надо книжку приобрести, про API Windows. И читать MSDN. Можно, конечно, искать статьи и лопатить форумы, но это не очень умно. В двух словах про сервисы тебе никто не объяснит.
...
Рейтинг: 0 / 0
25 сообщений из 62, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Опять обновление программы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]