Geht schon zu starten, aber nicht direkt von einem TProcess aus.
Eine Möglichkeit wäre z.B. eine "Start.bat" zu erstellen, die einfach den Inhalt "MSInstaller.msi" hat und diese per Process starten (funktioniert, eben probiert!).
Nächste Möglichkeit wäre über starten von "cmd":
Code: Alles auswählen
uses ..., Process;
...
procedure TForm1.Button1Click(Sender: TObject);
var
P:TProcess;
begin
P:=TProcess.Create(Nil);
// P.Executable:='Start.bat';
P.Executable:='cmd';
P.Parameters.Add('/C'); //Parameter /C bedeutet dass cmd die nachfolgende Codezeile ausführen soll
P.Parameters.Add('MSInstaller.msi'); //auszuführende Codezeile
// P.Parameters.Add('/k'); //Falls nicht gestartet wird bleibt mit /k das Konsolefenster sichtbar
P.Execute;
P.Free;
end;
Achtung: Immer Ärger machen Leerzeichen im Pfad, man kann probieren ob Hochklammern helfen...
Teste noch die anderen Möglichkeiten...