44 / 45 / 15
Регистрация: 11.08.2010
Сообщений: 226
|
|
1 | |
Автообновление программы10.11.2013, 02:21. Показов 5796. Ответов 31
Метки нет (Все метки)
Сделал апдейтер для программы, и сейчас вот дописываю поддержку обновления апдейтера. Проблема в финальной стадии, я не знаю как решить ее без стороннего простого приложения, которое при своем запуске поменять файлы местами и удалить некоторые из них. Сейчас я сделал так: в конце обновления новый файл именуется file_1.exe, далее запускается программа для замены файлов, а апдейтер закрывается. Программа для замены заменит file.exe на file_1.exe, и удалит последний. Вот как реализовать это без сторонней программы. В голову приходит только вынести функционал программы для замены в отдельный поток с задержкой, в майн потоке стартовать background поток, а саму программу закрывать.
0
|
10.11.2013, 02:21 | |
Ответы с готовыми решениями:
31
Автообновление программы Автообновление Автообновление службы ( сервиса ) Автообновление |
10.11.2013, 05:48 | 2 |
Да это нормальный вариант со сторонней программой.
А разве при закрытии программы этот самый поток не закроется вместе с программой? Нафига тебе этот гемор, со сторонней прогой тоже всё норм, главное, чтобы в ней не было косяков, так как у неё самая серьёзная роль - обновить апдейтер. Просто предусмотреть и протестить много ситуаций возможных. Я так делал.
0
|
2 / 2 / 1
Регистрация: 19.01.2013
Сообщений: 155
|
|
10.11.2013, 05:51 | 3 |
Я сделал все в одной программе. Она загружает обнову, скидывает на диск, запускает ее с параметрами, сама закрывается. Обнова же удаляет старый файл становится на его место
0
|
Master of Orion
|
|
10.11.2013, 11:51 | 4 |
Villain512, без сторонней программы - выгружать программу куда-нибудь и запускать её копию. Например нужно обновиться, копируем (или переносим экзешник в другую папку, например в папку обновления), после этого запускаем его оттуда. При запуске программы если она видит, что лежит в папке Update(или папке temp, как угодно), то вместо обычной работы начинает работу по перекопированию из папки Update всех файлов. Но все же лучше кидать прогу в temp под каким-нибудь рандомным именем. После этого папка Update удаляется и все. Другой вариант - если Update заменяет в том числе экзешник, то просто жамкаем на него и указываем путь к программе, он выполняет пункт №2 (то есть копирует все файлы, включая себя). А ваше намного проще делать так:
Обновление - это просто обычный установщик. Программа скачивает установщик, запускает его, указывая путь к себе, а сама в этот момент зарывается. Юзер кликает "далее->далее->готово". Установщик заменяет нужные файлы. ??????? PROFIT!
0
|
2 / 2 / 1
Регистрация: 19.01.2013
Сообщений: 155
|
|
10.11.2013, 11:56 | 5 |
Написал класс который все это автоматом делает, в мейне к примеру его вызываем, передаем аргументы и все, Правда от всех этих операций антивирусы начинают ругаться частенько, думают что червь.
0
|
2 / 2 / 1
Регистрация: 19.01.2013
Сообщений: 155
|
|
10.11.2013, 12:06 | 7 |
Да ну зачем, для меня это неудобно. Мне надо чтоб все на лету происходило, сам не люблю эти установщики и своим клиентам делать не стану
Добавлено через 4 минуты Наличие установщика должно быть оправдано, бесит же когда какая-нибудь маленькая программа, с 3-5 файлами корчит из себя серьезный софт и требует чтоб ее установили, вместо того чтобы просто запустить с рабочего стола или еще откуда когда надо, и быстро удалить когда перестала быть нужна . А если программа большая или с интеграцией типа вижуал студио и тд и тп, то да только в этом случае нужны установщики.
0
|
2 / 2 / 1
Регистрация: 19.01.2013
Сообщений: 155
|
|
10.11.2013, 12:23 | 9 |
А отдельный то зачем, если всего то достаточно вызывать метод из мейна?
0
|
324 / 307 / 59
Регистрация: 06.03.2013
Сообщений: 869
|
|
10.11.2013, 12:32 | 10 |
Villain512, тогда скачивай WebClient'ом новую версию, удаляй ехешник старой программы, заменяй скачанным, открывай новый ехешник каким-нибудь Process.Start, закрывай себя и будет щастье. можно прям одной функцией сделать.
0
|
2 / 2 / 1
Регистрация: 19.01.2013
Сообщений: 155
|
|
10.11.2013, 12:35 | 11 |
Да вы не мне помогайте а ТС, я все уже давным давно сделал и отладил
0
|
324 / 307 / 59
Регистрация: 06.03.2013
Сообщений: 869
|
|
10.11.2013, 12:37 | 12 |
если в программе много файлов, пихай их на сервере обновлений в архив, скачивай архив, распаковывай каким нибудь DotNetZipLib и перетаскивай на место старых в папку с программой.
я так думаю. Добавлено через 28 секунд Villain512, хех, не заметил, бывает).
0
|
2 / 2 / 1
Регистрация: 19.01.2013
Сообщений: 155
|
|
10.11.2013, 12:40 | 13 |
0
|
2 / 2 / 1
Регистрация: 19.01.2013
Сообщений: 155
|
|
10.11.2013, 12:55 | 15 |
0
|
2 / 2 / 1
Регистрация: 19.01.2013
Сообщений: 155
|
||||||
10.11.2013, 13:09 | 17 | |||||
1
|
2 / 2 / 1
Регистрация: 19.01.2013
Сообщений: 155
|
|
10.11.2013, 13:33 | 19 |
Смысле? у меня пашет все. Может отладчик мешает?
0
|
Master of Orion
|
|
10.11.2013, 13:49 | 20 |
0
|
10.11.2013, 13:49 | |
10.11.2013, 13:49 | |
Помогаю со студенческими работами здесь
20
Автообновление БД из DataSet Автообновление DataGridView Автообновление данных в Grid Некорректное автообновление datagrid Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |