Winexec não abre com PAnsiChar - Delphi

Delphi

27/03/2016

Pessoal, estou com um problema:
Eu tenho um atualizador que inicia a partir da aplicação principal, mas o atualizador não abre de forma alguma.

var
diretorio: String;
begin
diretorio := (ExtractFilePath(Application.ExeName)+'Atualizador.exe');
WinExec(PAnsiChar(diretorio),SW_SHOWNORMAL);

Quando faço dessa forma ele abre:

var
diretorio: String;
begin
diretorio := (ExtractFilePath(Application.ExeName)+'Atualizador.exe');
Memo1.Text := diretorio;
WinExec(PAnsiChar(diretorio),SW_SHOWNORMAL);
WinExec('D:\OneDrive\Embarcadero\Studio\Projects\Rotinas\Licenca_V2\Licença\Win32\Debug\Atualizador.exe',SW_SHOWNORMAL);

Coloquei esse memo justamente para copiar o código gerado para o último winexec e funcionou.
Copiando também o código do memo para o cmd ele abre normalmente.
Tássio Gois

Tássio Gois

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

27/03/2016

teste assim:

diretorio := IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName))+'Atualizador.exe';
GOSTEI 1

Mais Respostas

Tássio Gois

Tássio Gois

27/03/2016

Fiz
diretorio := IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName))+'Atualizador.exe';
WinExec(PAnsiChar(diretorio),SW_SHOWNORMAL);

Ainda não funcionou!
GOSTEI 0
Tássio Gois

Tássio Gois

27/03/2016

Pessoal consegui com o Shellexecute.
Adicionei a unit shellapi e fiz o seguinte:

procedure TFrmMain.Atualizador2Click(Sender: TObject);
var
diretorio: String;
begin
diretorio := ExtractFilePath(Application.ExeName)+'Atualizador.exe';
ShellExecute(Handle,'open',pchar(diretorio),nil,nil,sw_show)
end;
GOSTEI 0
Renato Braz

Renato Braz

27/03/2016

Maravilha! Resolveu meu problema. Valeu pela dica.
GOSTEI 0
Vicente Santos

Vicente Santos

27/03/2016

comigo funcionou fazendo dessa forma WinExec(PAnsiChar(AnsiString(diretorio)),sw_show); apartir do Delphi 2010
GOSTEI 0
POSTAR