erro ao baixar scripts compilados

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

Lazyyy
Posts: 55
Joined: 27 Jan 2020, 21:56

erro ao baixar scripts compilados

27 Jul 2020, 16:06

Fiz um script para baixar outros scripts compilados diretamente do mediafire, o problema é que quando o arquivo é baixado, dá um erro de versão, como se não fossem compatíveis. Eu sempre compilei meus scripts em unicode 32 bits pq notei que funcionavam em versões de 64 bits também, mas estou achando que o UrlDownloadToFile possa estar baixando errado ou algo assim, pois é esse comando que eu uso para baixar os scripts, pensei que o UrlDownloadToFile pudesse baixar o arquivo exclusivamente para versões de 32 bits. Alguém sabe como resolver isso? Ou melhor ainda, existe alguma versão pra compilar que funcione nas duas versões do Windows sem nenhum problema? Tipo compilar o script pra funcionar nas versões 32 e 64 bits, é possível?
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: erro ao baixar scripts compilados

29 Jul 2020, 07:37

Bom dia Lazyyy.

Poderia anexar uma foto do erro que aparece quando você tenta baixar o arquivo?
Lazyyy
Posts: 55
Joined: 27 Jan 2020, 21:56

Re: erro ao baixar scripts compilados

29 Jul 2020, 08:00

Gio wrote:
29 Jul 2020, 07:37
Bom dia Lazyyy.

Poderia anexar uma foto do erro que aparece quando você tenta baixar o arquivo?
Na verdade o erro é ao executá-lo, me enganei, pois havia o comando Run pra executar o script logo após ele ser baixado, me esqueci dele. Então o problema é ao executá-lo.
A princípio, eu consigo executar este script se eu baixá-lo diretamente, mas, se eu utilizar o UrlDownloadToFile não... Lembrando que só compilo os scripts em unicode 32 bits porque sempre me funcionaram bem nas duas versões do Windows

Image

A imagem acima é o que aparece após eu tentar executar o script baixado pelo UrlDownloadToFile em um Windows versão 64 bits.
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: erro ao baixar scripts compilados

29 Jul 2020, 08:36

Você já verificou se o tamanho dos dois arquivos (do baixado diretamente no browser e do baixado via UrlDownloadToFile) é exatamente o mesmo? (você pode ver o tamanho de um arquivo clicando com o botão direito nele e selecionando propriedades).

Também poste o código da rotina que usa o UrlDownloadToFile, para que possa fazer alguns testes por aqui.
Lazyyy
Posts: 55
Joined: 27 Jan 2020, 21:56

Re: erro ao baixar scripts compilados

29 Jul 2020, 13:31

Deixei de utilizar o mpress e agora não acontece mais , não tenho certeza se era isso mas vou deixar avisado aqui pro caso de alguém ter o mesmo problema, só parei de utilizar o mpress e está funcionando.
Lazyyy
Posts: 55
Joined: 27 Jan 2020, 21:56

Re: erro ao baixar scripts compilados

31 Jul 2020, 09:07

Gio wrote:
29 Jul 2020, 08:36
Você já verificou se o tamanho dos dois arquivos (do baixado diretamente no browser e do baixado via UrlDownloadToFile) é exatamente o mesmo? (você pode ver o tamanho de um arquivo clicando com o botão direito nele e selecionando propriedades).

Também poste o código da rotina que usa o UrlDownloadToFile, para que possa fazer alguns testes por aqui.

@Gio agora eu notei que os arquivos não têm o mesmo tamanho, na verdade, o baixado pelo UrlDownloadToFile tem apenas 32kbps, deveria ter 2mb, assim como o original do mediafire
Lazyyy
Posts: 55
Joined: 27 Jan 2020, 21:56

Re: erro ao baixar scripts compilados

31 Jul 2020, 09:47

Gio wrote:
29 Jul 2020, 08:36
Você já verificou se o tamanho dos dois arquivos (do baixado diretamente no browser e do baixado via UrlDownloadToFile) é exatamente o mesmo? (você pode ver o tamanho de um arquivo clicando com o botão direito nele e selecionando propriedades).

Também poste o código da rotina que usa o UrlDownloadToFile, para que possa fazer alguns testes por aqui.

Code: Select all

Winclose, Script																;FECHANDO O SCRIPT ATUAL (ANTIGO)
Sleep, 1000
FileMove, %A_WorkingDir%/script.exe, %A_WorkingDir%/Arquivos/script.exe			;MOVE O SCRIPT ATUAL PRA PASTA ARQUIVOS PRA PODER DELETÁ-LO
Sleep, 1000
FileDelete, %A_WorkingDir%/Arquivos/script.exe									;DELETA O SCRIPT ATUAL (ANTIGO)
Sleep, 1000
URLDownloadToFile, %link, %A_WorkingDir%/script.exe								;BAIXA O SCRIPT ATUALIZADO (NOVO)
Sleep, 1000
ExitApp
Aqui está o código onde ele baixa o script, o problema é que o arquivo está vindo em um tamanho muito menor do que deveria e assim ele não abre sem dar aquele erro de versão
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: erro ao baixar scripts compilados

31 Jul 2020, 12:32

