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

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

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

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

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

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

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

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

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

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

Да, об этом я не подумал, проблемма...
Программа задумывалась как персональная не многопользовательская, но получается, что по закону Мерфи...
...
Рейтинг: 0 / 0
04.04.2019, 15:06
    #39796533
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять обновление программы
MasterZПрограмма задумывалась как персональная не многопользовательская
В чём тогда проблема засунуть её в профиль пользователя (appdata) ?..
...
Рейтинг: 0 / 0
04.04.2019, 15:08
    #39796535
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять обновление программы
wadmanНынче модно в appdata ставиться и там же обновляться.Каких только сексуальных девиаций в мире не встретишь...
...
Рейтинг: 0 / 0
04.04.2019, 17:26
    #39796713
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять обновление программы
alekcvpЧерез IPC, например. Shared Memory или Named Pipes или вообще сокеты. Программа подключается к сервису и запрашивает обновление, после чего сервис должен как-то штатно завершить все запущенные экземпляры программы, а на компьютере их может быть запущено несколько, под разными пользователями, а если это удалённый рабочий стол, то кто-то может в ней работать и не будет рад прерыванию своей работы.
Что-то чересчур мудрено. Всё, что описано как задача сервиса, может выполнять инсталлятор. Который будет запущен от админа.
...
Рейтинг: 0 / 0
04.04.2019, 18:07
    #39796740
s62
s62
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять обновление программы
MasterZЗдравствуйте!
Требуется сделать обновление небольшой программки через интернет ПО ЗАПРОСУ ПОЛЬЗОВАТЕЛЯ.
В папке проекта все работает(программа + апдейтер). После установки в program files начались проблемы c доступом.
...
Апдейтер должен работать с правами администратора, нужно добавить соответствующий манифест.
...
Рейтинг: 0 / 0
04.04.2019, 18:19
    #39796745
Foxpc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять обновление программы
Запускается отдельная программа апдейт, возвращает через команду что есть обновления. Текущая программа запускает через runas программу апдейт с правами, и закрывает саму себя. И начинает обновления программы - апдейт
...
Рейтинг: 0 / 0
04.04.2019, 19:02
    #39796778
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять обновление программы
Василий 2Всё, что описано как задача сервиса, может выполнять инсталлятор. Который будет запущен от админа.
Вы ТЗ читали? Обновлять приложение должен пользователь, как он запустит инсталлятор "от админа"?
...
Рейтинг: 0 / 0
04.04.2019, 19:03
    #39796779
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять обновление программы
FoxpcТекущая программа запускает через runas программу апдейт с правами, и закрывает саму себя. И начинает обновления программы - апдейт1. Откуда программа знает данные учётной записи администратора?
2. Что делать, если есть экземпляры программы, запущенные другими пользователями?
...
Рейтинг: 0 / 0
04.04.2019, 20:49
    #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
05.04.2019, 00:59
    #39796873
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять обновление программы
alekcvpПрограмма подключается к сервису и запрашивает обновление, после чего сервис должен как-то штатно завершить все запущенные экземпляры программы, а на компьютере их может быть запущено несколько, под разными пользователями, а если это удалённый рабочий стол, то кто-то может в ней работать и не будет рад прерыванию своей работы.

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

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

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

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

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

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


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