C# NET помогите автообновление программы сделать

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by chaby, 14 Oct 2011.

  1. chaby

    chaby Banned

    Joined:
    27 Jul 2010
    Messages:
    5
    Likes Received:
    1
    Reputations:
    -5
    C# NET помогите автообновление программы сделать
    http://www.denov.ru/?p=251
    можно даже по этой статьи только
    вырезать разархивацию а рассказать что куда и как
    100р

    icq 578312137
     
    1 person likes this.
  2. inCode

    inCode Member

    Joined:
    20 Jun 2011
    Messages:
    141
    Likes Received:
    22
    Reputations:
    5
    ну показывай код, что у тебя не работает,пальцем в небо тыкать никто не будет.
    По элементарной логике делаешь основной ехешник программы, который на инициализации чекает версию на сервере с версией на клиенте. Если не совпадает запускается отдельный ехе апдейтер.
    Апдейтер клозает процесс 1-ой программы. И выполняет загрузку с сервера новой ехешки.

    Пример довольно простой и хорошо разкоментирован, если хотя бы, что-то умеешь писать без проблем можно разобраться.

    Но, что-то у меня вызывает подозрение, что: "напишите мне, а я заплачу 100р" Если да, то это печально, если нет, то сори:)
     
    #2 inCode, 14 Oct 2011
    Last edited: 14 Oct 2011
  3. chaby

    chaby Banned

    Joined:
    27 Jul 2010
    Messages:
    5
    Likes Received:
    1
    Reputations:
    -5
    а ты ведь прав я просто поленился подумать)



    одно не пойму где указать версию программы в тхт я понял а в самой программе где



    string version = Assembly.GetExecutingAssembly().GetName().Version. ToString();
    не могу понять где версию программы писать



    ошибка
    http://www.keep2.me/files/ecd1ae0220be8a15fdfb1eea341d9996/20.29.20-14.10-927x407.jpg



    понял что он пытается перезаписать мой exe как раз когда через него качаю
    как исправить
     
    #3 chaby, 14 Oct 2011
    Last edited by a moderator: 14 Oct 2011
  4. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    тебе нужно сделать адейтер - отдельным процессом
    т.е. твоя основная программа запускает адейтер,
    который после запуска убивает основную программу,
    скачивает обновление и запускает основную программу.
    после чего сам завершается
     
    #4 xophet, 14 Oct 2011
    Last edited: 14 Oct 2011
  5. chaby

    chaby Banned

    Joined:
    27 Jul 2010
    Messages:
    5
    Likes Received:
    1
    Reputations:
    -5
    сказал человек школьнику)
    125дам кто предоставит готовое решение по принципу xophet
     
  6. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    276
    Likes Received:
    282
    Reputations:
    2
    зачем отдельный процесс? я делаю в основном всё :)
    а версию храни в константе, и при создании (компилировании) новой версии просто изменяй её на нужную.
     
    1 person likes this.
  7. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    А как, а как? :)
     
  8. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    276
    Likes Received:
    282
    Reputations:
    2
    ну, проверяю версию, и если есть новая - гружу, запускаю новую и завершаю работу старой. если нет - запускаю форму и далее по списку.
    но да, в этого метода есть существенный недостаток: названия версий НЕ должны быть одинаковыми, в противном случае нечего не выйдет. зато ненужно таскать с собой отдельный апдейтер. при желании, можно сделать нормально - но зачем? первая попавшаяся идея работает, и хер с ней :)
     
  9. marussia

    marussia New Member

    Joined:
    14 Feb 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Может погуглить на счёт ClickOnce
     
  10. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Только что идея в олову пришла, нужно будет как-нибудь попобовать реализовать. Апдейтер просто дописываем в конец Exe-шника рабочего. (круто если зархивировать)
    Провеили - есть апдейт.
    Извлекаем апдейтер, запускаем, убиваем главный процесс, качаем EXE новый, запускаем, а он при запуске убивает файл апдейтера.
     
  11. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    slesh давал интересный ответ на этот счет,поищи на форуме.
     
  12. chaby

    chaby Banned

    Joined:
    27 Jul 2010
    Messages:
    5
    Likes Received:
    1
    Reputations:
    -5
    мужики вроде делал всё как надо фишка
    он качает только свой же файл а не опдайтер а свой он скачать не может так как процесс уже занят. хз почему не качает апдейтер
     
  13. inCode

    inCode Member

    Joined:
    20 Jun 2011
    Messages:
    141
    Likes Received:
    22
    Reputations:
    5
    апдейтер должен идти отдельной программой, которая клозает основную программу, скачивает новую копию, и обновляет данные о версии программы, для проверочной функции в основной программе.
    код в студию...
     
  14. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Господи, это же настолько элементарно как сходит в туалет облегчится, что тут сложного то?
    Просто нужно немного подумать, и не ленится!
    1) Закачиваем на сайт файл version.txt, например url будет таким http://test.ru/version.txt, в котором будет находится номер последней версии сборки(версия сборки меняется в параметрах построения VS - "Сведения о сборке" )
    2)Закачиваем на этот же сайт последнею версию программы, например url будет http://test.ru/MySuperPuperProgramName.exe
    3)Создаем приложения, которое будет загружать обновления, например Update.exe
    4)В основной программе делаем код проверки - берем номер текущей сборки и сравниваем с тем что на сайте - если они разные - Application.Exit(); Process.Start("Update.exe");
    5)В Update.exe создаем темповый файл Path.GetTempFileName(); в котором и будет наша скаченная программа, с помощью например WebClient скачиваем файл, в темповый файл, вешая на DownloadFileCompleted оброботчик который - и переименует наш темповый файл в файл с именем и путем программы
    Все.
     
  15. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    хм, можно добавить параметр командной строки, по которому будет переименовываться файл. т.е. в самой программе реализовать проверку и скачивание, потом запустить скачанный файл с ключем например /ren через process.start() и завершить собственный процесс. программа(скачанная), проанализировав ключ удалит старую программу, а себя переименует в ее имя.
     
Loading...
Similar Threads - помогите автообновление программы
  1. Peja
    Replies:
    0
    Views:
    2,704