Текущий архив: 2005.08.07;
Скачать: CL | DM;
Вниз
Управление доступом Найти похожие ветки
← →
rus9 © (2005-07-18 10:25) [0]Уважаемые Мастера!
Пользователи загружают мою программу со специально выделенного компьютера.
Проблема: при обновлении ПО после предупреждения пользователей об отключении к моменту старта обновления самостоятельно отключаются не все.
Подскажите, как можно программно получить доступ к используемому ПО для удаления.
← →
Alexander Panov © (2005-07-18 10:27) [1]Application.MainForm.Close;
Application.Termanate;
← →
Digitman © (2005-07-18 10:42) [2]
> как можно программно получить доступ к используемому ПО
> для удаления
сам подумай - как можно удалить используемый в данный момент ресурс ?
напиши апдейт-сервер (или используй готовый)
сделай обновляемое тобой ПО клиентом этого апдейт-сервера
← →
rus9 © (2005-07-18 10:42) [3]А нельзя воспользоваться механизмами ОС (W2000)
← →
Digitman © (2005-07-18 10:46) [4]
> rus9 © (18.07.05 10:42) [3]
> механизмами
механизмами, позволяющими что ? удалить открытый файл ?
← →
rus9 © (2005-07-18 10:48) [5][4]
закрыть сеансы
← →
rus9 © (2005-07-18 10:53) [6][2]
апдейт-сервер (или используй готовый)
апдейт-сервер - это что :(
← →
chili (2005-07-18 10:58) [7]
Function GetFileDate(Const FileName: TFileName): TDateTime;
Var
SearchRec: TSearchRec;
begin
Result := Now;
if FindFirst(FileName,faAnyFile-faDirectory,SearchRec) = 0 then
begin
Result:=FileDateToDateTime(SearchRec.Time);
FindClose(SearchRec);
end;
end;
procedure TForm1.FormShow(Sender: TObject);
Var
SearchRec: TSearchRec;
Str: TStringList;
S: String;
begin
IF FileExists(PATH + "\Update\" + ExtractFileName(ParamStr(0))) and
(GetFileDate(PATH + "\Update\" + ExtractFileName(ParamStr(0))) <
GetFileDate(ParamStr(0))) then
Begin
With TStringList.Create Do
try
Add(":Repeat");
Add("IF Exist "" + ParamStr(0) + "" Del "" + ParamStr(0) + """);
Add("IF Exist "" + ParamStr(0) + "" goto Repeat");
Add("Copy "" + PATH + "\Update\" + ExtractFileName(ParamStr(0)) + "" "" + ParamStr(0) + """);
Add(""" + ParamStr(0) + """);
Add("del update.bat");
SaveToFile("update.bat");
WinExec("update.bat", SW_HIDE);
Application.MainForm.Close;
Exit;
finally
Free;
end;
End; {IF}
end;
← →
Anatoly Podgoretsky © (2005-07-18 11:00) [8]chili (18.07.05 10:58) [7]
Э это зачем ты копируешь файл на машину?
"Пользователи загружают мою программу со специально выделенного компьютера."
← →
isasa © (2005-07-18 11:01) [9]Если я правильно понял, речь идет о сервере приложений.
Разбить ПО на клиента и серверную часть.
← →
chili (2005-07-18 11:08) [10]Пользователи загружают мою программу со специально выделенного компьютера.
Может я что то не правильно понял, но слово "Загружать" отличаеться от "Запускать"
← →
Alexander Panov © (2005-07-18 11:09) [11]rus9 © (18.07.05 10:48) [5]
Тебе же ответили.
1. Используй нотификацию для своей программы.
2. нотификация одлжна откуда-то приходить, т.е. должна запускаться, например, на сервере программа для обновления, которая должна извещать все запущенные программы( Как вариант - появление файла-флажка на сервере).
3. В случае зависания программы на рабочей станции, на сервере воспользуйся WMI для освобождения ресурса.
← →
Digitman © (2005-07-18 11:13) [12]
> закрыть сеансы
чем же пользователь виноват ? зачем ты ему проблемы создаешь ?
ведь твое работающее в дан.момент ПО ничего не знает о том что файл.сервер закрыл сеанс
ты должен сделать свое ПО клиентом своего апдейт-сервера и "научить" свое ПО по "приказу" апдейт-сервера немедля завершать работу
← →
rus9 © (2005-07-18 11:21) [13][11]
[12]
чем же пользователь виноват ? зачем ты ему проблемы создаешь ?
Понял. Спасибо. Делаю апдейт-сервер
← →
Anatoly Podgoretsky © (2005-07-18 11:42) [14]chili (18.07.05 11:08) [10]
А ты спроси автора, и поймешь что он подразумевает под "загрузкой"
← →
rus9 © (2005-07-18 12:18) [15][10]
[14]
ошибка: не "загрузка" - "запуск". Sorry
← →
evvcom © (2005-07-18 12:30) [16]
> rus9 ©
И все же проще копировать с сервера exe-файл на клиента и с клиента уже запускать. Естественно копировать по условию, проверив версию. Имхо.
← →
Slym © (2005-07-18 12:32) [17]Вообще NT системы могут рвать Сетевые сессии к файлам... (как вариант) переименование подхваченного файла на сервере локально (не всегда действует)
← →
Digitman © (2005-07-18 12:33) [18]
> Slym © (18.07.05 12:32) [17]
> NT системы могут рвать Сетевые сессии к файлам
рвать-то рвать ... но КЛИЕНТУ каково ?
← →
isasa © (2005-07-18 12:40) [19]>И все же проще копировать с сервера exe-файл на клиента и с клиента уже запускать.
Все вспомноли о DCOM. ;)
← →
Alexander Panov © (2005-07-18 13:04) [20]Вообще не вижу проблемы при запуске с сервера в случае систем выше W98.
Простейшая технология, даже можно не убивать зависшие сессии.
1. В простейшем случае используется файл-флажок(или любой подобный заменитель).
2. Старая файл программ на сервере переименовывается.
3. Программа проверяет периодически взведение флажка, и при его наличии перезапускается(может сначала предупреждать пользователя;).
4. В принципе, вот и все.
Страницы: 1 вся ветка
Текущий архив: 2005.08.07;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.044 c