Pelo que você descreveu, esse parece ser um problema com o algoritmo do mediafire, e não com o comando ou o script em si.

Digo isso porque o script que não usa o MPress está baixando normalmente. Então veja que o trabalho do URLDownloadToFile, que é cuidar da conexão ao servidor FTP, da solicitação do download e da baixa do arquivo enviado pelo mediafire, está funcionando normalmente.

Então acredito que o algoritmo do mediafire possa estar tentando comprimir o arquivo subido (o que faz todo sentido, pois estes repositórios FTP abertos precisam otimizar o uso do espaço nos HDs dos servidores) e talvez seja esse processo de compressão/descompressão que está findando por corromper o arquivo, pois veja que quando você usa o MPress, o arquivo subido na verdade já foi comprimido (mas o mediafire não sabe disso). Existem casos onde a compressão de um arquivo pode falhar, e neste caso, mais ainda por ser uma recompressão.

Mas é curioso você relatar que o arquivo, mesmo subindo ele já comprimido pelo MPress, baixa normalmente quando tenta baixar pelo navegador. É possível que exista alguma funcionalidade no navegador que esteja permitindo a recuperação desse arquivo comprimido 2x (e que o URLDownloadToFile não possua). Neste caso eu sugiro que tente utilizar outro método de baixar o arquivo (você pode fazer uma função você mesmo ou procurar uma que já esteja pronta e testar o seu uso).

Exemplos de funções que usuários já escreveram que podem ser usadas para baixar arquivos:
WinHttpRequest, por Tmplinshi
HttpRequest, por VxE

:arrow: É interessante notar que se você for escrever uma função você mesmo, precisará ter alguns conhecimentos sobre FTP, protocolos web, APIs específicas do Windows para conexão via web e etc, o que significa que isto será um pequeno projeto. Mas se quiser optar por esta via mais árdua, terá mais controle sobre o algoritmo em si e o conhecimento web certamente lhe será muito útil para futuros scripts. Você também pode estudar o código das funções acima caso queira adaptá-las (embora que as funções façam bem mais do que somente baixar um arquivo).
Lazyyy
Posts: 55
Joined: 27 Jan 2020, 21:56

Re: erro ao baixar scripts compilados

02 Aug 2020, 16:52

@Gio fiz um teste e descobri que às vezes o UrlDownloadToFile baixa corretamente e às vezes ele baixa a página do mediafire (por isso o arquivo vinha em um tamanho muito menor). Coloquei o arquivo baixado no editor de texto e obtive o código fonte da página do mediafire toda escrita em HTML. Parece que às vezes o UrlDownloadToFile não consegue ir direto no arquivo e baixa a própria página do link
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: erro ao baixar scripts compilados

03 Aug 2020, 10:59

Bom dia Lazyyy.

Já vi isso acontecer antes com algumas páginas que hospedam downloads. Teria a ver com o fato de que estas páginas administram o acesso do usuário para exibir anúncios (e também para evitar ataques de bots ou diminuir a carga de uso do serviço sobre os servidores, pois tudo o que é grátis costuma ficar sobrecarregado). Um exemplo dessa situação são aquelas páginas que às vezes exigem que você espere alguns segundos antes de baixar, ou outras páginas que mudam o local do botão pra download. Para um usuário que estivesse navegando no browser, ter de clicar novamente em outra box de download ou ter de esperar 5 segundos seria algo fácil de resolver, mas para um script, é complicado entender a adição de uma etapa de anúncio que precisa ser contornada primeiro.

:arrow: Neste caso, eu sugiro a você procurar outro host para o arquivo em questão. Eu tenho usado o DropBox para compartilhar meus scripts compilados e ele tem funcionado muito bem, pois existe uma flag na URL que permite que o link faça o download direto.

Por exemplo, este é o link que uso para disponibilzar o ArchMage Gray (um joguinho em AutoHotkey que escrevi há algum tempo somente para aprendizado pessoal). Veja como o link em questão possui uma flag dl=1. Esta flag serve, no sítio do DropBox, para determinar especificamente que o download ocorra diretamente.

https://www.dropbox.com/s/mp3xclnzlhmygwy/Archmage%20Gray%20v1-01.rar?dl=1

Se você preferir, não se esqueça também que pode criar seu próprio servidor FTP com controle total (ou alugar um. Em ambos os casos faça isso somente caso seu aplicativo tenha se transformado em um negócio no qual você queira investir, é claro).


:arrow: Exemplo de script usando o URLDownloadToFile para baixar o arquivo acima (O Download tem 20Mb, portanto, pode levar alguns minutos para terminar. Quando terminar, uma mensagem será exibida):

Code: Select all

URL := "https://www.dropbox.com/s/mp3xclnzlhmygwy/Archmage%20Gray%20v1-01.rar?dl=1"
URLDownloadToFile, %URL%, %A_ScriptDiR%/ArchMageGrayv1-01.rar

If (ErrorLevel = 0)
{
	Msgbox, 0, Aviso, O Download terminou com sucesso.
}
else
{
	Msgbox, 0x10, Erro, Ocorreu um erro ao realizar o download. Por favor, verifique a conexão e tente novamente.
}

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 23 guests