Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
1-11941
AlexC
2003-12-19 20:49
2004.01.05
TComboBox


14-12092
SEREGON
2003-12-12 12:57
2004.01.05
Сеть


14-12055
Thor
2003-12-10 16:33
2004.01.05
ария Mon Amour


9-11764
Санжар
2003-06-15 13:15
2004.01.05
DelphiX


3-11829
Slym
2003-12-08 08:43
2004.01.05
Какие транзакции поддерживает MS Access 2002(XP)?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский