|
|
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Подскажите, как обновлять свою программу, если она установлена в Program Files. Если в другой папке - все работает, т.е. вопрос в записи в свою папку в Program Files. Другие же как-то обновляются программы. Программа сетевая, она заменяет exe с сайта, а другим клиентам той же бд меняет exe уже из базы при следующем запуске. Повторюсь, в других папках работает и удобно, решаемо ли как-то для Program Files? Можно ли задать вопрос о повышении прав в момент обновления? Умею только через манифест при запуске всей программы. Или может правильно вынести все операции обновления в другую программу и ее уже с манифестом запускать из первой? В общем, если не затруднит, направьте на путь как правильно решить? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 11:03:57 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
Права доступа можно увеличить прямо для текущего приложения. Вот тут есть решение: 20765641 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 11:20:46 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
JaDi, благодарю! Интересно, сохранил в закладки. Но спрашивать логин/пароль/домен у пользователей не хочу (не для себя делается). Думаю надо просто в другую программу вынести да и не мудрить. И ей уже манифест прикрутить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 11:43:33 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
Если надо запускать копию своего приложения с повышенными правами, то можно воспользоваться вот этим решением: 18548818 (там есть код для делфи). Т.е. при необходимости обновления -- качаем новую версию, сохраняем во временную папку, оттуда запускаем с правами, текущую версию закрываем и то приложение делает нужные обновления (заменяет файлы и т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 11:57:22 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
Ого.. Ну и любители же, пописать коды обширные - бесполезные... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 12:35:48 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
Няшик, * Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 12:36:27 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
Только нужно помнить, что MSDN пишет о IsUserAnAdmin: IsUserAnAdmin is available for use in the operating systems specified in the Requirements section. It may be altered or unavailable in subsequent versions. This function is a wrapper for CheckTokenMembership. It is recommended to call that function directly to determine Administrator group status rather than calling IsUserAnAdmin. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 12:39:56 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
Вариант 1: Отдельная служба для обновления, устанавливаемая вместе с программой. Вариант 2: Задание в планировщике, запускаемое от администратора без сохранения пароля (см. как это делает CCleaner для обхода UAC). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 12:44:26 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
Aniskin, На10 - ке работает отлично. С включённым UAC и выключенным. Значит и на других системах будет И вряд ли её выведут из использования, раз она уже 16 лет на борту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 12:45:22 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
Няшик, И каждый раз обычный пользователь будет жать "да, хочу обновить", а потом бегать за сисадмином, чтобы он ввёл пароль от учётки с повышенными правами? Офигенное юзабилити :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 12:45:37 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
alekcvpсм. как это делает CCleaner для обхода UAC. Плохой пример. Эта фигня не работает. Он перезапускает и перезапускает программу. И так не запускает. И завершить это дияние без перезагрузки пк невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 12:49:03 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
Сервис имеет все права ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 13:47:31 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
Няшикalekcvpсм. как это делает CCleaner для обхода UAC. Плохой пример. Эта фигня не работает. Он перезапускает и перезапускает программу. И так не запускает. И завершить это дияние без перезагрузки пк невозможно. Возможно там надо запускать с параметрами. Но смысл не в этом, а в том что можно создать задачу, которая будет запускать приложение с ключом типа /update и админскими правами раз в час, например, и проверять обновления на сайте. При этом права пользователя, вошедшего в систему, вообще никому не интересны. Главное предусмотреть механизм взаимодействия с запущенными экземплярами приложения (завершение и перезапуск). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 13:52:41 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
Благодарю всех отозвавшихся. Запускаю замену файла отдельной программой через ShellExecute 'runas'. На тестовой машине Win10 - заработало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 14:21:23 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
у моих юзеров множественные проблемы с доступом по куче каталогов с диска C. Там и Program Files, и подкаталоги из Users, и даже пользовательские каталоги, на которые вряд ли кто-то специально менял права доступа. Повысить права (или runas) - не проблема, осталось только понять, когда это нужно делать. Пока что я при каждом сохранении или обращении к файлам, могущим быть в "плохих" каталогах - обхожусь костылями с проверкой errorcode при определенных ошибках, при коде 5 (access denied) считается что доступа нет. Чего-то более вменяемого не придумалось. При этом переименовать файл получается нормально, а уже создать новый файл с тем же именем - уже нужны права. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 16:43:41 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
Vizit0r, при появлении такой ошибки -- предлагать пользователю повысить права, после чего перезапустить приложение под админом. Во многих программах такое видел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 16:51:39 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
DevillioБлагодарю всех отозвавшихся. Запускаю замену файла отдельной программой через ShellExecute 'runas'. На тестовой машине Win10 - заработало. ... вот так и появляются приложения, которые при загрузке системы вываливают Elevation Required диалог чтобы проверить обновления, и жутко бесят. Java одно время этим страдала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 17:10:45 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
НяшикAniskin, На10 - ке работает отлично. С включённым UAC и выключенным. Значит и на других системах будет И вряд ли её выведут из использования, раз она уже 16 лет на борту Вряд ли ее выведут, но вот ее поведение может измениться. Пример. Была функция GetVersionEx, возвращающая версию Windows. Она тоже никуда не исчезла, но вот ее поведение изменилось, сейчас она возвращает не актуальную версию, а версию с учетом манифеста приложения. Вот и в теории IsUserAnAdmin может измениться. Если уж MS рекомендует использовать CheckTokenMembership напрямую, то нет никакой технической сложности не делать это и не иметь потенциального гемора в будущем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2017, 18:19:40 |
|
||
|
Самообновление программы в Program Files
|
|||
|---|---|---|---|
|
#18+
DevillioДоброго времени суток! Подскажите, как обновлять свою программу, если она установлена в Program Files. Если в другой папке - все работает, т.е. вопрос в записи в свою папку в Program Files. Другие же как-то обновляются программы. Программа сетевая, она заменяет exe с сайта, а другим клиентам той же бд меняет exe уже из базы при следующем запуске. Повторюсь, в других папках работает и удобно, решаемо ли как-то для Program Files? Можно ли задать вопрос о повышении прав в момент обновления? Умею только через манифест при запуске всей программы. Или может правильно вынести все операции обновления в другую программу и ее уже с манифестом запускать из первой? В общем, если не затруднит, направьте на путь как правильно решить? Спасибо!а зачем в ПрограмФайлс устанавливать? установи туда стартер, а основную прогу в темп куда-нить или в аппликатиондата при запуске стартер будет провеярть есть обновление или нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 19:47:10 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39536764&tid=2041708]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 306ms |

| 0 / 0 |
