Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » вопрос по external и др

Страниц (21): « 1 2 3 [4] 5 6 7 8 9 ... » В конец
 

31. 007wan - 22 Августа, 2019 - 04:20:27 - перейти к сообщению
А что не так?
(Добавление)
Пользователь - это клиент, а фтп сервер - это сервер, которые отдает файлы.
32. Kibor - 22 Августа, 2019 - 04:42:34 - перейти к сообщению
Что не так?
Ну соберите exe, который собираетесь обновлять таким образом (С реальными логинами и паролями и доменами куда подключаетесь.), скиньте куда нибудь и дайте ссылку на него.
33. 007wan - 22 Августа, 2019 - 05:00:59 - перейти к сообщению
 Kibor пишет:
(С реальными логинами и паролями и доменами куда подключаетесь.)
Я не понимаю. Кто и как узнает пароли и логины реальные?
(Добавление)
Собрал и запустил
Код (Отобразить)
Всё нормально.
(Добавление)
Программа не будет обновляться, а будет просто скачана новая exe. А старая будет удалена в будуем сделаю.
34. ivantu - 22 Августа, 2019 - 05:03:22 - перейти к сообщению
 007wan пишет:
Я не понимаю. Кто и как узнает пароли и логины реальные?


Я писал вот по этому алгоритму, ничего сложного нету.
(для просмотра ссылки Вам необходимо авторизоваться)
35. 007wan - 22 Августа, 2019 - 05:04:28 - перейти к сообщению
[quote=ivantu]
 007wan пишет:
Я не понимаю. Кто и как узнает пароли и логины реальные?


Я писал вот по этому алгоритму, ничего сложного нету.
(для просмотра ссылки Вам необходимо авторизоваться) /quote]Да о чем вы! можно же просто скачать новую exe как я и писал выше сейчас.
36. ivantu - 22 Августа, 2019 - 05:05:42 - перейти к сообщению
Вы делаете автообновление, или проверку ключей, я что то запутался...
37. 007wan - 22 Августа, 2019 - 05:16:39 - перейти к сообщению
 ivantu пишет:
Вы делаете автообновление, или проверку ключей, я что то запутался...
Для начала я делаю проверку обновления, путём чтения текстового файла с сервера фтп(вводится пароль и логин и подключается). Потом же если версия новая на сервере в блокноте, то скачивает exe файл новой версии, а старую удаляет или не удаляет(Не знаю как поступить). И потом запускает.
38. ivantu - 22 Августа, 2019 - 05:18:03 - перейти к сообщению
автообновление, я давал ссылку выше, там вся суть расписана, нужно лиш использовать функции кибора.
(Добавление)
вот мой алгоритм:

этот код вставить в начало:

CODE:
string curVersion="2.0";
string versionRemote;
string temp_remote,temp_cur;

string ftp="****.zzz.com.ua"; // фтп, исправить на свой
string login="***"; // исправить на свой
string pass="****"; // исправить на свой
int open, _close, connect, file, catalog;
external(INT, "InternetOpen", "InternetOpenA", "Wininet.dll" );
external(INT, "InternetCloseHandle", "InternetCloseHandle", "Wininet.dll" );
external(INT, "InternetConnect", "InternetConnectA", "Wininet.dll" );
external(INT, "FtpSetCurrentDirectory", "FtpSetCurrentDirectoryA", "Wininet.dll" );
external(INT, "FtpGetFile", "FtpGetFileA", "Wininet.dll" );

#icon "C:\Kibor_set\***\16.bmp" "C:\Kibor_set\***t\32.bmp"

if(sendgetweb(#versionRemote, "", "GET", "http:/"+"/*****.zzz.com.ua", "/version.txt")>0)
{
regexreplace(-1, #temp_remote, versionRemote, "[.]", "");
regexreplace(-1, #temp_cur, curVersion, "[.]", "");
if (formatsn(temp_cur) < formatsn(temp_remote)) {
messagebox("Обнаружена новая версия бота "+versionRemote+formatic(13)+formatic(10)+
"Приложение будет автоматически обновлено и перезапущено");
open=InternetOpen("Microsoft Internet Explorer", 0, 0, 0, 0);
connect=InternetConnect(open, ftp, 21, login, pass, 1, 134217728, 0);
catalog=FtpSetCurrentDirectory(connect, ftp);
file=FtpGetFile(connect, "*****.exe", "temp_****.exe", 0, 0, 0); // скачать файл в папку с кибор
_close=InternetCloseHandle(connect);
while(file==0){sleep(500);}
start (pathfolder()+"updater.exe");
close();
}

(Добавление)
создать updater.exe с вот таким содержимым и положить рядом с исполняемым файлом бота:

CODE:
INITDIALOG
{
#icon "C:\Kibor_set\***\16.bmp" "C:\Kibor_set\***\32.bmp"
}

if(fopen(pathfolder()+"temp_****.exe", "rb"))
{
fclose();
external(INT, "DeleteFile", "DeleteFileA", "kernel32.dll");
DeleteFile(pathfolder()+ "****.exe");
sleep(500);
external(INT, "MoveFile", "MoveFileA", "kernel32.dll");
MoveFile(pathfolder()+"temp_****.exe", "***.exe");
sleep(500);
//Запустить Updater
start (pathfolder()+"****.exe");
close();
}
else {
messagebox("Новая версия не обнаружена");
close();
}

(Добавление)
все **** - поменять на свои.
39. 007wan - 22 Августа, 2019 - 05:29:50 - перейти к сообщению
Ну принцип очень поняте и примерно такой же как я и хотел, но это понятно, что Запущенная exe сама себя удалить не может и тогда ты запускаешь другую собранную, что бы закрыть ее и удалить, а как ты будешь бороться с тем, что твой updater.exe, который удаляет старую может его удалят кто-нибудь на компе? Как с этим бороться? Я предалагаю закинуть его в Temp, а потом каждый раз как обновление завершено и новая версия скачана - то запускать его. Ну или можно снова с сервера его скачивать и так же запускать.
(Добавление)
И у тебя принцип слишком мне кажется нужно его доработать, что бы при запрашивании обновлений, он получал версию с сервера, записывал ее в файл и кидал в папку Temp, что бы при открытии он ее запоминал, а то ты пока не нажмешь кнопку не узнает что есть новая, а так при запуске оповестит и даже если он уже была скачанна - запустит.
(Добавление)
Сделаю потом как мне нудо. Спасибо вам всем за помощь.
40. ivantu - 22 Августа, 2019 - 05:39:55 - перейти к сообщению
Принцып не уловил, при запуске программы, она проверяет версию прописанную в ней с той что на сервере и если на сервере версия более свежия , скачивает указанный exe с отличным именем к примеру я добавил temp_названиебота.exe , после скачки программа запускает apdater.exe и закрывает запущеного бота удалает его и переименовывает temp_названиебота.exe в просто названиебота.exe ничего лишнего не удалится, там все конкретно прописано, затем запускает новую версию.

Powered by ExBB FM 1.0 Final