Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.05;
Скачать: CL | DM;

Вниз

Обновление программы по сети   Найти похожие ветки 

 
xGhost ©   (2003-11-04 08:50) [0]

Как сделать обновление программы по сети ? Делал так : давал всем клиентам команду чтобы они качали файл с расшареного диска а потом его запускали , но этот ариант не подходит так как существуют проблемы с доступом ( иногда некоторые компьюетры не имеют доступ по сети или файл занят другим процесом ) Если использовать стандартные компоненты то программа время от времени глючит ..
Если ли у кого соображения на счёт данной проблемы ?


 
kavlad   (2003-11-04 08:57) [1]

Я сделал еще одно приложение, которое сначала проверает наличие обновлений, если надо скачивает их, а уж потом запускает основную программу. Это приложение при старте соединяется с удаленным сервером и отправляет ему версию exe с локальной машины. Сервер сравнивает версии и высылает новый exe-шник.


 
xGhost ©   (2003-11-04 09:10) [2]

> kavlad

У меня немного другие запросы , нужно обновлять программы самому то есть не программа проверяет обновления а ты сам запускаешь обновление и программы всей сети должны обновиться !
2 проблемы
1) сеть большая ( до 170 компов ) и нужно чтобы обновление проходило как можно быстрей и на всех компьютерах (exe файл обновления весит не более 500 кб )
2) обновление должно проходить в скрытом режиме так как программа расчитана на работу в компьютерном клубе и она не должна отвлекать игроков от процеса игры или просмотра фильма ..


 
Илайдж ©   (2003-11-04 09:27) [3]

Я недавно решал эту проблему.

Через мейлслоты рассылается соотвествующее сообщение для приложения
Приложение которое его поймает, выдает окно для юзера, что через минуту приложение будет закрыто, т.е у юзера есть минута, чтобы сохранить данные.

Организация очень проста - при запуске приложения генерится идентификатор сессии (просто строка на 30 рандомных символов)
и пишется в табличку на MSSQL вместе с именем машины, с которой запустили приложение.
Мейлслот имеет вид \\<PCNAME>\mailslot\<sessionID>


 
Илайдж ©   (2003-11-04 09:28) [4]

Ну и соотвественно, юзера не качают ничего, они запускают все приложения с сервака, на которые собсно и льется обновление.


 
xghost ©   (2003-11-04 09:38) [5]

>Илайдж

Спасибо за совет , но это не пойдёт к моей программе так как обновление не должно приченять юзеру неудобств ..


 
ZeroDivide ©   (2003-11-04 10:57) [6]

Тоже решал эту задачу:
Написал прогу (Launcher) умеющую:
1. Обновить саму себя из сети.
2. Обновить запущенное через нее приложение.
3. Деинсталлировать приложение.

После инсталла у юзера появляется ярлык запускающий launcher c ключем: имя проекта, типа X:\Win\Launcher MyProject
После запуска Launcher делает самообновление, потом обновляет MyProject и запускает его. Настройки(пути, разл. прараметры обновления) лежат в инишнике на серваке, у юзера туда только чтение, как в общем и ко всему остальному.
Немного о настройках запуска:
Параметры запуска приложений:

1. AppName - Название приложения (Тект ярлыка на
Desktop"е)

2. ExePath - Путь к приложению на сетевом диске
(включая имя файла)

3. LocalPath - Путь на локальном диске где будет
установлено приложение

4. Dir[n] - Необходимые приложению поддиректории.
В название входит полный путь, без
завершающего "\". Поддиректории указываются
на сетевом диске. Используя [*] после указания
сетевого пути можно непосдедственно указать
куда поддиректория будет копироваться.
Можно использовать [LocalPath] указывая путь
к директории установки.

Примеры:
................

LocalPath=C:\ProgramFolder
File1=L:\Progarms\RootFolder\AddFolder\1.txt
................
1) Dir1=L:\Progarms\RootFolder\AddFolder
2) Dir1=L:\Progarms\RootFolder\AddFolder*c:\MyFolder
3) Dir1=L:\Progarms\RootFolder\AddFolder*LocalPath\MyFolder
4) Dir1=L:\Progarms\RootFolder\AddFolder*LocalPath

В случае 1 файл 1.txt будет скопирован в :
C:\ProgramFolder\AddFolder\1.txt
В случае 2 : C:\MyFolder\1.txt
В случае 3 : C:\ProgramFolder\MyFolder\1.txt
В случае 4 : C:\ProgramFolder\1.txt

5. File[n] - Необходимые приложению файлы.
В название входит полный путь, указываются
на сетевом диске

