forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   PureBasic (http://forum.boolean.name/forumdisplay.php?f=90)
-   -   Auto Update (http://forum.boolean.name/showthread.php?t=15250)

L-ee-X 05.08.2011 23:36

Auto Update
 
Есть у кого нибудь мысль, как создать такую программу? :) С легка то я понимаю как сделать, но хотелось бы еще знатоков послушать!!!
Делать хочу для игры...
Вот хотелось бы услышать ваши предложения!!!

SBJoker 05.08.2011 23:43

Ответ: Auto Update
 
А в чём проблема вообще?

L-ee-X 06.08.2011 00:58

Ответ: Auto Update
 
Пытаюсь сообразить с чего начать ))

.Squid 06.08.2011 03:32

Ответ: Auto Update
 
С сервера?

Nerd 06.08.2011 18:20

Ответ: Auto Update
 
Цитата:

Сообщение от L-ee-X (Сообщение 198183)
Пытаюсь сообразить с чего начать ))

Начать нужно прежде всего с открытия IDE и пичатания в нём кода(или с открытия гугла), а не темы в Булевой стране.

L-ee-X 07.08.2011 03:31

Ответ: Auto Update
 
Цитата:

Сообщение от Nerd96 (Сообщение 198268)
Начать нужно прежде всего с открытия IDE и пичатания в нём кода(или с открытия гугла), а не темы в Булевой стране.

Шутка удалась, но думаю не всем понятна!!! Без тебя понимаю, что нужно открыть IDE и печатать в нем код..............

impersonalis 07.08.2011 11:56

Ответ: Auto Update
 
L1:
подключился к источнику обновления
получилось?
нет:{
это нормальная программа?
да: прекращаем попытку до следующего перезапуска или истечения времени goto Ln;
нет: бунтуем и требуем подать канал связи и необходимые права, после чего goto L1;
}
Запрашиваем у источника номер свежей версии.
Проверяем свой номер.
Если имеется более свежая версия:
ТИП_ПРОГРАММЫ:{
ИДИОТСКАЯ:
немедленно приступаем к скачиванию, что реализовано как открытие страницы сайта программы с ссылкой на свежую версию, инсталляция которой заключается в замене ряда файлов программы вручную.
КРИТИЧЕСКАЯ_СИСТЕМНАЯ:
немедленно приступаем к скачиванию, процесс непосредственной замены файлов автоматизирован и, если он потребует перезагрузки, предупреждает пользователя о необходимости перезагрузки.
АДЕКВАТНАЯ:
демонстрируем пользователю запрос на скачивание. В случае согласия - сливаем файлы по хттп (который ну уж точно разрешён на машине) с сайта новую версию. Меняем файлы или (если логика программы не позволяет) создаём специальную отметку (приватный конфиг программы, ключ командной строки, дополнительный файл), указывающи при следующем запуске программе, что надо изменить. Просим перезапуска
КОСТЫЛЬНАЯ:
Файлы сливаются в полуавтоматическом режиме (например, пользователь видит запрос IE [хотя пользуется FF]) и должен указать верный путь. После чего программа генерит жутковатый bat-файл, который должен будет пропатчить её при перезагрузке системы, но, вместо этого, будет забанен антивирусной системой.
ИЗ_ПРОШЛОГО:
Вся автоматизация заключается в открытии сайта программы (который уже может и переехал, а линк на старом отсутствует) в браузере после клика на опцию "проверить обновления"
}
Ln:

Reks888 07.08.2011 13:26

Ответ: Auto Update
 
Кроме того на цетере есть статья как сделать автоапдейтер на Blitz3d
http://blitzetc.blitzmax.ru

SBJoker 07.08.2011 13:36

Ответ: Auto Update
 
Однако для нормальной работы на Vista/7 нужно учитывать политику прав пользователей. Обычно приложение запущенное с обычными правами не имеет права писать в собственную папку.

.Squid 07.08.2011 14:26

Ответ: Auto Update
 
На геймдев.ру Аврелий как раз этим сейчас занят. В треде много хлама, но полезная инфа тоже есть.

L-ee-X 14.08.2011 01:56

Ответ: Auto Update
 
Возник вопрос!!! Не могу от сервера послать клиенту данные!!!
Сервер у меня в виде консольного приложения идет...
Вот код как все прописано!!!
Сервер:
PHP код:

Select NetworkServerEvent()
      Case 

        
      
Case 
        PrintN
("Client " "ID - " Str(EventClient()) + "   IP Adress:" IPString(GetClientIP(EventClient())))
        
ReceiveNetworkData(EventClient(), Buffer20000)
        
PrintN("Comand Server: " PeekS(Buffer))
        If 
PeekS(Buffer) = "VersionServer"
          
SendNetworkString(EventClient(), "Version Server")
        EndIf 
      Case 
3
       
      
Case 
        PrintN
("Client " "ID:" Str(EventClient()) + " Closed Server Version:"
    
EndSelect 

Клиент:
PHP код:

Procedure ConnectServerVersion()
  
ConnectionID OpenNetworkConnection("192.168.11.227",PortVersion)
  If 
ConnectionID
    
;StatusBarText(00"Клиент успешно подключен..."#PB_StatusBar_Center)
    
VersionConnected=1
  
Else
    
MessageRequester("Ошибка""Сервер обновлений не доступен!"#MB_OK|#MB_ICONINFORMATION)
  
EndIf
  
  If 
VersionConnected=1
    SendNetworkString
(ConnectionID,"VersionServer")
  EndIf
EndProcedure 

  Select Event 
    
Case #PB_Event_Gadget 
      
Select g_event
        
Case #Button_0
          
ConnectServerVersion()
          If 
VersionConnected=1
            Select NetworkClientEvent
(ConnectionID)
              Case 
0
              
Case 1
              ReceiveNetworkData
(ConnectionID,mem,20000)
              
MessageRequester("Сообщение"PeekS(mem), #MB_OK|#MB_ICONINFORMATION)
            
Case 2
          EndSelect 
          
EndIf
        Case 
#Button_1
         
        
Case #Button_2
          
      
EndSelect 
  EndSelect 

При нажатии кнопки в клиенте, он посылает данные серверу и сервер в ответ должен отослать клиенту текущую версию сервера... Но вот почему то клиент успешно отсылает данные серверу, а сервер клиенту почему то не отсылает... В чем проблема понять не могу!!!

L-ee-X 14.08.2011 13:07

Ответ: Auto Update
 
Всем спасибо, разобрался...
Не прописал переменную VersionConnected в Global's


Часовой пояс GMT +4, время: 14:04.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot