|
44 / 44 / 8
Регистрация: 11.04.2010
Сообщений: 139
|
||||||
Реализация "обновления программы"17.05.2010, 00:30. Показов 12267. Ответов 29
Метки нет (Все метки)
Здравствуйте! И вот, опять, я прошу помощи у комьюнити. Что мы имеем:
Программу и файл "базы данных". С обновлением самой базы все предельно ясно и проблем не возникло. А вот как реализовать обновление самого исполняемого файла? Просто открыть браузер со ссылкой на новую версию, аля:
0
|
||||||
| 17.05.2010, 00:30 | |
|
Ответы с готовыми решениями:
29
Реализация авто-обновления программы Реализация обновления программы на терминальном сервере Реализация функции обновления |
|
85 / 77 / 13
Регистрация: 03.09.2009
Сообщений: 346
|
|
| 23.04.2011, 00:03 | |
|
r0fL, никогда не проверял, но мне всегда казалось, что при запущенной программе доступ к екзешнику занят.
В общем разобрался с манифестом. Для того, чтобы запустить программу с правами администратора нужно: 1. Добавить свой манифест в проект (Add New Item -> Application Manifest File) 2. В этом манифесте заменить строку "<requestedExecutionLevel level="asInvoker" uiAccess="false" />" на "<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />" 3. Указать в свойствах проекта, что нужно использовать этот созданный файл манифеста
0
|
|
|
Кодило
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
|
|
| 23.04.2011, 07:32 | |
|
SergBokh, я тоже думал, что занят, пока не занялся вопросом.
0
|
|
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
| 24.04.2011, 02:00 | |
|
Так и есть: если приложение запущено, то оно блокирует свой экзэшник.
Кстати, еще один вариант с обновлением: можно, чтоб апдейтер запускай файл не из диска, а читал исполняемый файл в массив байт и запускал приложение уже оттуда. Тогда он спокойной сможет заменять exe-файл программы.
0
|
|
|
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
|
|
| 24.04.2011, 09:29 | |
|
0
|
|
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
| 24.04.2011, 12:11 | |
|
Правду глаголите! Как плохой вариант, можно предупреждать пользователя и говорить, чтоб добавлял в исключения.
0
|
|
|
Кодило
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
|
||
| 24.04.2011, 17:15 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 7
|
|
| 01.12.2011, 11:01 | |
|
вы конечно все молодцы, но но покажите пример кода, дано обновить не только саму программу которую запустил, но и часть файлов, а какие файлы список будет лежать в определенном месте на сайте, там же и обновления, как это реализовать, покажите практический пример?
0
|
|
|
|
||||||||||||||||||||||
| 01.12.2011, 18:25 | ||||||||||||||||||||||
|
Я писал апдейтер для своей проги. Всё работает отлично.
Пишешь прогу апдейтер, в которой делаешь 2 окна. Первое окно это сам апдейтер, второе окно это окно создающее конфигурационный файл. Как по идее это должно работать: Создаёшь отдельную папку от проекта программы, которую будешь апдейтить (программу), кидаешь в созданную папку файлы, которые будут лежать потом на сервере и будут считаться самой последней версией файлов твоей программы. Далее кидаешь в эту папку апдейтер. В апдейтере пишешь (в коде апдейтера), что если передали какой-то аргумент командной строки, то запустить окно редактирования файла конфигурации. Далее у нас в папке находится апдейтер и все нужные для работы проги файлы. Создаёшь ярлык, называешь его _Make (прочерк, чтобы при сортировке файлов виндой этот файл был вверху или внизу (ну мож тебе не нравится сортировка по группам)) в пути к файлу (ярлыка) пишешь: "D:\\путь к проге\Release\Последняя версия на сервере\Updater.exe" make _make.lnk. Далее запускаешь через ярлык апдейтер, он получив параметр открывает окно настройки конфиг файла. Там будет список всех файлов в этой папке. И будет например TextBox для запускаемого файла. Перетаскиваешь с общего списка название эксешника, жмёшь кнопку "Создать конфигурационный файл". В итоге получается что-то типа этого: Пример конфиг файла
Слева это параметр, далее название файла, куча букв и цифр справа - хэш код. И у одного файла параметр указывающий что это главный запускаемый файл, далее хэш код. Всё заливаешь на сервер все файлы включая апдейтер и конфигурационный файл, который должен появиться в той же папке после нажатия на "Создать конфигурационный файл". Ярлык не нужно заливать. Далее у юзера запускается твоя прога. Она проверяет есть ли на сервере конфиг файл, короче пытается его скачать, если скачался, то парсит его и получает коллекцию например: UpdateFile.cs
Этот код парсит тот пример файла, что я выложил выше UpdateConfig.cs
Получение хэша файла: Hash.cs
Скачали конфиг файл (в память, не обязательно его сохранять на хард), распарсили, далее сравниваем файлы из коллекции. Если есть отличающиеся файлы, то запускаем апдейтер передав в него id процесса проги и завершаем работу проги, в апдейтере несколько секунд ждём завершение проги, если не завиршилась, то убиваем процесс по id (можно и не делать так). Запускается апдейтер, тоже парсит конфиг файл, получаем коллекцию файлов для апдейта. Для начала удаляем те , которые отмечены под удаление, потом сравниваем хэш с оставшимися, если совпал, то проверяем следующий, если не совпал, то качаем и сохраняем в папку под другим именем, когда удачно скачается то удаляем старый и переименовываем новый под название старого (оригинальное название файла). Так не распишешь всё, надо времени убить просто много и не факт что всё будет ясно. Ну думаю примерно хоть суть понятна. А апдейтер запускать надо с правами администратора, в манифесте правится (тут вроде писали что править надо). Качать файлы проще всего при помощи WebClient, наиболее полезные строки, думаю эти:
1
|
||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 7
|
|
| 01.12.2011, 18:49 | |
|
для новичка это конечно все сильно, а можно тупо просто пример, программа конектится на сайт читает текстовой файл update.txt и сравнивает цифры от туда и с локального, если на сервере цифра больше, иил локально нету файла update.txt начинается закачка всех файлов из папки к примеру: https://www.cyberforum.ru/update в локальную папку от куда запущено приложение, все в соответствии папка к папке с заменой без подтверждения, и в последную очередь закачивает файл update.txt , файлов в папке думаю будет не много, это конечно не самый лучший вариант, но думаю для меня понятный, пока не осилю все глубины профессионального программирования
![]() для загрузки самого start.exe думаю стоит загружать типо update.exe и после загрузки запустить его для загрузки и замены start.exe и снова запускать start.exe )) как-то так наверное.
0
|
|
|
|
|
| 01.12.2011, 19:06 | |
|
Ну вот ты сам и попробуй написать. Создай 2 проекта и начинай пробовать.
0
|
|
| 01.12.2011, 19:06 | |
|
Реализация автоматического обновления
Task Manager C# реализация динамического обновления данных
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово.
Решение:
Создан документ с единственным. . .
|
Сумма и количество положительных элементов в чётных строках массива
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить сумму и количество положительных элементов массива, расположенных в четных строках.
Решение:
Создан документ с. . .
|
Поиск произведения положительных чётных чисел в последовательности
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Дана произвольная последовательность целых чисел. Найти произведение положительных четных чисел данной последовательности.
. . .
|
Обработка трёх чисел: утроение и возведение в степень
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Даны три действительных числа. Утроить те из них, значения которых неотрицательны, и возвести в четвертую степень отрицательные.
. . .
|
|
Расчёт стоимости яблок по весу
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Написать программу вычисления стоимости некоторого количества (по весу) яблок.
Решение:
Создан документ, с табличной частью. . .
|
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни
1. Механизм отложенного высвобождения фосфора
Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ
Реализована разная скорость. . .
|
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2.
Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
|
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её.
Всё это стресс конечно. Почему?. . .
|