Auto-Update (Usando google drive)
Posted: 27 Dec 2017, 15:26
Bom-dia,estava tentando arrumar uma forma de fazer meu programa se auto-atualizar e tive uma ideia de usar o google drive para isso.
Essa foi a função que criei:
Assim devera estar o arquivo .ini:
Agora vem um problema,você precisa instala o google drive em seu computador para poder editar o arquivo .ini e não ter que ficar mudando sempre o link no seu script,e o update pasta você deixar o mesmo nome e trocar o antigo pelo novo
Agora você me pergunta:"Como uso isso?"
É bem simples,Só chamar essa função no topo do seu script dessa forma:
Espero que tenham gostado
PS:o motivo deu usar esse "splash screen"(Logo/tela de abertura) e que dependendo do computador ele pode demorar um pouco
PS2:O link do google drive deve estar na forma de download
Forma errada:https://drive.google.com/file/d/1WbL2wS ... qbEHj/view
Forma correta:https://drive.google.com/uc?authuser=0& ... t=download
para fazer isso,basta clica em baixar o arquivo e copiar rapidamente a URL de download
Link do LoadLang:https://autohotkey.com/boards/viewtopic ... 71&t=41783
Essa foi a função que criei:
Code: Select all
Update()
{
;ignore isso
IniWrite, 2.0, %A_WorkingDir%\Files\Config.ini, Global, Ver
;===============
Random,tmpfile,1,5
;Aqui ele vai baixar um arquivo .ini com as informações sobre versão e o link da atualização (Troque pelo link do seu arquivo)
UrlDownloadToFile,https://drive.google.com/uc?authuser=0&id=1I9o6yDQuf_o1y1O-CA83Dodq23Do3VHN&export=download,%A_WorkingDir%\Files\tmp\%tmpfile%_Download.tmp
IniRead, NewVer,%A_WorkingDir%\Files\tmp\%tmpfile%_Download.tmp,00,Ver
;Aqui ele vai verificar se você esta usando a versão mais recente.
IfNotEqual,NewVer,2.0
{
;Aqui ele vai carregar o lang (ver link sobre a função do lang no final do tópico)
lang := LoadLang("launcher","LOGO1")
MsgBox, 262180, Update!, %lang%
;Se Você clica em sim ele vai baixa a atualização
IfMsgBox,Yes
{
;Aqui ele vai ler o link da atualização do arquivo .ini
IniRead, Link,%A_WorkingDir%\Files\tmp\%tmpfile%_Download.tmp,00,Link
Random,tmpexe,1,5
UrlDownloadToFile,%Link%,%A_WorkingDir%\Files\tmp\%tmpexe%_Download.exe
;Agora ele vai rodar o installer e vai fecha o app para poder instala a atualização
run,%A_WorkingDir%\Files\tmp\%tmpexe%_Download.exe
ExitApp
}
return
}
return
}
Code: Select all
[00]
,Versão do programa
Ver=2.0
,Link do installer
Link=https://drive.google.com/uc?authuser=0&id=1ejXrw35gYDGFMSydnSIfWQVHjLVA-9sX&export=download
Agora você me pergunta:"Como uso isso?"
É bem simples,Só chamar essa função no topo do seu script dessa forma:
Code: Select all
;aqui ele chama a função logo (que eu uso nos meus scripts) que contem o "Update()"(mas você pode coloca o "Update()" no lugar)
Logo()
;Update()
;Seu script a baixo
;
;
;
;
;aqui as funções
Logo()
{
Gui,New,AlwaysOnTop -Caption ToolWindow,Main
Gui, Add, Picture,x0 y0 w800 h400, %A_WorkingDir%\Files\Img\Logo.png
Gui, show, w800 h400,Logo
;aqui ele chama o update
Update()
Gui, Destroy
}
Update()
{
IniWrite, 2.0, %A_WorkingDir%\Files\Config.ini, Global, Ver
Random,tmpfile,1,2000
UrlDownloadToFile,https://drive.google.com/uc?authuser=0&id=1I9o6yDQuf_o1y1O-CA83Dodq23Do3VHN&export=download,%A_WorkingDir%\Files\tmp\%tmpfile%_Download.tmp
IniRead, NewVer,%A_WorkingDir%\Files\tmp\%tmpfile%_Download.tmp,00,Ver
IfNotEqual,NewVer,2.0
{
lang := LoadLang("launcher","LOGO1")
MsgBox, 262180, Update!, %lang%
IfMsgBox,Yes
{
IniRead, Link,%A_WorkingDir%\Files\tmp\%tmpfile%_Download.tmp,00,Link
Random,tmpexe,1,2000
UrlDownloadToFile,%Link%,%A_WorkingDir%\Files\tmp\%tmpexe%_Download.exe
run,%A_WorkingDir%\Files\tmp\%tmpexe%_Download.exe
ExitApp
}
return
}
return
}
PS:o motivo deu usar esse "splash screen"(Logo/tela de abertura) e que dependendo do computador ele pode demorar um pouco
PS2:O link do google drive deve estar na forma de download
Forma errada:https://drive.google.com/file/d/1WbL2wS ... qbEHj/view
Forma correta:https://drive.google.com/uc?authuser=0& ... t=download
para fazer isso,basta clica em baixar o arquivo e copiar rapidamente a URL de download
Link do LoadLang:https://autohotkey.com/boards/viewtopic ... 71&t=41783