powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Опять обновление программы
25 сообщений из 62, страница 1 из 3
Опять обновление программы
    #39796281
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Требуется сделать обновление небольшой программки через интернет ПО ЗАПРОСУ ПОЛЬЗОВАТЕЛЯ.
В папке проекта все работает(программа + апдейтер). После установки в program files начались проблемы c доступом.
Перечитал много тем по обновлениям, но до истины так и не докопался.
Я понял, что нужно создать сервис, который будет запускаться при установке под админской учеткой. Он и будет подменять файлы программы и библиотек в program files
Подскажите как запустить сервис из программы?
Как потом из сервиса запустить обновленную программу?
Или может я вообще двигаюсь в неправильном направлении?
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796304
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZПодскажите как запустить сервис из программы?Через IPC, например. Shared Memory или Named Pipes или вообще сокеты. Программа подключается к сервису и запрашивает обновление, после чего сервис должен как-то штатно завершить все запущенные экземпляры программы, а на компьютере их может быть запущено несколько, под разными пользователями, а если это удалённый рабочий стол, то кто-то может в ней работать и не будет рад прерыванию своей работы.

MasterZКак потом из сервиса запустить обновленную программу?Тут сложнее, надо в первом пункте составить список пользователей, у кого она была запущена и потом заново запустить её от имени этих пользователей (как реализовать - хз, не делал так).

MasterZИли может я вообще двигаюсь в неправильном направлении?Если вам необходимо чтобы обновляли программу именно пользователи - может её устанавливать не в Program Files, а в %appdata%?.. Для каждого пользователя - свой экземпляр, с которым он может делать всё что угодно и, заодно, дополнительная служба не потребуется?
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796322
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZИли может я вообще двигаюсь в неправильном направлении?
Нынче модно в appdata ставиться и там же обновляться.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796368
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanMasterZИли может я вообще двигаюсь в неправильном направлении?
Нынче модно в appdata ставиться и там же обновляться.
Бесит это! Приложение, которое ставится в appdata - должно сразу же удаляться с компьютера.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796451
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziv-2014wadmanпропущено...

Нынче модно в appdata ставиться и там же обновляться.
Бесит это! Приложение, которое ставится в appdata - должно сразу же удаляться с компьютера.

Правильно! Больше всякого *овна на компьютер с админскими правами! :)
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796457
Foxpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ненавижу захламляющие сервисы как в гугл хроме. Лучше брать пример с мозиллы, и проверять обновления при запуске
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796470
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziv-2014wadmanпропущено...

Нынче модно в appdata ставиться и там же обновляться.
Бесит это! Приложение, которое ставится в appdata - должно сразу же удаляться с компьютера.

Микрософты потом запретят запускать программу из appdata, придется переделывать.

Хочется как в мозиле, или notepad++ с одним условием, чтобы приложение или сервис само не лезло в интернет ПО ЗАПРОСУ ПОЛЬЗОВАТЕЛЯ..
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796489
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZХочется как в мозиле, или notepad++ с одним условием, чтобы приложение или сервис само не лезло в интернет ПО ЗАПРОСУ ПОЛЬЗОВАТЕЛЯ..

Приделать менюшку/кнопку "Проверить обновления" - не предлагать?
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796509
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot alekcvp]MasterZПодскажите как запустить сервис из программы?Через IPC, например. Shared Memory или Named Pipes или вообще сокеты. Программа подключается к сервису и запрашивает обновление, после чего сервис должен как-то штатно завершить все запущенные экземпляры программы, а на компьютере их может быть запущено несколько, под разными пользователями, а если это удалённый рабочий стол, то кто-то может в ней работать и не будет рад прерыванию своей работы.

Я думаю немного по другому. Сервис нужен только для того, чтобы с правами админа подменить старые файлики программы новыми. Пользователь запрашивает обновления, через меню и приложение проверяет есть-нет, закачивает все что нужно, сообщает сервису что ему пора работать и убивается. Сервис, как я уже говорил, подменяет старые файлы новыми и запускает обновленное приложение.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796517
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZсообщает сервису что ему пора работать и убивается. Сервис, как я уже говорил, подменяет старые файлы новыми и запускает обновленное приложение.
... а в этот момент приложение запущено у ещё 2х пользователей по RDP и сервис идёт лесом, т.к. exeшник заблокирован ?..
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796526
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpMasterZсообщает сервису что ему пора работать и убивается. Сервис, как я уже говорил, подменяет старые файлы новыми и запускает обновленное приложение.
... а в этот момент приложение запущено у ещё 2х пользователей по RDP и сервис идёт лесом, т.к. exeшник заблокирован ?..

