Avatar billede dakine Nybegynder
10. juni 2004 - 08:03 Der er 4 kommentarer og
2 løsninger

Kør setup.exe fra Delphi og vent til endt installation - How?

Hej.

Jeg vil fra Delphi kalde en setup.exe, der installerer en applikation på brugerens PC i baggrunden. Dvs. uden brugeren ved det sker. Dette kan jeg fint gøre ved at kalde:

ShellExecute(Handle, 'open', PChar ('\\server\share\folder\setup.exe'), 'Parametere', '', sw_ShowNormal);

MEN hvordan kan jeg fra Delphi holde øje med, hvornår installationen er kørt færdig på brugerens PC?

Når det sker skal mit Delphi program nemlig lukke.

Når jeg kalder en setup.exe fra Delphi, får Delphi så nogle messages tilbage eller noget i den stil?
Avatar billede borrisholt Novice
10. juni 2004 - 08:11 #1
Prøv den her:

function ExecuteAndWait(const aFileName: TFileName; nCmdShow: Integer): Boolean;

  function doExecAndWait(FileName, Parameter: string; nCmdShow: Integer): Boolean;
  var
    StartupInfo: TStartupInfo;
    ProcessInfo: TProcessInformation;
    Res: Cardinal;
  begin
    FillChar(StartupInfo, SizeOf(StartupInfo), #0);
    StartupInfo.cb := SizeOf(StartupInfo);
    StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
    StartupInfo.wShowWindow := nCmdShow;

    if not CreateProcess(nil, Pchar(FileName + #32 + '"' + Parameter + '"'), nil, nil, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
      Res := DWORD(-1)
    else
    begin
      while WaitforSingleObject(ProcessInfo.hProcess, 500) = WAIT_TIMEOUT do
        Application.ProcessMessages;

      GetExitCodeProcess(ProcessInfo.hProcess, Res);
      CloseHandle(ProcessInfo.hProcess);
      CloseHandle(ProcessInfo.hThread);
    end;
    Result := Res = 0;
  end;
var
  FileName, FileDir: TFileName;
  Res: string;
begin
  FileName := ExtractFileName(aFileName);
  FileDir := ExtractFilePath(aFileName);
  SetLength(Res, MAX_PATH);
  FindExecutable(pointer(FileName), pointer(FileDir), pointer(Res));
  SetLength(RES, Pred(Pos(#0, Res)));
  Result := doExecAndWait(RES, aFileName, SW_SHOWNORMAL);
end;
Avatar billede dakine Nybegynder
10. juni 2004 - 09:03 #3
Uha I er hurtige. :o) Og det virker! Der er ikke et øje tørt.

Jeg brugte et af dine links Snowball, men jeg er overbevist om, at borrisholt's også virker. Så I deler.

Mange tak for hjælpen.
Avatar billede borrisholt Novice
10. juni 2004 - 09:05 #4
snowball>>08:11:23 slået med 3 sekunder !!!

Jens B
Avatar billede borrisholt Novice
10. juni 2004 - 09:05 #5
Måske du skulle ændre navn til slowball ? (Thi hi)
Avatar billede snowball Novice
10. juni 2004 - 09:08 #6
Så do' ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester