Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / EXE-шник возможность удаления / 19 сообщений из 19, страница 1 из 1
08.09.2006, 09:38
    #33972879
vanoman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
Добрый день!

Думаю вопрос поднимался, но даже не знаю по каким клчевым словам начать поиск...

Что есть:
n-пользователей запускающих 1 exe-шник по сетке с сервера. По мере поступления заданий на доработку код и, соответственно, exe-шник меняется. Надоело, при необходимости заменить Exe на новую версию, выгонять пользователей из программы.

Вопрос: Как и можно-ли реализовать возможность некоего "освобождения" файла на диске после запуска? Т.е. Запустились, Как-то освободили Exe с которого запускались, работаем.

Иль возможно есть некии иные механизмы реализации задачи по "принудительному Выгону (от слова Выгонять) пользователей"?

Буду благодарен за советы и отсылы на RTFM
...
Рейтинг: 0 / 0
08.09.2006, 10:04
    #33972949
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
vanoman
в дельфийном форуме часто поднимается такая тема
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
08.09.2006, 10:18
    #33973002
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
Можно реализовать это с помощью дополнительной программы (х) работающей по принципу клиент-сервер. Она будет нужна на пользовательской стороне для поднятия приложения после обновления и рулиться с твоей машины, она может быть реализована без видимого интерфейса.
Происходит следующее:
1. Ты обновил экзешник своей проги.
2. Программа с твоего компа посылает заранее известную команду пользовательским приложениям о закрытии для обновления через установленную связь через winsock-интерфейс (пользовательские приложения должны слушать какой-нибудь порт).
3. Пользовательские приложения закрываются и запускают доп. программу (х), для мониторинга сообщений (через winsock) о том, когда запустить главную обновленную программу.
4. После того как все пользователи вышли, меняешь серверный экзешник.
5. Далее посылается команда программе х на старт приложения на юзерском компе после обновления.
6. В случае успешного старта, программа х заканчивает свою работу, если нет отправляет тебе сообщение о сбое на клиентской стороне.

Я бы сделал так!
--------------------------------------------------------------
...
Рейтинг: 0 / 0
08.09.2006, 10:20
    #33973009
QRT
QRT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
Может глупость сморожу, но все же

Грубо говоря на серваке есть папка с "последним" exe-шником и У каждого пользователя в профиле есть ехе-шник и допустим bat-ник (ползователь запускает bat-ник), который действует так: сравнивает дату создания "последнего" exe-шника с ехе-шником в профиле если он новее, то копирует его в профиль и запускает, если нет, то просто запускает ехе-шник. В итоге имеем у каждого пользователя свой ехе-шник, а "последний" можешь менять когда захочешь.
...
Рейтинг: 0 / 0
08.09.2006, 10:29
    #33973044
muk07
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
Именно так как предложил QRT (с некоторыми нюансами) я давно и успешно делаю.
...
Рейтинг: 0 / 0
08.09.2006, 10:43
    #33973106
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
это работает, если не нужно быстро заменить программу у пользователей, когда не критично то, чем они занимаются и программа может съесть и то что ввели на новой версии, как и то что ввели на старой
-------------------------------------------------------------
...
Рейтинг: 0 / 0
08.09.2006, 10:54
    #33973155
QRT
QRT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
Cerebrumэто работает, если не нужно быстро заменить программу у пользователей, когда не критично то, чем они занимаются и программа может съесть и то что ввели на новой версии, как и то что ввели на старой

Разумеется это так.

В моих прогах обычно переделывать надо мелкие вещи для двух-трех человек, остальным эти модификации просто не нужны, так зачем же всех выгонять??? Просто звонишь кому надо и говоришь чтобы перезапустили.
...
Рейтинг: 0 / 0
08.09.2006, 11:45
    #33973349
vanoman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
Спасибо за ответы.

1. Про BAT-ник. Разумеется это первый вариант, что приходит в голову. Разумеется он право на существование.
Тут просто, не пинайте ногами, хочется выпендриться: Если это можно реализовать в одном модуле (exe)- то зачем нужно прибегать к помощи сторонней системы (Батника)

2. Предложение по отправке некоего сообщениея по сетке с последующим... Чертовски мнтересный вариант. Разумеется думал о нём. Не могу пока понять с чего начать.
Например можно реслизовать отсыл некоего сообщения:
net send * MySuperExe =resrart
Как можо перехватить сей засыл? Где почитать? Посоветуйте. Спасибо.

