Обновление программы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
BasiС
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 16.02.2006 (Чт) 23:34
Откуда: Koenigsberg

Обновление программы

Сообщение BasiС » 16.05.2006 (Вт) 18:06

Доброго времени суток, уважаемые Гуру! :)
Многие наверное сталкивались с необходимостью обновления исполняемого файла на удалённом компьютере. Допустим, были какие-то изменения, (например изменена строка) и мы скомпилировали новый .exe Т.е. у нас имеются 2 .exe до и после.
Теперь внимание, вопрос =)
Можно ли найти отличия в этих двух файлах (думаю можно), написать патч (:), который бы изменял в старом экзешнике только нужную часть? Если да, то можноли экзешник рассматривать как текстовый файл?
Цена вопроса: размер обновления. Одно дело отправить по почте весь экзешник, а другое - маленький патчик =))

Kiryusha
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 216
Зарегистрирован: 30.08.2005 (Вт) 10:56
Откуда: УР, Ижевск

Сообщение Kiryusha » 16.05.2006 (Вт) 18:15

Самый простой метод скомпилируй простые экзешники и проверь ;)
Судебно-медицинское вскрытие показало, что чукча умер в
результате судебно-медицинского вскрытия.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 16.05.2006 (Вт) 18:20

Ты в неправильном разрезе проблему рассматриваешь. Надо так: "Не выкачивать с сервера новый дистрибутив и переустанавливать программу, а утянуть только новую версию исполняемого файла".

Но вообще, это - задача инсталлятора, ибо если проект сложный и многокомпонентный, то при необходимости красиво сделать обновление, допустим, 3 DLL, 1 OCX и 2 EXE, которые были установлены в составе программного пакета, средствами своего собственного кода, ты по сути будешь дублировать функциональность инсталлятора. Оно тебе надо?

BasiС
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 16.02.2006 (Чт) 23:34
Откуда: Koenigsberg

Сообщение BasiС » 16.05.2006 (Вт) 18:39

Новая версия исполняемого файла весит около 300кб (уже ужатая) Кроме того, меняется только часть кода, используемые библиотечки и контролы остаются те-же. Поэтому вопрос остаётся открытым. =) Можно ли работать с exe как с тхт?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 16.05.2006 (Вт) 19:16

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

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 16.05.2006 (Вт) 19:18

Мало того, таких программ, как автоматический создатель патчей в сети пруд пруди...
А я все практикую лечение травами...

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 16.05.2006 (Вт) 19:43

BasiС писал(а):Новая версия исполняемого файла весит около 300кб (уже ужатая)

Мне кажется 300 кб размер достаточно малый, и вполне можно отправлять весь файл целиком. В данном контексте проблема носит скорее спортивный, чем практический характер.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 16.05.2006 (Вт) 19:52

Мне кажется 300 кб размер достаточно малый
А 30 по-меньше будет...
А я все практикую лечение травами...

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 16.05.2006 (Вт) 19:59

Я ж и говорю: чисто спортивный интерес :wink:
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 16.05.2006 (Вт) 20:05

Я ж и говорю: чисто спортивный интерес
Даже в наше время 300 кб иногда много. Все приятней качать 30 кб. Поэтому с тобой не соглашусь.
А я все практикую лечение травами...

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 16.05.2006 (Вт) 20:14

Ну не знаю. Наверное у нас разные критерии оценки объема. Я, например, админю комплекс инсталляция которого занимает ~30 МБ (пожата), а обновления от 1 до 10 МБ. Поэтому и сужу со своей колокольни.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

BasiС
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 16.02.2006 (Чт) 23:34
Откуда: Koenigsberg

Сообщение BasiС » 16.05.2006 (Вт) 23:09

Twister писал(а):Нет. Нужно рассматривать как бинарный.
Впринципе, ничего сложного в создании такого патча нет.

