Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
3-1120116915
Apachi
2005-06-30 11:35
2005.08.07
Возрощает ли ADOCommand количесво измененных записей


14-1121674605
начинающий10
2005-07-18 12:16
2005.08.07
Конопка - где взять?


14-1121750288
БарЛог
2005-07-19 09:18
2005.08.07
Помогите перевести порошок =)


1-1121347729
Zak3D[@Tm]
2005-07-14 17:28
2005.08.07
Взаимосвязь модулей приложения.


14-1120578423
NewWonder
2005-07-05 19:47
2005.08.07
Сделал курсовик и ...