6. AdditionalRun[n] - Файлы которые будут запущены до запуска
основного приложения. Указываются на
локальном диске.

7. NotUpdate[n] - Файлы которые не будут обновлятся.
Обновление таких файлов произойдет только в
случае их отсутствия у пользователя : при
инсталляции либо при случайном удалении.
(Данный параметр может быть применен
для запрещения обновления ini файлов,
в которых хранятся локальные настройки
пользователя. При установке файлы будут
скопированы, но при изменении их содержимого
они не обновятся). Файлы указываются
на сетевом диске.

8. User[n] - Пользователи у которых будут запущены
приложения указанные в списке AdditionalRun.
Указываются сетевые имена NNetWare.

9. RegKey[n] - Запись строковых параметров в реестр. Фомат параметра:
RegKey1=UserName*RegPath@Key1=Value1%Key2=Value2....

Там где названия параметров оканчиваются на [n] имеется в виду,
что за именем параметра могут стоять еще какие-либо символы.
Например для параметров File[n] возможно написать так:
File1, File2, File3 ...
или
FileMainExecutable, FileDocumentation, FileINI ...


 
ZeroDivide ©   (2003-11-04 11:07) [7]

Ну и еще потом дописал несколько фич, таких как обновление по FTP и прочую фигню.
Совет: не сравнивай версию по версии экзешника, лучше сравнивать по времени создания, 100% хоть один раз придеться сделать откат к предыдущей версии.

Это приложение при старте соединяется с удаленным сервером и отправляет ему версию exe с локальной машины - Сильно загрузит сеть!!!

Через мейлслоты рассылается соотвествующее сообщение для приложения
Приложение которое его поймает, выдает окно для юзера, что через минуту приложение будет закрыто, т.е у юзера есть минута, чтобы сохранить данные.
- Ага и все приложения, должны уметь ловить его? :)
В моем случае юзер просто перезапустит прогу (с моего ярлычка), если ему нужны изменения.


 
xGhost ©   (2003-11-04 12:09) [8]

> ZeroDivide

Это всё понятно , но проблема в том что доступа по сети может и не быть :(
Понятное дело что придёться использовать компоненты TCP/IP
но это уже как то не так :( возможно есть уже какой нибудь компонент для обновления ? видел для обновления через интернет , а по сети не видел :(


 
Vlad Oshin ©   (2003-11-04 12:14) [9]


> Я сделал еще одно приложение, которое сначала проверает
> наличие обновлений, если надо скачивает их, а уж потом запускает
> основную программу. Это приложение при старте соединяется
> с удаленным сервером и отправляет ему версию exe с локальной
> машины. Сервер сравнивает версии + ЕСТЬ ЛИ РАЗРЕШЕНИЕ + и высылает новый exe-шник


 
Vlad Oshin ©   (2003-11-04 12:15) [10]


> xGhost © (04.11.03 12:09) [8]

а разница?


 
xGhost ©   (2003-11-04 12:40) [11]

> Vlad Oshin

Я имею ввиду что у меня 170 машин и на всех win 2000 с правами разных пользователей ! я точно не знаю какие пользователи , и по этому не могу открыть доступ к каталогу с обновлением всем ! :(


 
Vlad Oshin ©   (2003-11-04 12:58) [12]


> xGhost © (04.11.03 12:40) [11]

ну тогда не файл-серверная система должна быть


 
ZeroDivide ©   (2003-11-04 13:15) [13]

Обновление программы по сети
Это всё понятно , но проблема в том что доступа по сети может и не быть :(


Чтото не стыкуется здесь!

Понятное дело что придёться использовать компоненты TCP/IP
Зачем?!?!!?? Просто расшарить директорию в сети и все.


 
xGhost ©   (2003-11-04 13:46) [14]

Спасибо всем , буду пробывать TCP\IP

> ZeroDivide
на счёт последнего высказывания : (04.11.03 12:40)

Спасибо ещё раз всем !



Страницы: 1 вся ветка

Текущий архив: 2004.01.05;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.03 c
3-11807
Vera
2003-12-08 07:22
2004.01.05
FIBQuery и Dbgrid


4-12204
X-Disa
2003-11-04 15:23
2004.01.05
Окна


1-11977
selena
2003-12-19 08:53
2004.01.05
Найти файл


1-11932
DR
2003-12-20 14:19
2004.01.05
Как отрисовать НЕВИДИМЫЙ TreeView на канвасе др. объекта?


1-11972
Andrey V.
2003-12-19 12:48
2004.01.05
Досовская задача в CreateProcess