Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Возможно ли выпускать обновления к программе созданной в NB ? Например: Прога опрашивает определенный ресурс и при наличии обновления, сама себя обновляет...
Вот те простенький пример в прищепке там всё разжевал! Его можно немного улучшить думай сам
так и ещё в архиве ещё исходник проверялка подключения к инету, но на семерке что то при отключение не показывает статус offline делал ещё когда на xp сидел.
ты короче подумай логическим путем, что в принципе нужно сделать для реализации грамотной системы обновления программы, и делай. 0. Доступность сети. 1. Проверка есть/нет обновления, получение инфы об обновлении. 2. Скачивание обновления 3. Распаковка/замена файлов приложения 4. Рестарт если нужен все основные моменты легко реализуемы, что неясно конкретно спросишь, давать разжеваные рабочие решения смысла нет, т.к. у тебя своя специфика приложения. да, и задавай вопросы поконкретнее, а то давать ответ на столь обширную тему сложно, рискуешь получить столь же расплывчатый ответ как и сам вопрос, видишь скока буков писать пришлось и все зря, лишь для того чтобы простимулировать тебя подумать самому. Как задавать вопросы
А как устанавливать обновление? в каком формате сохранять?и вообще надо же что-то остовлять без комплектации чтобы это обновлялось.я вообще не разбераюсь в программирование но нб вроде штука ни чего,разясните про обновления.пожалуйсто
ну а что тут разьяснять? твое приложение представляет из себя файл или набор файлов, которые ты рапространяешь. ты решил что-то исправить или добавить в приложение, сделал новые файлы, запаковал их в zip-архив и положил их куда-нибудь в сети. нужно теперь чтобы приложение поняло что есть новые файлы, скачало и распаковало архив и заменило свои старые файлы на новые. Как задавать вопросы
novichok, я кажется понял что ты хочешь, в таком случае как делают большие компании иметь второй exe (ну как бы Update.exe) он то и будет заниматься обновлениями. Допустим у тебя в одной папке Proga.exe и Update.exe Вот прога твоя работает, всё нормально, и там у тебя допустим кнопочка: "Проверить обновления" при нажатии на эту кнопочку запускается Update.exe а главное приложение закрывается, Update.exe начинает проверять доступна ли новая версия, если да, то штатными средствами начинается закачка как бы в PubDir с заменой устаревшей версии. После этого Update.exe закрывается и открывается уже новая версия твоей программы. Но я считаю что игра не стоит свеч и можно просто сделать проверку на наличие новой версии, и предложить пользователю перейти на страницу загрузки. Но если всё таки ты решишь помучаться то используй такие команды как:
DownloadFile InternetFileExists Run
Оператор If
И самое главное изучай хелп! Если ты не в курсе то есть Русская версия
Там всё прелестно описано про каждую команду... Ты хоть начни что то делать, ну как бы предоставь нам исходники, что получается что нет, мы и поможем, а так с нуля тебе делать это не серъёзно...
Сообщение отредактировано Dordex - Сб, 28 Августа 2010, 13:02
Я бы делал так : в таймер вставил код проверяющий дату создания файла ( такая возможность есть благодаря DEMBELю ) например http://www.твой_сайт.ру/доступность_обновлений.тхт и сравнивающий с датой записанной в конфиг.ини , если даты не совпадают то предложит запустить программу как порекомендовал Dordex, Update.exe которая сначала завершит процесс основной программы , затем закачает список файлов и по нему позакачивает файлы ( просто список файлов лучше тем что можно обновлять не только программу но и звуки,картинки и т.п. ) , затем запустит после завершения всех закачек основную программу
Есть продвинутый вариант, имеющий определенные преимущества о котором я уже рассказывал. Качать маленький информационный файл с помощью InternetGet (в этом случае содержимое файла сразу попадет в переменную) или как обычный файл DownloadFile, который потом читать, где все уже будет расписано - версия, пути скачивания, сведения об обновлении и пр. Содержимое файла можно организовать таким образом, чтобы его легко можно было разобрать на части (напр. писать данные через разделитель, чтобы отдельно вытаскивать и сравнивать версию). Естественно, с обновлением проги обновлять и файл. Этот метод можно скомбинировать с вышеуказанной проверкой даты такого информационного файла. А обновления всеже лучше качать zip-архивом, т.к. файлы exe зачастую блокируются либо сайтом либо антивирусом, о других заморочках см. тему по ссылке выше. Распаковывается архив с помощью внедренного в update.exe консольного архиватора 7zip с параметрами 7zip e archive.zip -aoa - это переписывание файлов без подтверждений, либо помницца где-то валялся бесплатный плагин с функциями zip-архива. Но я бы использовал 7zip в его формате 7z, он и жмет получше. Как задавать вопросы
Дата: Вт, 28 Сентября 2010, 22:19 | Сообщение # 12
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
Restarter В процессе обновления программы зачастую требуется сделать перезапуск проекта после обновления, а именно следующие операции: - скачать (заранее) новую версию программы во временный файл (project.tmp) - закрыть текущее окно программы (project.exe) - старый исполняемый файл проекта заменить новым, для этого удалить старый а на его место скопировать новый, соответственно переименовав временный файл (project.tmp->project.exe) - запустить новую версию проекта
Сделать это из самого проекта без применения сторонних вспомогательных "апдейтеров" нельзя, приложению для перезапуска нужно убить собственный процесс, и сделать так чтобы он потом вновь запустился без "внешнего воздействия" сложно (но возможно). Так вот я состряпал маленький скрипт который сделает всю эту работу:
1. Убивает процесс старого приложения 1.1. Заменяет старый файл приложения на заранее скачанный новый 2. Запускает приложение заново по тому же пути
Скрипт имеет маленький (да в общем и не имеет) размер и криптованное содержимое, его легко можно прикрепить к проекту и вызвать после окончания процесса скачивания (распаковки) обновлений (которое организуется силами самого проекта) для его перезапуска. После окончания работы скрипт самоуничтожается и не оставляет других следов, ненужные файлы удаляются. Теперь нет нужды таскать отдельный проект updater.
Синтаксис:
Restarter.vbe"Процесс" "Путь", где:
"Процесс" - имя процесса приложения, например notepad.exe "Путь" - если требуется заменить файл приложения новым, указать полный путь к этому файлу
Restarter.vbe "myproject.exe" - простой рестарт приложения Restarter.vbe "myproject.exe" "c:\full path\newfile.tmp" - заменить файл приложения на заданный, затем рестарт
Если заданы несуществующие параметры, то ничего сделано не будет. Потестируйте эту штуку, будьте осторожнее при этом, случайно не замените файл нужного процесса другим файлом (я вот себе случайно notepad.exe заменил каким-то текстовым файлом) :))
P.S: юзеров ммбилдера все это тоже касается, пользуйтесь можно потом засунуть это к нам в раздел ммб куда-нибудь, только потестите сперва
Дата: Ср, 29 Сентября 2010, 00:24 | Сообщение # 13
Генератор идей
Модераторы
Сообщений: 3173
Offline
Quote (DEMBEL)
Потестируйте эту штуку
DEMBEL, клевая фишка! Только я не понял, как применять/тестировать эту функцию. Поместить как обычно в папку функций? Поместил, но при попытке вставить функцию в код командой Call не появляется окно ввода параметров... Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
Дата: Ср, 29 Сентября 2010, 10:08 | Сообщение # 14
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
нет это не функция а обычный скрипт, запускать как программу с параметрами, через Run, например: ExtractFile "[Embedded]Restarter.vbe" "[TempDir]Restarter.vbe" Run "[TempDir]Restarter.vbe" "[#34]myproject.exe[#34] [#34][PubDir]project.tmp[#34]" "Normal" "" "" ну или в командной строке запускать
Добавлено (29 Сентябрь 2010, 07:41) --------------------------------------------- доделана обработка ошибок и демки. - Прикрепить в project1_0 файл скрипта - Скомпилировать оба проекта, переименовать project1_1.exe -> project1_1.tmp (сначала проверить в главном проекте все пути и имена которые будут использоваться при этом) - Запустить project1_0.exe и выбрать опции (имя главного проекта не имеет значения, проект сам получает свое имя через [CommandLine])
Возможные проблемы - проверить на проектах большого размера, обработка которых (переименование/удаление) будет требовать время.
Добавлено (29 Сентябрь 2010, 10:08) --------------------------------------------- Да, забыл уточнить - при компиляции снять галочку "Удалять временные файлы при закрытии приложения" если файл прикрепляется в проект. Иначе при закрытии процесса скрипт будет удален.
Дата: Ср, 29 Сентября 2010, 12:22 | Сообщение # 16
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
Quote (Alien)
хэшировать файл на сервере и у клиента
спасибо, а то никто бы не догадался так сделать. а если сервер чужой, программа чужая, или сервер не делает хэш... мы как раз этот случай рассматривали. а дата какбэ возвращается же независимо от сервера и его возможностей, насколько я в курсе...
Дата: Чт, 30 Сентября 2010, 00:27 | Сообщение # 17
Генератор идей
Модераторы
Сообщений: 3173
Offline
Quote (DEMBEL)
доделана обработка ошибок и демки.
Спасибо! Всё работает!!! (XP SP3). И рестарт делает и замену - на ура! Отличный и полезный скрипт для необукеров! В ящик с инструментами!!!
Quote (DEMBEL)
проверить на проектах большого размера
Проверил на проектах в 14 Мб ("заэмбэддил" в проект видеоролик). Время переименования/переоткрытия составило около 10 сек, на моей ретро-машине, что, я думаю, следует считать более чем приемлемым результатом! Нужно проверять на проектах еще большего размера? Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
Сообщение отредактировано Вадим - Чт, 30 Сентября 2010, 00:38
Дата: Чт, 30 Сентября 2010, 00:46 | Сообщение # 18
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
Quote (Вадим)
Нужно проверять на проектах еще большего размера?
ну можно. меня интересует отрабатывает ли нормально скрипт часть кода когда начинается процедура удаления с последующим переименованием и перезапуском. Он должен дожидаться окончания операций перед началом следующей, а не то споткнется и убьется раньше времени.
Ещё 1 способ проверки новой версии. Есть такая глобальная переменная, в которой записана текущая версия. Просто сверяем текущую версию с версией записанной где-либо на сайте (как вариант заливаем текстовый файл с номером новой версии в первой строке к себе на хостиг). Далее уже по обстоятельствам, но сообщение о наличии новой версии вывести легко и ненадо никаких MD5 и всяких мудреных систем проверки
Ещё 1 способ через встроенный браузер. Создается файл версия.хтмл и заливается на сайт/хостиг. В нем <a href="neobook: иф текущая_версия > [глобальная_переменная_версии_проекта] бла,бла,бла> Проверка обновлений</a>. Думаю опытные необукеры смогут сами развить тему, но опять же можно обойтись средствами НБ
Оба этот способа стары как мир, и напрашиваются сами-собой.
Quote (Format-X22)
и ненадо никаких MD5 и всяких мудреных систем проверки
MD5 (и проч. хэши) применяется не для проверки версии, а для идентификации файла, и к обновлению программ прямого отношения не имеет. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Цитата от (Alien) можно проверять контрольные суммы файлов
Честно говоря, только сейчас заметил предложение проверять контрольные суммы... Чушь несусветная!
Хотя бы уже потому, что для подсчета хэш-суммы файл нужно сначала скачать. Для проверки наличия обновления вполне достаточно прочесть нужную строчку (например, с номером версии) на нужной странице. Такое решение абсолютно прозрачно, и совершенно непонятно что тут можно ещё обсуждать.... А контрольная сумма, это как "контрольный выстрел".... На всякий случай...
Впрочем, каждый изголяется как может....
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться