Вариант с ShellExecute я проверил - у меня работает. Единственно только для тихой установки WinRar-овских SFX архивов нужно использовать параметр '/S', а не '\S'.
Вот вариант через CreateProcess:
Код:
var
SI: TStartupInfo;
PI: TProcessInformation;
begin
FillChar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);
if not CreateProcess(nil, 'SetupWinRar.exe /S', nil, nil, False, 0, nil, nil, SI, PI) then RaiseLastWin32Error();
CloseHandle(PI.hProcess);
CloseHandle(PI.hThread);
end;
p.s. Естественно путь к файлу "SetupWinRar.exe" должен быть известен. Иначе либо имя этого файла нужно указывать полностью с путём, либо устанавливать текущий путь к этому файлу с помощью SetCurrentDir.