![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обновление программы по сети [D6, Win2k]
xGhost © (2003-11-04 08:50:00)
Как сделать обновление программы по сети ? Делал так : давал всем клиентам команду чтобы они качали файл с расшареного диска а потом его запускали , но этот ариант не подходит так как существуют проблемы с доступом ( иногда некоторые компьюетры не имеют доступ по сети или файл занят другим процесом ) Если использовать стандартные компоненты то программа время от времени глючит ..
Если ли у кого соображения на счёт данной проблемы ?
xGhost (2003-11-04 13:46:00) [1]
Спасибо всем , буду пробывать TCP\IP
> ZeroDivide
на счёт последнего высказывания : (04.11.03 12:40)
Спасибо ещё раз всем !
ZeroDivide (2003-11-04 13:15:00) [2]
Обновление программы по сети
Это всё понятно , но проблема в том что доступа по сети может и не быть :(
Чтото не стыкуется здесь!
Понятное дело что придёться использовать компоненты TCP/IP
Зачем?!?!!?? Просто расшарить директорию в сети и все.
Vlad Oshin (2003-11-04 12:58:00) [3]
> xGhost © (04.11.03 12:40) [11]
ну тогда не файл-серверная система должна быть
xGhost (2003-11-04 12:40:00) [4]
> Vlad Oshin
Я имею ввиду что у меня 170 машин и на всех win 2000 с правами разных пользователей ! я точно не знаю какие пользователи , и по этому не могу открыть доступ к каталогу с обновлением всем ! :(
Vlad Oshin (2003-11-04 12:15:00) [5]
> xGhost © (04.11.03 12:09) [8]
а разница?
Vlad Oshin (2003-11-04 12:14:00) [6]
> Я сделал еще одно приложение, которое сначала проверает
> наличие обновлений, если надо скачивает их, а уж потом запускает
> основную программу. Это приложение при старте соединяется
> с удаленным сервером и отправляет ему версию exe с локальной
> машины. Сервер сравнивает версии + ЕСТЬ ЛИ РАЗРЕШЕНИЕ+ и высылает новый exe-шник
xGhost (2003-11-04 12:09:00) [7]
> ZeroDivide
Это всё понятно , но проблема в том что доступа по сети может и не быть :(
Понятное дело что придёться использовать компоненты TCP/IP
но это уже как то не так :( возможно есть уже какой нибудь компонент для обновления ? видел для обновления через интернет , а по сети не видел :(
ZeroDivide (2003-11-04 11:07:00) [8]
Ну и еще потом дописал несколько фич, таких как обновление по FTP и прочую фигню.
Совет: не сравнивай версию по версии экзешника, лучше сравнивать по времени создания, 100% хоть один раз придеться сделать откат к предыдущей версии.
Это приложение при старте соединяется с удаленным сервером и отправляет ему версию exe с локальной машины- Сильно загрузит сеть!!!
Через мейлслоты рассылается соотвествующее сообщение для приложения
Приложение которое его поймает, выдает окно для юзера, что через минуту приложение будет закрыто, т.е у юзера есть минута, чтобы сохранить данные.- Ага и все приложения, должны уметь ловитьего? :)
В моем случае юзер просто перезапустит прогу (с моего ярлычка), если ему нужны изменения.
ZeroDivide (2003-11-04 10:57:00) [9]
Тоже решал эту задачу:
Написал прогу (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 ...
xghost (2003-11-04 09:38:00) [10]
>Илайдж
Спасибо за совет , но это не пойдёт к моей программе так как обновление не должно приченять юзеру неудобств ..
Илайдж (2003-11-04 09:28:00) [11]
Ну и соотвественно, юзера не качают ничего, они запускают все приложения с сервака, на которые собсно и льется обновление.
Илайдж (2003-11-04 09:27:00) [12]
Я недавно решал эту проблему.
Через мейлслоты рассылается соотвествующее сообщение для приложения
Приложение которое его поймает, выдает окно для юзера, что через минуту приложение будет закрыто, т.е у юзера есть минута, чтобы сохранить данные.
Организация очень проста - при запуске приложения генерится идентификатор сессии (просто строка на 30 рандомных символов)
и пишется в табличку на MSSQL вместе с именем машины, с которой запустили приложение.
Мейлслот имеет вид \\<PCNAME>\mailslot\<sessionID>
xGhost (2003-11-04 09:10:00) [13]
> kavlad
У меня немного другие запросы , нужно обновлять программы самому то есть не программа проверяет обновления а ты сам запускаешь обновление и программы всей сети должны обновиться !
2 проблемы
1) сеть большая ( до 170 компов ) и нужно чтобы обновление проходило как можно быстрей и на всех компьютерах (exe файл обновления весит не более 500 кб )
2) обновление должно проходить в скрытом режиме так как программа расчитана на работу в компьютерном клубе и она не должна отвлекать игроков от процеса игры или просмотра фильма ..
kavlad (2003-11-04 08:57:00) [14]
Я сделал еще одно приложение, которое сначала проверает наличие обновлений, если надо скачивает их, а уж потом запускает основную программу. Это приложение при старте соединяется с удаленным сервером и отправляет ему версию exe с локальной машины. Сервер сравнивает версии и высылает новый exe-шник.