Да, об этом я не подумал, проблемма...
Программа задумывалась как персональная не многопользовательская, но получается, что по закону Мерфи...
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796533
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZПрограмма задумывалась как персональная не многопользовательская
В чём тогда проблема засунуть её в профиль пользователя (appdata) ?..
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796535
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanНынче модно в appdata ставиться и там же обновляться.Каких только сексуальных девиаций в мире не встретишь...
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796713
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpЧерез IPC, например. Shared Memory или Named Pipes или вообще сокеты. Программа подключается к сервису и запрашивает обновление, после чего сервис должен как-то штатно завершить все запущенные экземпляры программы, а на компьютере их может быть запущено несколько, под разными пользователями, а если это удалённый рабочий стол, то кто-то может в ней работать и не будет рад прерыванию своей работы.
Что-то чересчур мудрено. Всё, что описано как задача сервиса, может выполнять инсталлятор. Который будет запущен от админа.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796740
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZЗдравствуйте!
Требуется сделать обновление небольшой программки через интернет ПО ЗАПРОСУ ПОЛЬЗОВАТЕЛЯ.
В папке проекта все работает(программа + апдейтер). После установки в program files начались проблемы c доступом.
...
Апдейтер должен работать с правами администратора, нужно добавить соответствующий манифест.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796745
Foxpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запускается отдельная программа апдейт, возвращает через команду что есть обновления. Текущая программа запускает через runas программу апдейт с правами, и закрывает саму себя. И начинает обновления программы - апдейт
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796778
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2Всё, что описано как задача сервиса, может выполнять инсталлятор. Который будет запущен от админа.
Вы ТЗ читали? Обновлять приложение должен пользователь, как он запустит инсталлятор "от админа"?
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796779
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxpcТекущая программа запускает через runas программу апдейт с правами, и закрывает саму себя. И начинает обновления программы - апдейт1. Откуда программа знает данные учётной записи администратора?
2. Что делать, если есть экземпляры программы, запущенные другими пользователями?
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796797
Foxpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvp,

1)
Код: pascal
1.
ShellExecute(0, PWideChar('runas'), PWideChar(Application.ExeName), nil, nil, 5);


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
program Project3;

{$APPTYPE CONSOLE}
{$R *.res}
uses
  System.SysUtils, ShellAPI, Vcl.Forms;

begin
  try
    Writeln('Run Admin?');
    Readln;
    ShellExecute(0, PWideChar('runas'), PWideChar(Application.ExeName), nil, nil, 5);
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

end.



2) Как понять - другим пользователем? Запускается от того, от кого была запущена программа
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796873
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpПрограмма подключается к сервису и запрашивает обновление, после чего сервис должен как-то штатно завершить все запущенные экземпляры программы, а на компьютере их может быть запущено несколько, под разными пользователями, а если это удалённый рабочий стол, то кто-то может в ней работать и не будет рад прерыванию своей работы.

MasterZКак потом из сервиса запустить обновленную программу?Тут сложнее, надо в первом пункте составить список пользователей, у кого она была запущена и потом заново запустить её от имени этих пользователей (как реализовать - хз, не делал так).Все это не надо. Сервис стягивает (можно по запросу) обновление, переименовывает старый экзешник (да, это штатно разрешено, даже он "заблокирован") и переписывает на его место новый. Всё. Ну, можно, если надо, еще сообщить тем, кто запрашивал обновление, что оно готово.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796874
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockдаже ондаже если он
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796877
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Foxpcненавижу захламляющие сервисы как в гугл хроме.Меня тоже от этого воротит. Но сейчас это мэйнстрим - при установке, которая проходит с админскими правами, ты можешь установить программу в PF, которую сможет запускать любой, и службу, которая local admin. Определенная логика и польза в таком подходе есть. В будущем всегда можно что-либо дополнительное прикрутить к службе, когда нужны права.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796878
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxpcЛучше брать пример с мозиллы, и проверять обновления при запускеНу так бери пример, только полностью. Она не проверяет при запуске, она постоянно апдейты тянет, а пни запуске просто проверяет, стянут ли очередной апдейт. Можно и по запросу это проверять и перезапускаться, если он стянут.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796887
I partigiani resistono
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZ...нужно создать сервис, который будет запускаться при установке под админской учеткой. Он и будет подменять файлы программы и библиотек в program files...

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

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

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

В сценарий воткнуть можно все, что угодно, даже запуск своего прежнего инсталлятора.
...
Рейтинг: 0 / 0
Опять обновление программы
    #39796928
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62MasterZЗдравствуйте!
Требуется сделать обновление небольшой программки через интернет ПО ЗАПРОСУ ПОЛЬЗОВАТЕЛЯ.
В папке проекта все работает(программа + апдейтер). После установки в program files начались проблемы c доступом.
...
Апдейтер должен работать с правами администратора, нужно добавить соответствующий манифест.

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


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