+ Ответить в теме
Показано с 1 по 5 из 5
  1. #1
    Аватар для DDosTeam DDosTeam На пути к лучшему Путешественник
    Сообщений
    368
    Поблагодарили 23 раз(а) в 17 сообщениях

    Updater (Автообновление запущенной программы)

    Наткнулся на тему (тык тык) когда понадобилось автообновление, но изобретать велосипед не хотелось. В итоге пришлось переделать под себя так сказать, может из-за особенностей оси сервера, а может с того времени этот недочёт пофиксили в осях, но переименовать работающую программу у меня не получилось.
    Взяв участки готового кода сделал апдейтер.

    Принцип работы: При запуске Вашей программы - идёт проверка версии, если текущая версия < указанной на сайте, программа запускает апдейтер и закрывается. Апдейтер, обновив все файлы - закрывается и запускает Вашу программу.

    Разбор файлов в архиве:
    data.php->файл конфигурации для апдейтера.
    PHP код:
    <?php
    $url
    ['server']='http://mysite.ru/update/'//Сервер обновления
    $url['update']='update.txt'// файл на сервере обновления со списком файлов и актуальной версией.
    $url['ver']='ver.txt'//файл в папке с апдейтером, в нём указана текущая версия программы
    $url['start']='myprog.exe'//Название программы которую следует запустить после обновления (местоположение относительно папки с апдейтером)
    ?>
    php5ts.dll->Нет смысла объяснять что это.
    ver.txt->Файл с версией программы у пользователя.
    update.exe->Наш апдейтер.

    Пример кода встраиваемого в вашу программу:
    PHP код:
    $updater="update.exe";
    if(
    file_exists('./data.php')){
    include(
    './data.php');
    }
    global 
    $load_cfg$skey;
    $updat='0';
    $new_ver='';
    $err='0';
    $reload=0;
    $sms='';
    $ver='';
    $new_ver='';
    $data=array();
    if (
    file_exists($url['ver'])){
    $ver=file_get_contents($url['ver']);
    }
    $lines=file($url['server'].$url['update'].'?ver='.$ver);
    if (
    count($lines>0)){
    foreach(
    $lines as $line_num=>$line){
            
    $data_temp=explode('|',preg_replace("|[^a-z^0-9._,\|/]|","",$line));
            
    $data[$data_temp['0']][]=$data_temp;
        }
        if (isset(
    $data['ver']['0']['1']))$new_ver=$data['ver']['0']['1'];
        if (
    $ver<$new_ver){
                    
    Shell_Execute(0,'open',$updater,nil,nil,SW_SHOW);
                    
    c("trayIcon1")->iconVisible='false';
                    
    app::close();
                    }
                } 
    Пример файла update.txt на сервере обновления:
    PHP код:
    ver|0.02
    file
    |myprog|txt||./|myprog|exe
    file
    |anticheat|txt||./|anticheat|dll 
    Разбор файла update.txt:
    ver|0.02 -актуальная версия программы.
    file - обновить файл | myprog - название на сервере | txt - формат файла на сервере ||./ - директория куда загружать файл относительно папки с апдейтером | myprog - как будет называться этот файл у пользователя | exe - формат файла с которым файл появится у пользователя.

    Вроде бы всё подробно разжевал.
    Хостинг для файлов использовал Hostiman.


    Последний раз редактировалось DDosTeam; 03.11.2017 в 15:37.
    ^^ kak zhe grustno gospodi eb tvoyu mat'
    Скрытый текст:
    А ваш минет одна халтура...
    Нет ни задора ни огня...
    Вам будет стыдно и придется
    Всё пересасывать потом.


  2. #2
    Аватар для PiEy PiEy Очень опасный тип PiEy Очень опасный тип PiEy Очень опасный тип Завсегдатый
    Сообщений
    269
    Поблагодарили 27 раз(а) в 27 сообщениях
    не позорься, удали, когда можно xml юзать

    simplexml

  3. #3
    Аватар для DDosTeam DDosTeam На пути к лучшему Путешественник
    Сообщений
    368
    Поблагодарили 23 раз(а) в 17 сообщениях
    Цитата Сообщение от PiEy Посмотреть сообщение
    не позорься, удали, когда можно xml юзать

    simplexml
    Мальчик, иди мимо. Кому надо - молча возьмут и пойдут дальше.
    ^^ kak zhe grustno gospodi eb tvoyu mat'
    Скрытый текст:
    А ваш минет одна халтура...
    Нет ни задора ни огня...
    Вам будет стыдно и придется
    Всё пересасывать потом.


  4. #4
    Аватар для PiEy PiEy Очень опасный тип PiEy Очень опасный тип PiEy Очень опасный тип Завсегдатый
    Сообщений
    269
    Поблагодарили 27 раз(а) в 27 сообщениях
    Цитата Сообщение от DDosTeam Посмотреть сообщение
    Мальчик, иди мимо. Кому надо - молча возьмут и пойдут дальше.
    Я тебе уже не мальчик, ты мне ещё в пупок дышишь....

    Когда можно намного проще

    update.xml

    Код HTML:
    <?xml encoding="UTF-8">
    <updater>
          <update>
                <v>1.1</v>
                <file><ext>dat</ext><name>its</name><size>3000<!-- BYTES --></size><path>download/update/its.dat</path></file>
          </update>
    </updater>
    PHP код:
    $v 1.0;
    $update simplexml_load_file("http://example.com/update.xml");
    if (
    $update->update->$v) {
       if (
    extension_loaded("curl")) {
          
    $ch curl_init($update->update->file->path);
          
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
          
    curl_setopt($chCURLOPT_BINARYTRANSFERtrue);
          
    $file_sh curl_exec($ch);
          
    curl_close($ch);
          if(
    strlen($file_sh) == $update->update->file->size) {
                
    file_p_contents("{$update->update->file->name}.{$update->update->file->ext}"$file_sh);
          } else {
             
    error_message("Ошибка обновления, попробуйте обновить позже.");
          }
       }

    Указывайте точный размер файла, ибо неправильно всё будет выглядеть) Так-же можно добавить хешифрование
    Последний раз редактировалось PiEy; 04.11.2017 в 05:41.

  5. #5
    Аватар для DDosTeam DDosTeam На пути к лучшему Путешественник
    Сообщений
    368
    Поблагодарили 23 раз(а) в 17 сообщениях
    Цитата Сообщение от PiEy Посмотреть сообщение
    Я тебе уже не мальчик, ты мне ещё в пупок дышишь....

    Когда можно намного проще

    update.xml

    Код HTML:
    <?xml encoding="UTF-8">
    <updater>
          <update>
                <v>1.1</v>
                <file><ext>dat</ext><name>its</name><size>3000<!-- BYTES --></size><path>download/update/its.dat</path></file>
          </update>
    </updater>
    PHP код:
    $v 1.0;
    $update simplexml_load_file("http://example.com/update.xml");
    if (
    $update->update->$v) {
       if (
    extension_loaded("curl")) {
          
    $ch curl_init($update->update->file->path);
          
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
          
    curl_setopt($chCURLOPT_BINARYTRANSFERtrue);
          
    $file_sh curl_exec($ch);
          
    curl_close($ch);
          if(
    strlen($file_sh) == $update->update->file->size) {
                
    file_p_contents("{$update->update->file->name}.{$update->update->file->ext}"$file_sh);
          } else {
             
    error_message("Ошибка обновления, попробуйте обновить позже.");
          }
       }

    Указывайте точный размер файла, ибо неправильно всё будет выглядеть) Так-же можно добавить хешифрование
    Ой иди уже а..
    ^^ kak zhe grustno gospodi eb tvoyu mat'
    Скрытый текст:
    А ваш минет одна халтура...
    Нет ни задора ни огня...
    Вам будет стыдно и придется
    Всё пересасывать потом.


Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения