Auto-Update (Usando google drive)

Compartilhe seus scripts, funções, ferramentas e programas
User avatar
juanmuscaria
Posts: 52
Joined: 29 Oct 2017, 10:53
GitHub: juanmuscaria
Location: Brazil
Contact:

Auto-Update (Usando google drive)

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:

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 }
Assim devera estar o arquivo .ini:

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 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
Image



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 }
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
|||||||||
User avatar
Gio
Posts: 485
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Auto-Update (Usando google drive)

28 Dec 2017, 11:32

Interessante. Obrigado por compartilhar :thumbup:

Em relação problema do link do arquivo, eu disponibilizo minha biblioteca de código de barras através do DropBox (ao invés do Google Drive) e percebi uma vez que tirei o arquivo existente e subi um atualizado, mas com o mesmo nome e na mesma conta, e assim o link do compartilhamento ficou o mesmo. Não sei se ainda funciona dessa forma e nem acho que (como qualquer serviço grátis) devamos confiar nisso para desenvolver aplicações pagas, mas por enquanto, pode ser uma solução interessante para que o atualizador não precise do arquivo .ini :beer:
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
User avatar
juanmuscaria
Posts: 52
Joined: 29 Oct 2017, 10:53
GitHub: juanmuscaria
Location: Brazil
Contact:

Re: Auto-Update (Usando google drive)

28 Dec 2017, 20:22

Eu uso o google drive porque o UrlDownloadFile não funcionou no dropbox para mim,o ideal seria um FTB server porem nem todo mundo tem isso.
O motivo dele baixa um arquivo .ini e que esa foi a forma mais facil para verificar uma atualização (se tiver sugestão de uma forma melhor me fala).
|||||||||
User avatar
Gio
Posts: 485
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Auto-Update (Usando google drive)

29 Dec 2017, 14:23

Bom, o código a seguir baixa a minha biblioteca direto do dropbox para a área de trabalho sem problema. Demora alguns segundos, mas o arquivo aparece na mesma pasta que o script.

Code: Select all

URLDownloadToFile, https://www.dropbox.com/s/m5e6c2hy1faedkn/BARCODER.ahk?dl=1, %A_Desktop%/Barcoder.ahk Return
Veja que mudei uma coisa na url que o dropbox me apresentou. Antes estava "dl=0" e eu coloquei "dl=1". Também é possível que o script não esteja conseguindo baixar por outro motivo, tipo as configurações de firewall ou a pasta escolhida. De qualquer forma, dá pra conseguir :beer:
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
RsTxSpyMaster
Posts: 2
Joined: 29 Sep 2018, 08:24

Re: Auto-Update (Usando google drive)

21 Oct 2018, 12:25

Outra maneira utilizando o COM

Code: Select all

;version:=1.0.0 Pwb:= ComObjCreate("InternetExplorer.Application") ;Pwb.Visible := true Pwb.Navigate("https://drive.google.com/file/d/_seu_endereço/view") while pwb.busy or pwb.ReadyState != 4 ;Wait for page to load Sleep, 100 ;Online:= Pwb.document.documentElement.innerText ;Get All text on page <--+ confiavel porém precisa fazer limpeza do texto Online:= Pwb.document.querySelector("div[class*='ndfHFb-c4YZDc-Wrql6b-V1ur5d']").innerText ;inspeciona o elemento(^+i) e pega a class do texto que vc quer Pwb.quit()
https://prnt.sc/l8o926
aí vc compara o "Online" com o "version" dentro do seu script...

Return to “Scripts e Funções”

Who is online

Users browsing this forum: No registered users and 2 guests