|
|
|
Опять обновление программы
|
|||
|---|---|---|---|
|
#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?fid=58&msg=39797981&tid=2039595]: |
0ms |
get settings: |
9ms |
get forum list: |
23ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
191ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 547ms |

| 0 / 0 |
