|
44 / 44 / 8
Регистрация: 11.04.2010
Сообщений: 139
|
||||||
Реализация "обновления программы"17.05.2010, 00:30. Показов 12359. Ответов 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# реализация динамического обновления данных
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Новая последнея моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|