Форум: "Сети";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
ВнизОбновление программы по сети Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.01 c