В принципе, я так и думал, просто хотел, чтобы сказали, что так можно сделать =)
Я так понимаю, что можно реализацию сделать так:
1. Открываем два экзешника для сравнения через Open filename For Binary As freefile
2. Прогоняем, находим отличия, фиксируем адреса для изменений и значения
3. Делаем патчик =) который будет открывать старый екзешник и менять данные на нужных адресах
4. Вуаля! :) все кричат ура и радуются :)

Ну и насчёт практичности. Имея доступ к интернету через gprs, ценишь каждый килобайт. Поверьте, разница между 300 и 30 кБ есть :D
Если я в чём неправ - поправьте :)

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 17.05.2006 (Ср) 7:06

Если я в чём неправ - поправьте
Вроде и алгоритм верный и рассуждения. :wink:
А я все практикую лечение травами...

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 17.05.2006 (Ср) 8:39

А программы для создания патчей уже отменили? Лично я такими раньше пользовалась, размер патча зависит от количества изменений. У меня получалось около 50-ти Кб для проги размером в метр. Кроме этого, подходит сие и для dll файлов (в общем для любых файлов), добавление новых файлов. Есть бесплатные. Глюков мной замеченно не было.....
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 17.05.2006 (Ср) 8:48

Oxygen писал(а):А программы для создания патчей уже отменили?
Twister писал(а):Мало того, таких программ, как автоматический создатель патчей в сети пруд пруди...
А я все практикую лечение травами...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 17.05.2006 (Ср) 9:00

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

Ну его нафиг такие заморочки - я лучше и по GPRS скачаю/выложу нормальный exe-шник.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

BasiС
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 16.02.2006 (Чт) 23:34
Откуда: Koenigsberg

Сообщение BasiС » 17.05.2006 (Ср) 9:10

В любом случае, чтобы быть уверенным в работе патчера, нужно его написать :)
Спасибо всем за участие :!:

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 17.05.2006 (Ср) 9:15

А толку от этих патчей - насколько я понимаю патчить нужно только определенную версию, то есть юзер обязан скачивать все версии патчей - не дай бог пропустить хоть одну.
Тут ты прав. Такие патч-мэйкеры подходят в основном для "производства" кряков...
А я все практикую лечение травами...

bayasaa
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 93
Зарегистрирован: 13.08.2005 (Сб) 11:57
Откуда: Mongolia

Сообщение bayasaa » 19.05.2006 (Пт) 7:13

Oxygen писал(а):А программы для создания патчей уже отменили? Лично я такими раньше пользовалась, размер патча зависит от количества изменений. У меня получалось около 50-ти Кб для проги размером в метр. Кроме этого, подходит сие и для dll файлов (в общем для любых файлов), добавление новых файлов. Есть бесплатные. Глюков мной замеченно не было.....

Где можно достать эту программу и как им пользоваться

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.05.2006 (Пт) 7:25

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 19.05.2006 (Пт) 7:33

Ищется по ключевому слову Patch Maker.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

DJScalpel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.12.2006 (Вт) 18:28
Откуда: Сами мы не местные, отстали от поезда

Сообщение DJScalpel » 17.09.2007 (Пн) 10:30

BasiС писал(а):
Twister писал(а):Нет. Нужно рассматривать как бинарный.
Впринципе, ничего сложного в создании такого патча нет.

В принципе, я так и думал, просто хотел, чтобы сказали, что так можно сделать =)
Я так понимаю, что можно реализацию сделать так:
1. Открываем два экзешника для сравнения через Open filename For Binary As freefile

я может чего то не допонял - ты предлагаешь по битно сравнить 2 экзешника - на сервере и на локальной машине. - как раз не вариант для эконома трафика.
я реализую это так -
программа открывает тхт файл на сервере с единственной записью - номер последней версии,
сравнивает с версией установленной на компе программы
если на сервере версия выше - то скачивает файл...

Private Sub Command1_Click()
Text1 = OpenURL("http://***.ru/product/версия.txt")
If Text1 > (App.Major & App.Minor & App.Revision) Then
MsgBox "доступно обновление. установить?", vbOKCancel
если да - то
...Скачиваем обновление
Else
MsgBox "У вас установлена последняя версия программы"
End If
End Sub

t116
Бывалый
Бывалый
 
Сообщения: 209
Зарегистрирован: 12.01.2007 (Пт) 12:11

Сообщение t116 » 17.09.2007 (Пн) 11:16

DJScalpel писал(а):я может чего то не допонял - ты предлагаешь по битно сравнить 2 экзешника - на сервере и на локальной машине. - как раз не вариант для эконома трафика.


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

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.09.2007 (Пн) 12:14

t116 писал(а):Что-бы не выкладывать на сервер новую версию программы во всем ее весе, а лишь dif-патч, содержащий в себе отличия между новой и старой версией.

Для программ на VB?
Для VB не стоит так делать. Для VB надо выкладывать exe-шник целиком. Если он получается очень большим, то распределить по библиотекам и ActiveX-компонентам.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 17.09.2007 (Пн) 13:09

alibek писал(а):Для VB не стоит так делать. Для VB надо выкладывать exe-шник целиком. Если он получается очень большим, то распределить по библиотекам и ActiveX-компонентам.


А еще есть такие штуки как upx, rar, 7z...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

DJScalpel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.12.2006 (Вт) 18:28
Откуда: Сами мы не местные, отстали от поезда

Сообщение DJScalpel » 17.09.2007 (Пн) 18:28

t116 писал(а):...Что-бы не выкладывать на сервер новую версию программы во всем ее весе, а лишь dif-патч, содержащий в себе отличия между новой и старой версией.


я конечно "чайник" по сравнению с туташными "гуру", но объясни - каким образом dif патч будет "весить" меньше, чем полноценный последний релиз твоей проги...???
кстати. alibek подсказал неплохое решение - " Для VB надо выкладывать exe-шник целиком. Если он получается очень большим, то распределить по библиотекам и ActiveX-компонентам."
в том же примере что я набросал - можно отобразить изменение не только версии самого экзешника, но и всех длл-ок итд
думаю, не проблема - выбрать из текстового файла пункты - какие компоненты необходимо обновить
например:
exe - 203
x.dll 201
y.mdb - 20.08.2007.....

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 17.09.2007 (Пн) 18:56

Тема обсуждалась уже раз сто.

Выкладываю на сервер маленький ini-файл. Утилита считывает из него строчки типа:

MSSTDFMT.DLL=0;6.1.82;119808;2004-2-23 00:00:00;1;{6B263850-900B-11D0-9484-00A0C91110ED};0.1.0


В которые прописаны все данные о файле, включая его его контрольную сумму. И сравнивает с имеющимся на локальной машине. При необходимости скачивает и регистрит. Утилита одна на все программы. Ini-шка создается ей-же. Все.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 17.09.2007 (Пн) 18:57

Факт - ни одна из изветсных мне систем обновления(ни виндовская, ни раскрученная симантековская, ни другие проги известных производителей) не крамсает файлы(типа изменились байты с пятого по десятый), а обновляет их целиком. Есть ли причины?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 17.09.2007 (Пн) 19:35

1) Влом качать кучу мини патчей/делать патч с каждой персии на новую
2) Не всегда возможно составить корректный патч(файлы слишком отличаются), особенно, если применена упаковка.
Изображение

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 26.06.2008 (Чт) 9:54

нууу ... решение можно скомбинировать :)

например страницу на сайте не в htm, а php\asp чтобы данные сразу с базы тянулись:)

и 50 версий дополнений:) типа так:
Код: Выделить всё
Select case {версия клиента}
  case "1.0.1": 'Ставим патч 1
  case "1.0.2": 'Ставим патч 2
  case "1.0.3": 'Ставим патч 3
  case "1.0.4": 'Ставим патч 4
  ...
  else:
    msgbox "левое ПО"
End select
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 44

    TopList