3. - Просто звонишь кому надо и говоришь чтобы перезапустили.
Да, да именно так всё и происходит. Но, говорят, хороший программист - ленивый программист. Наличие второй состовляющей во мне застваляет искать пути отказа от обзвона...
Не хочу говорить о том, что пользователей много, тел. не берут, на обед уходят... просто этот вариант уже задолбал.
...
Рейтинг: 0 / 0
08.09.2006, 13:00
    #33973711
EXE-шник возможность удаления
vanomanСпасибо за ответы.

1. Про BAT-ник. Разумеется это первый вариант, что приходит в голову. Разумеется он право на существование.
Тут просто, не пинайте ногами, хочется выпендриться: Если это можно реализовать в одном модуле (exe)- то зачем нужно прибегать к помощи сторонней системы (Батника)

2. Предложение по отправке некоего сообщениея по сетке с последующим... Чертовски мнтересный вариант. Разумеется думал о нём. Не могу пока понять с чего начать.
Например можно реслизовать отсыл некоего сообщения:
net send * MySuperExe =resrart
Как можо перехватить сей засыл? Где почитать? Посоветуйте. Спасибо.

3. - Просто звонишь кому надо и говоришь чтобы перезапустили.
Да, да именно так всё и происходит. Но, говорят, хороший программист - ленивый программист. Наличие второй состовляющей во мне застваляет искать пути отказа от обзвона...
Не хочу говорить о том, что пользователей много, тел. не берут, на обед уходят... просто этот вариант уже задолбал.

По требованиям 2 и 3 возникает совет - смотри в сторону сокетов и, например, http протокола.
Твоя программа будет слушать порт (например, 80-й) и когда получит сообщение (естественно, что это будет http-запрос, а не NET SEND) выполнит определенные действия по принудительному закрытию программы...
...
Рейтинг: 0 / 0
08.09.2006, 13:05
    #33973737
EXE-шник возможность удаления
vanomanСпасибо за ответы.

1. Про BAT-ник. Разумеется это первый вариант, что приходит в голову. Разумеется он право на существование.
Тут просто, не пинайте ногами, хочется выпендриться: Если это можно реализовать в одном модуле (exe)- то зачем нужно прибегать к помощи сторонней системы (Батника)

2. Предложение по отправке некоего сообщениея по сетке с последующим... Чертовски мнтересный вариант. Разумеется думал о нём. Не могу пока понять с чего начать.
Например можно реслизовать отсыл некоего сообщения:
net send * MySuperExe =resrart
Как можо перехватить сей засыл? Где почитать? Посоветуйте. Спасибо.

3. - Просто звонишь кому надо и говоришь чтобы перезапустили.
Да, да именно так всё и происходит. Но, говорят, хороший программист - ленивый программист. Наличие второй состовляющей во мне застваляет искать пути отказа от обзвона...
Не хочу говорить о том, что пользователей много, тел. не берут, на обед уходят... просто этот вариант уже задолбал.
Кстати, по требованию 3:
А если пользователь там вел какую-то работу (вводил данные), а его к начальству вызвали. А ты в это время начал программу обновлять... При перезапуске приложения вся работа пользователя пойдет "коту под хвост"... (Ты бы еще его компьютер удаленно перезагрузил!) Так что наживешь ты себе врагов немеряно... Здесь даже экстрасенсом быть не надо...
...
Рейтинг: 0 / 0
08.09.2006, 13:27
    #33973861
vanoman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
Станислав СКстати, по требованию 3:
А если пользователь там вел какую-то работу (вводил данные), а его к начальству вызвали. А ты в это время начал программу обновлять... При перезапуске приложения вся работа пользователя пойдет "коту под хвост"... (Ты бы еще его компьютер удаленно перезагрузил!) Так что наживешь ты себе врагов немеряно... Здесь даже экстрасенсом быть не надо...

:-) тоже вариант. Вот что я люблю слышать так это какие-нибудь доводы для принятия/отмены решения не связанные с миром "0/1". :-)
Тоже Вариант! :-) Надо взвесить !
...
Рейтинг: 0 / 0
08.09.2006, 13:28
    #33973871
vanoman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
Станислав СКстати, по требованию 3:
А если пользователь там вел какую-то работу (вводил данные), а его к начальству вызвали. А ты в это время начал программу обновлять... При перезапуске приложения вся работа пользователя пойдет "коту под хвост"... (Ты бы еще его компьютер удаленно перезагрузил!) Так что наживешь ты себе врагов немеряно... Здесь даже экстрасенсом быть не надо...

:-) тоже вариант. Вот что я люблю слышать так это какие-нибудь доводы для принятия/отмены решения не связанные с миром "0/1". :-)
Тоже Вариант! :-) Надо взвесить !
...
Рейтинг: 0 / 0
08.09.2006, 13:38
    #33973932
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
vanomanСпасибо за ответы.
2. Предложение по отправке некоего сообщениея по сетке с последующим... Чертовски мнтересный вариант. Разумеется думал о нём. Не могу пока понять с чего начать.
Например можно реслизовать отсыл некоего сообщения:
net send * MySuperExe =resrart
Как можо перехватить сей засыл? Где почитать? Посоветуйте. Спасибо.

не нужны тут никакие net send'ы, посмотри в сторону winsock.
1.
Начни с того, что добавь в новую своей версию программы поддежку winsock и научи ее слушать порт, через который ты будешь посылать ей сообщения о необходимости закрыться перед апдейтом и запускать программу х, которая потом вернет ее к жизни, но уже в новой реинкарнации.
2.
создай приложение х (см. выше), которое будет при запуске тупо слушать незанятый ни кем порт (bind, listen, accept и др.), и при получении по нему сообщения запускать обновившуюся программу (ShellExecute(...)) и при успешном запуске последней отключаться и в противном случае посылать тебе сообщение об ошбке, вот тут можно прикрутить net send, опять же через ShellExecute.

Для полноты картины, а то я начал сомневаться, что мы говорим об одном и том же.
Когда я говорю о посылке сообщений я имею ввиду сообщения, которыми программы будут обмениватся, а не те которыми обмениваються люди через net send.
удачи
...
Рейтинг: 0 / 0
08.09.2006, 13:40
    #33973949
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
Станислав С
А если пользователь там вел какую-то работу (вводил данные), а его к начальству вызвали. А ты в это время начал программу обновлять... При перезапуске приложения вся работа пользователя пойдет "коту под хвост"... (Ты бы еще его компьютер удаленно перезагрузил!) Так что наживешь ты себе врагов немеряно... Здесь даже экстрасенсом быть не надо...
для этого его программа должна уметь корректно завершиться, а так как прогу писал он сам, то написать что то типа временного дампа всех несохранненых изменений думаю будет под силу.
...
Рейтинг: 0 / 0
08.09.2006, 17:41
    #33975057
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
можно хранить на серваке все версии проги и только обновлять ярлычок на последнюю версию (сами экзешники прятать от кривых ручек), приучить юзверей тыкать в ярлычок. Никого не надо будет перезапускать. Периодически проверять, нельзя ли удалить какую-нить старую версию.
...
Рейтинг: 0 / 0
08.09.2006, 17:43
    #33975066
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
для более мощной защиты от дурака ярлычок можно заменить на лаунчер.
...
Рейтинг: 0 / 0
10.09.2006, 13:09
    #33976338
Pavel Kilevatyh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
Тема специфичная, но рискну вставить свои пять копеек.
Если использовать в качестве хранилища исполняемого файла какую-то нормальную ФС, например ext2/3, то весь гиморрой сам собой исчезает. Современные ФС не блокируют файл при его открытии/чтении и даже записи. Просто те кто уже открыл/запустил файл будут иметь старую версию, а кто захочет обновится просто выйдет сам и запустит новую программу.
...
Рейтинг: 0 / 0
10.09.2006, 22:26
    #33976803
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
угумс, начнёт экзешничек ресурсики подгружать, а они...
...
Рейтинг: 0 / 0
11.09.2006, 15:22
    #33978332
ZeusTheTrueGod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXE-шник возможность удаления
Наверное эта схема уже предложена,но почему бы не сделать приблизительно так:
На сервере хранить launcher.exe и program.dat - переименованный program.exe
При запуске launcher.exe он
1) Выбирает место куда копировать program.dat, например GetTempDirectory() и GetTempFileName().
2) Копирует туда program.dat под именем из пункта 1, изменяя расширение на .exe
3) выполняет через Shell эту программу
4) завершает работу.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / EXE-шник возможность удаления / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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