Winexec não abre com PAnsiChar - Delphi
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.
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
Curtidas 0
Melhor post
Emerson Nascimento
27/03/2016
teste assim:
diretorio := IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName))+'Atualizador.exe';
diretorio := IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName))+'Atualizador.exe';
GOSTEI 1
Mais Respostas
Tássio Gois
27/03/2016
Fiz
diretorio := IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName))+'Atualizador.exe';
WinExec(PAnsiChar(diretorio),SW_SHOWNORMAL);
Ainda não funcionou!
diretorio := IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName))+'Atualizador.exe';
WinExec(PAnsiChar(diretorio),SW_SHOWNORMAL);
Ainda não funcionou!
GOSTEI 0
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;
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
27/03/2016
Maravilha! Resolveu meu problema. Valeu pela dica.
GOSTEI 0
Vicente Santos
27/03/2016
comigo funcionou fazendo dessa forma WinExec(PAnsiChar(AnsiString(diretorio)),sw_show); apartir do Delphi 2010
GOSTEI 0