Caminho para download no explorer
Boa tarde a todos,
Tenho um programa em que realiza atualizações pela internet, quando é gerada uma nova versão o programa avisa o usuário de que irá fazer o download, porém ele fica esperando o usuário definir o local, não teria como eu já deixar padronizado nos lugares onde será feito este download? e o programa fazer tudo sozinho?
Aguardo a ajuda de todos
Danilo
Tenho um programa em que realiza atualizações pela internet, quando é gerada uma nova versão o programa avisa o usuário de que irá fazer o download, porém ele fica esperando o usuário definir o local, não teria como eu já deixar padronizado nos lugares onde será feito este download? e o programa fazer tudo sozinho?
Aguardo a ajuda de todos
Danilo
Dcpleal
Curtidas 0
Respostas
Adriano Santos
17/08/2005
Declare a unit UrlMon e crie a seguinte função
use assim:
function DownloadFile(Origem, Destino: string): Boolean; begin try Result := UrlDownloadToFile(nil, PChar(Origem), PChar(Destino), 0, nil) = 0; except Result := False; end; end;
use assim:
DownloadFile(´www.seudominio.com.br/seuarquivo.zip´,´c:\temp\seuarquivo.zip´);
GOSTEI 0
Dcpleal
17/08/2005
Amigo essa sua função não deu certo aqui não ela nem foi executada pelo programa.
GOSTEI 0
Adriano Santos
17/08/2005
Amigo essa sua função não deu certo aqui não ela nem foi executada pelo programa.
Tenta fazer o seguinte:
DownloadFile(´http://www.seudominio.com.br/seuarquivo.zip´,´c:\temp\seuarquivo.zip´);
Se ainda não funcionar me da um toque que te mando um exemplo, pois eu uso isso aqui e funciona direitinho.
GOSTEI 0
Dcpleal
17/08/2005
meu amigo insisto em dizer apesar que esta funcao não deu certo, nao acontece nada quando é executado.
Aguardo uma resposta
Aguardo uma resposta
GOSTEI 0
Martins
17/08/2005
[b:9ee84e5c26]dcpleal[/b:9ee84e5c26], a função que o amigo [b:9ee84e5c26]Adriano Santos[/b:9ee84e5c26] lhe passou funciona sim, e vc deve ter feito algo errado, com certeza vc declarou na uses a unit UrlMon, pq caso contrário daria erro na compilação, quanto ao fato de vc dizer q nada acontece, veja bem, vc precisa especificar um endereço válido para download, e não é só isso, vc precisa indicar o destino + o nome do arquivo.ext, veja alguns exemplos funcionais da função.
Estou utilizando alguns edit´s, o primeiro é para informar o endereço do arquivo de origem, de onde eu vou fazer download, e o segundo o nome do arquivo de destino, a pasta já foi pré-definida. Veja como ficou.
vc poderia fazer assim sem utilizar os edit´s
Teste e veja onde está o erro na função q vc escreveu.!!!!
Qualquer coisa post aqui o seu e-mail q te mando um exemplo.
Boa Sorte!!!
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, UrlMon, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function DownloadFile(Source, Dest: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0;
except
Result := False;
end;
end;
Estou utilizando alguns edit´s, o primeiro é para informar o endereço do arquivo de origem, de onde eu vou fazer download, e o segundo o nome do arquivo de destino, a pasta já foi pré-definida. Veja como ficou.
procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := ´fazendo download de :´+Edit1.Text + ´ para: c:\temp\´+Edit2.Text; Application.ProcessMessages; if DownloadFile (Edit1.Text, ´c:\temp\´+Edit2.Text) then ShowMessage(´Download Concluído!´) else ShowMessage(´Falha ao fazer o download!!´) end;
vc poderia fazer assim sem utilizar os edit´s
procedure TForm1.Button1Click(Sender: TObject); begin if DownloadFile (´http://www.clubedelphi.net/TopUploader/EXEBLOCK.zip´, ´c:\temp\ExeBlock.zip´) then ShowMessage(´Download Concluído!´) else ShowMessage(´Falha ao fazer o download!!´) end;
Teste e veja onde está o erro na função q vc escreveu.!!!!
Qualquer coisa post aqui o seu e-mail q te mando um exemplo.
Boa Sorte!!!
GOSTEI 0
Dcpleal
17/08/2005
Eu acabei de testar pois o Adriano me mandou o exemplo, porém eu preciso que funcione assim:
A versao do meu sistema esta guardada em banco ai, quando o usuário acessa o sistema ele compara com o nro da versao que esta armazenada no banco, caso esteja desatualizado ele avisará e deverá começar o download do arquivo na pasta onde esta o arquivo, meus usuários são meio tapados, eles gravam em qualquer lugar, então preciso que fique no local correto, porém quando ele verificar e começar fazer o download terá que fechar o programa senão ele não conseguirá fazer o download.
é isto que esta acontecendo se for em um local onde não existe o arquivo ele copia, mas se for na situação falei acima ele não faz nada.
Aguardo respostas
Atenciosamente
Danilo Leal
A versao do meu sistema esta guardada em banco ai, quando o usuário acessa o sistema ele compara com o nro da versao que esta armazenada no banco, caso esteja desatualizado ele avisará e deverá começar o download do arquivo na pasta onde esta o arquivo, meus usuários são meio tapados, eles gravam em qualquer lugar, então preciso que fique no local correto, porém quando ele verificar e começar fazer o download terá que fechar o programa senão ele não conseguirá fazer o download.
é isto que esta acontecendo se for em um local onde não existe o arquivo ele copia, mas se for na situação falei acima ele não faz nada.
Aguardo respostas
Atenciosamente
Danilo Leal
GOSTEI 0
Martins
17/08/2005
Eu acabei de testar pois o Adriano me mandou o exemplo, porém eu preciso que funcione assim:
A versao do meu sistema esta guardada em banco ai, quando o usuário acessa o sistema ele compara com o nro da versao que esta armazenada no banco, caso esteja desatualizado ele avisará e deverá começar o download do arquivo na pasta onde esta o arquivo, meus usuários são meio tapados, eles gravam em qualquer lugar, então preciso que fique no local correto, porém quando ele verificar e começar fazer o download terá que fechar o programa senão ele não conseguirá fazer o download.
é isto que esta acontecendo se for em um local onde não existe o arquivo ele copia, mas se for na situação falei acima ele não faz nada.
Aguardo respostas
Atenciosamente
Danilo Leal
:shock:
Vc pode prestar atenção q ele vai sobrepor o arquivo q já existe, baixe um arquivo zip pelo código q lhe foi passado, entre no arquivo zip e apague alguns arquivos e depois faça o download novamente pela código q o [b:368b235ddf]Adriano[/b:368b235ddf] te passou e vc vai ver q ele terá substituído seu arq. anterior. Quanto a fechar sua aplicação para atualizar, aí já não é mais só uma questão de donwload, pq vc teria q identificar, abrir uma outra aplicação auxiliar q fecharia a sua principal, faria o processo de atualização e depois vc poderia utilizar seu aplicativo atualizado, se fossem módulos talvez vc nem precisasse fechar. Mas esse é um assunto para quem já fez ou entende do assunto, eu sou leigo nisso, nunca fiz nada assim, ainda
GOSTEI 0
Martins
17/08/2005
vou fazer, futuramente, hehehe :D
GOSTEI 0
Dcpleal
17/08/2005
Mas tipio como faço para ele copiar com o programa aberto, pois até que sei ele num consegue se o programa estiver em execução, ok? entao é esse o problema preciso que ele feche e depois copie entendeu?
estava usando dessa forma:
var
IEApp: Variant;
IEApp := CreateOLEObject(´InternetExplorer.Application´);
IEApp.visible := true;
IEApp.Top := 0;
IEApp.Left := 0;
IEApp.width := screen.width;
IEApp.height := screen.height;
IEApp.Navigate(url);
porém ele nao me deixa mencionar o destino.
estava usando dessa forma:
var
IEApp: Variant;
IEApp := CreateOLEObject(´InternetExplorer.Application´);
IEApp.visible := true;
IEApp.Top := 0;
IEApp.Left := 0;
IEApp.width := screen.width;
IEApp.height := screen.height;
IEApp.Navigate(url);
porém ele nao me deixa mencionar o destino.
GOSTEI 0
Zorro_br
17/08/2005
Revivendo o assunto. :-)
Será que o código para baixar arquivo funciona com https ? Há outra API nativa do delphi (nao o componente Indy) que suporte GET e POST em HTTP e HTTPS ?
Estou utilizando o Delphi 5.
Será que o código para baixar arquivo funciona com https ? Há outra API nativa do delphi (nao o componente Indy) que suporte GET e POST em HTTP e HTTPS ?
Estou utilizando o Delphi 5.
GOSTEI 0