Что нового

[Интернет] Автообновление программы в нормальном и скрытом (в фоне) режимах

araneon

Новичок
Сообщения
59
Репутация
0
Подскажите а как быть если у меня только локалка, то есть нет Интернета в сети?
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
araneon, а как вы собрались скачивать что то из интернета если подключения к нему нет :smile:
 

araneon

Новичок
Сообщения
59
Репутация
0
вот в том то и дело, что мне нужно тоже самое только локально.



Добавлено:
Сообщение автоматически объединено:

Я так понимаю что для локальной сети нужно использовать FileGetVersion, FileCopy ?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
MnM [?]
как вы собрались скачивать что то из интернета если подключения к нему нет
Он же написал:
[?]
у меня только локалка

Скрипт в теме в принципе для локальной сети не заточен.
Нужно пропускать ту часть где файл скачивается, и читать сразу по указанному пути (\\comp-name\...).
 

WR-e-D

Новичок
Сообщения
53
Репутация
3
AdlibRegister("_CheckUpdate",20) - Иногда GUi успевает появляться в этот промежуток :smile:
Код:
;-------------------------------------------------------------------------------------------

	$g_hInet_Update = InetGet($url,$g_TempFileInfo_Update,1,1)
	_CheckUpdate()
EndFunc

Func _CheckUpdate()
   $PCount=0
		Do
		   Sleep(20)
		   If $PCount > 500 Then 
			  Exit ;Return
		   ElseIf InetGetInfo($g_hInet_Update,2) Then
			  ExitLoop
			  EndIf
			  		   $PCount+=1
		Until $PCount > 501 ;Проверяем 10 секунд

Достаточно проблемно при двойном открытии exe и в тех случаях когда нужно при отмене обновления закрывать программу
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Не дает скачать, пишет "Вы не можете зайти в этот раздел" :(
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Восстановите кто-нибудь приложенный файл пожалуйста. Не дает скачать.


Добавлено:
Сообщение автоматически объединено:

Кто-нибудь задавался вопросом использования при обновлении программы через фтп с помощью InetGet, ссылки типа:
Код:
InetGet("ftp://webweb:[email protected]")

Безопаснее ли для этого использовать FTPEx? Не перехватят ли указанный в ссылке логин и пароль?
 

qqww22

Новичок
Сообщения
115
Репутация
4
Belfigor сказал(а):
Восстановите кто-нибудь приложенный файл пожалуйста. Не дает скачать.


Добавлено:
Сообщение автоматически объединено:

Кто-нибудь задавался вопросом использования при обновлении программы через фтп с помощью InetGet, ссылки типа:
Код:
InetGet("ftp://webweb:[email protected]")

Безопаснее ли для этого использовать FTPEx? Не перехватят ли указанный в ссылке логин и пароль?


Точно не уверен,но скорее всего http снифер получит ссылку вместе с логином и паролем.
 

Black_Night

Новичок
Сообщения
67
Репутация
1
Belfigor,
Однозначно перехватят. Через FTP обновляться плохо. Лучше простой HTTP.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Black_Night сказал(а):
Belfigor,
Однозначно перехватят. Через FTP обновляться плохо. Лучше простой HTTP.
Да можно и через FTP, только сделать специально для этого доступ без пароля, например как это сделано у ftp://ftp.mozilla.org и у многих других проектов...
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
О! А это мысля, создать на хостинге директорию и пользователя с правами только для чтения.
Хотяяя... У меня же этот пользователь и пароль сгенерированы только для обновлений. Надо главное папке приоритет "только чтение" задать.
 

Malderin

Новичок
Сообщения
68
Репутация
1
При попытке скачать Update.au3 перекидывает на страницу с надписью "Вы не можете войти в этот раздел". Я что то не так делаю?
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
это, наверное сверхсекретная UDF , тоже было несколько попыток скачать и всякий раз "Вы не можете войти в этот раздел" :'(
 

Malderin

Новичок
Сообщения
68
Репутация
1
Кто ищет тот всегда найдет. И хоть Update.au3 я так скачать и не смог, но на рубоарде все таки выдернул то что искал. Скрипт настолько понравился, что я переделал его под локальную сеть и внедрил в некоторые свои рабочие проекты.
Кому нужно под локалку но переделывать лень (хотя что там переделывать все итак почти готово к употреблению), вот:
Код:
#pragma compile(Out, D:\Папка с обновлением\Update.exe)
#pragma compile(FileVersion, 1.0.0.0)
#pragma compile(ProductVersion, 1.1.0.0)

#include <GUIConstantsEx.au3>
#include <Misc.au3>
#include <Array.au3>

Global $sAppUpdate_Page = "D:\Папка с обновлением\Update.inf"
Global $sApp_Version = "1.1"
Global $hGUI = 0

;Here we checking in quiet mode (only if new version available there will be a message).
_AppCheckUpdates_Proc($sAppUpdate_Page, $sApp_Version, 1)

#Region GUI Part
$hGUI = GUICreate("My Application", 300, 200)
$App_Ver = GUICtrlCreateLabel("Текущая версия " & $sApp_Version, 10, 20)
$CheckUpdates_Button = GUICtrlCreateButton("Проверить обновление", 150, 170, 140, 20)
$Exit_Button = GUICtrlCreateButton("Выход", 20, 170, 60, 20)

GUISetState(@SW_SHOW, $hGUI)
#EndRegion GUI Part

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $Exit_Button
            Exit
        Case $CheckUpdates_Button
            _AppCheckUpdates_Proc($sAppUpdate_Page, $sApp_Version)
    EndSwitch
WEnd

Func _AppCheckUpdates_Proc($sServer_Page, $sCurrent_AppVersion, $iMode=-1) ;$iMode <> -1 to check quitly

    Local $sUpdate_Version = IniRead($sServer_Page, "info", "Update Version", "")
	Local $sUpdate_File = IniRead($sServer_Page, "info", "Update File", "")

If @error=1 Then
        If $iMode = -1 Then MsgBox(48, "Update check", _
            StringFormat("Возникла ошибка (%i) при проверке обновления, пожалуйста, свяжитесь с автором.", 1), 0, $hGUI)
        Return SetError(1, 0, 0)
EndIf
    If _VersionCompare($sUpdate_Version, $sCurrent_AppVersion) = 1 Then
        Local $iUpdate_Ask = MsgBox(36, "Проверка обновления", _
            StringFormat("Доступна новая версия (%s).\n\nЖелаете обновить?", $sUpdate_Version), _
            0, $hGUI)

        If $iUpdate_Ask <> 6 Then Return 0

        Local $sScript_Name = StringTrimRight(@ScriptName, 4) & ".exe"
        Local $iInetGet = FileCopy($sUpdate_File, @TempDir & "\" & $sScript_Name, 1)

        Run(@ComSpec & ' /c Ping -n 2 localhost > nul & Move /y "' & _
            @TempDir & '\' & $sScript_Name & '" "' & @ScriptFullPath & '" & Start "" "' & @ScriptFullPath & '"', '', @SW_HIDE)

        Exit
    EndIf

    If $iMode = -1 Then MsgBox(48, "Проверка обновления", "Вы используете самую новую версию программы", 0, $hGUI)
    Return 1
EndFunc


Для этого примера я создал папку "Папка с обновлением" на диске D, туда поместил файл Update.inf следующего содержания:
Код:
[Info]
Update Version=1.1
Update File=D:\Папка с обновлением\Update 1.1.exe

Скомпилировал скрипт с параметром
Код:
Global $sApp_Version = "1.1"

положил получмвшийся файл в папку "D:\Папка с обновлением\"

Далее скомпилировал скрипт с параметром
Код:
Global $sApp_Version = "1.0"

Запихнул на рабочий стол, запустил и обновил его до версии 1.1.
 

Sergio

Новичок
Сообщения
42
Репутация
3
При попытке скачать :
Ошибка!
Вы не можете зайти в этот раздел

интересно для каких избранных этот раздел
 
Сообщения
1
Репутация
-1
Вы абсолютно правы. В этом что-то есть и я думаю, что это хорошая мысль.
 
Верх