Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 20

Как делать Updater для программы

17.11.2011, 23:30. Показов 3621. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
люди я создал полезную софтинку хочу чтоб все кто пользуется данной софтинкой регулярно получали обновленную версию дайте плиз код uppdater'а и напишите коментарий (В коде) где нужно ввести ссылку
текст файла в котором указывается версия или если есть другой способ напишите прошу
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.11.2011, 23:30
Ответы с готовыми решениями:

Куда в коде программы вставить код для автообновления (updater)
Вообщем есть код для автообновления (updater) но что и как делаь в теме не расписано, мои познания в с# очень малы я знаю только консолки ...

Как делать программы для web?
Извиняйте если не туда написал. Я делаю сайты, недавно мне понадобилось приложение для сайта, точнее это не приложении, а отдельная...

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

6
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
17.11.2011, 23:41
Предполагаю что обновления будут скачиватся с сайта. Так?
Если да, то как таким образом там хранится информация о появлении новой версии? Он этого будет зависеть формат запроса текущей версии.
0
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 20
17.11.2011, 23:51  [ТС]
там будет храниться текстовый файл со сведениями о последней версии программы и самой последней версией программы я хочу чтоб прога запускалась с помощью updater'а и он писал есть ли новая версия и если есть предложил или запустить старую версию или скачать новую версию и пользоваться ей сможешь?

Добавлено через 6 минут
или может есть более лёгкий способ? я думаю что текстовик может храниться или на HTTP или на FTP
но мне кажется что лучше будет на HTTP
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
18.11.2011, 00:33
Один из вариантов.

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#UpdAddress = "http://mysite.ru/updatefile.txt" ; В этом файле хранится текущая версия и адрес скачивания.
#CurrentVersion = 1 ; Текущая версия программы.
 
Procedure DownloadToMem(URL.s, *lpRam, ramsize) ; Скачивание в память
  Protected agent.s, hInet, hData, Bytes 
  
  agent.s = "IE 8.0" 
  hInet = InternetOpen_( @agent.s,0,0,0,0 )  
  If hInet
    hData = InternetOpenUrl_( hInet, @URL.s, "", 0, $8000000, 0 )
    If hData
      If hData > 0 : InternetReadFile_(hData, *lpRam, ramsize, @Bytes ) : Else : Bytes = -1 : EndIf 
      InternetCloseHandle_(hData)
    EndIf
    InternetCloseHandle_(hInet) 
  EndIf
  
  ProcedureReturn Bytes
EndProcedure
 
InitNetwork()
 
Procedure GetUpdate()
  *memory = AllocateMemory(1000) ; Память под файл с данными обновления
  Bytes=DownloadToMem(#UpdAddress, *memory, 1000) ; Скачивания файла с данными обновления.
  
  If Bytes>0
    Info.s = PeekS(*memory, Bytes) ; Инфа из скачаного файла
    ReplaceString(Info, Chr(13), Chr(10), #PB_String_InPlace) ; Убираем символы перевода строки.
    Info = ReplaceString(Info, Chr(10)+Chr(10), Chr(10))
    Version = Val(StringField(Info, 1, Chr(10)))    ; Версия файла
    UpdateAddress.s = StringField(Info, 2, Chr(10)) ; Адрес скачивания этой версии файла
    If Version > #CurrentVersion And UpdateAddress<>""
      If MessageRequester("", "Доступна новая верся"+Chr(10)+"Скачать?", #MB_YESNO|#MB_ICONINFORMATION|#MB_DEFBUTTON2) = #IDYES
        If ReceiveHTTPFile(UpdateAddress, "Temp.exe") ; Скачивание файла обновления.
          MessageRequester("", "Обновление успешно скачалось.", #MB_OK)
        Else
          MessageRequester("", "Ошибка при скачивании.", #MB_OK|#MB_ICONERROR)
        EndIf
      EndIf
    EndIf
  Else
    MessageRequester("", "Нет доступа к файлу с данными обновлений.")
  EndIf
  
  FreeMemory(*memory)
  
EndProcedure
 
GetUpdate()

На сайте должен быть файл такого содержания.
Первая строка это текущая версия программы на сайте, а вторая, адрес скачивания обновления.
1
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 20
18.11.2011, 19:20  [ТС]
спасибо что дал код но я не понял как он работает и куда чё пихать я понял только то что на сайт нужно кинуть текстовик и саму прогу (обновлённую) но не понял куда это все кидать даже с пояснениями
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
18.11.2011, 19:40
Этот код нужно поместить в программу для которой будут скачиваться обновления.
Процедура GetUpdate() должна вызываться когда требуется проверить наличие новой версии, к примеру, при старте программы.
Если на сайте будет находится более новая версия программы (число в константе #CurrentVersion меньше чем число в первой строке файла updatefile.txt), то появится окно с сообщением что появилась новая версия. В нем будут кнопки "Да" и "Нет".
Если юзер нажмет на "Да", то выполнится строка
Code
1
If ReceiveHTTPFile(UpdateAddress, "Temp.exe") ; Скачивание файла обновления.
и файл с сайта скачается в одну папку с программой. Файлу будет присвоено имя "Temp.exe".
Если файл был успешно скачан, то можно заменить текущий.
Это делается элементарно просто, настолько, что даже неинтересно писать об этом. Скажу одну истину - да, запущенный файл Винда не дает стереть, но его можно переименовать( эта возможность с NT4, но не думаю, что кто то использует ОС более старую).
Для тебя думаю информации достаточно.
Для тех кто ещё не понял разжёвываю:
Мы считаем, что новый файл с тем же именем уже скачан во временную папку Винды к примеру, как это сделать понятно всем. Дальше код кнопки :
Code
1
2
3
4
5
6
7
8
If EventGadget = #Button_0 
        ; если обновление есть и оно скачалось, то 
          RenameFile(GetProgramName(), "progaold") 
          CopyFile(GetTemporaryDirectory()+"proga.exe", GetPathPart(ProgramFilename())+"proga.exe") 
          RunProgram(GetPathPart(ProgramFilename())+"proga.exe") 
          End 
           
       EndIf
Соответственно новая версия программы проверяет наличие файла "progaold" и если он есть, то его спокойно удаляет. Или оставляет Юзеру для возможности откатиться до старой версии - это уж как пожелаете.
0
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 29
17.12.2013, 15:02
А можно поподробнее про переименование и тд. У меня процесс заканчивается на этапе переименовании в прогаолд
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.12.2013, 15:02
Помогаю со студенческими работами здесь

Прекращена работа программы Yandex updater (eu)
Доброго времени суток уважаемые форумчане. Прошу вашего совета. Постоянно при работе появляется вот такая ерунда - см. фото. Мешает...

Updater для Aion: разобратся с исходниками
Всем добрый вечер. Были у меня исходники одного updatera для Aion (mmorpg) Переделал их немножко и т.д И столкнулся с проблемой. ...

Как сделать распознавания текста в окне программы и делать эмуляцию нажатия клавиш
Помогите пожалуйста!

Как сделать распознавания текста в окне программы и делать эмуляцию нажатия клавиш
помогите!

Для Я. Директа делать отдельный сайт или можно на основном делать?
Для Я. Директа делать отдельный сайт или можно на основном делать? Хотим попробовать Директ, чтобы повысить продажи в нашем ИМ. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru