ПредишенСледващото

Не са такива въпроси като прилагането на автоматично актуализиране на програмата. Принципът е: потребителят стартира програмата, нашата програма работи и т.н. - ако версията на програмата, например 1.0. и вече е 1.1. програмата ще изтеглите новата версия и се рестартира програмата, в резултат на нова програма.

Както аз мисля: Сървърът е version.txt файл (Мисля, че можете, XML, и въпреки че ще бъде трудно да се справи). Нашата програма, когато тя започва, той проверява версията. Прочетете файл version.txt с помощта на C ++ (ако това е възможно, без да изтеглите файла) и я сравнете с текущата версия (обща променлива). Ако версиите са еднакви, ние продължаваме да работим по програмата. В противен случай - и има много възможности можем да предложим, за да изтеглите, може да направи. Аз ще се опитам да се принуди натоварване, т.е. непременно, всяка стара програма няма да работи. Изтеглете най-новата версия на програмата и го рестартирате.

Предложи възможностите. Може би в моя алгоритъм, има и недостатъци. Кажи ми най-доброто от вашия.

Послепис интересува само от алгоритъма, решението и предлагат фондове на воля.

Не се прави на най-правилното решение просто да ви кажа как се прави с мен. При стартиране на програмата на всеки 4 дни (обикновено няма смисъл, аз не пусне нови версии толкова често) на заден план нишка тече проверка за актуализация (потребителят може ръчно стартиране).

На сървъра, са тези, аз открих.

Програмата се отнася до сървъра към специален скрипт, според неговата версия, името на компонента (имам няколко компонента, които се актуализират отделно), а сценарият се връща на правилния XML. TimeStamp е сравнение на местната версия на файла и програмата показва на потребителя подканени да актуализирате описанието на промени в новата версия.

Ако потребителят се съгласява, програмата ще се рестартира с правата на администратора и изтегля файл от определен DownloadUrl. Проверява md5 хеш на компресирания файл и разопаковате архива във временна папка. Вътре в архива има и друг XML файл, където е посочено, в кои папки да се разпръснат файлове. Преди презаписване EXE и DLL файлове са преименувани на * .old. След това програмата стартира нова версия със специален ключ, за да може да направи нищо повече действия (обикновено не е необходимо да бъде обслужен).

Някои компоненти (без съдържание на EXE файлове) тихо обновяват без знанието на потребителя.

В моят подход има недостатъци, когато деинсталирате програмата за инсталиране (InnoSetup), нови файлове, които са инсталирани с помощта на автоматично обновяване, няма да бъдат изтрити.

Въпреки, че най-вероятно се актуализира Търсейки е правилно да свалите програмата и да го инсталирате в тих начин, но аз съм твърде мързеливи, за да ремонтирам. Харесва ми да правя актуализация в браузърите (Google Chrome и т.н.), на самата програма се актуализира, и потребителят дори не забелязва. Но в името на тази програма е инсталирана в дома папка на потребителя, а не в Program Files. И, ако не се лъжа, в Google частичното обновяване, т.е. вместо двоични огромни 100 МБ изтеглен малко разл.

Но да се откаже от вградения в системата актуализация, аз не виждам смисъл, моята програма (Снимка Uploader), трябва да се актуализира често подкрепа за провеждане на тази промяна често, тя е жизнена необходимост. Актуализация хостинг тежи около 50 KB, и програмата 5 MB.

Послепис Забрани на потребителите да използват по-стари версии на програмата - това е глупаво. Опитвам се да се поддържа обратна съвместимост с по-стари версии на разумен срок.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!