10. juni 2004 - 08:03Der 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:
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;
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.