MSI ausführen

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Boneless
Beiträge: 52
Registriert: So 1. Dez 2013, 14:15
OS, Lazarus, FPC: Windows 7 (L 1.0.14 - FPC 2.6.0)
CPU-Target: 64Bit
Wohnort: Ostsee

Re: MSI ausführen

Beitrag von Boneless »

Michl hat geschrieben:Hab ja nicht behauptet, dass das so nicht gänge (nur eben nicht *.msi direkt), eben getestet:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  P:TProcess;
begin
  P:=TProcess.Create(Nil);
  P.Executable:='C:\Windows\System32\msiexec.exe';
  P.Parameters.Add('-i');       
  P.Parameters.Add('MSInstaller.msi'); 
  P.Execute;
  P.Free;
end;
funktioniert ebenfalls :)
Ja :) er macht auch etwas.. also irgend etwas öffnet er dort. Aber es erscheint halt nicht das Fenster der MSI, wenn ich sie per Doppelklick starte. :( Habe auch ein Parameter '/k' hinzugefügt, um es nachzuvollziehen. Da erscheint bloß das Fenster (ich schätz mal) der msiexec

Code: Alles auswählen

program Boneless;
 
 {$mode Einsteiger}{H+}

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: MSI ausführen

Beitrag von Michl »

Das hat jetzt aber wahrscheinlich wirklich nichts mehr mit Lazarus zu tun. Doch ich würde den Fehler wie folgt suchen:

- Geht mal in das Verzeichnis, wo MSInstaller.msi liegt und starte es manuell
- Wenn das funktioniert, probierst Du den Start von Deinem Lazarus-Projekt-Verzeichnis aus (z.B. mit einer Start.bat)
- Wenn das funktioniert rufts Du die Start.bat in Deinem Projekt auf
- Wenn das funktioniert kannst Du MSInstaller.msi entsprechend Deiner Start.bat mittels einer zuvor geposteten Varianten direkt ausführen

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Boneless
Beiträge: 52
Registriert: So 1. Dez 2013, 14:15
OS, Lazarus, FPC: Windows 7 (L 1.0.14 - FPC 2.6.0)
CPU-Target: 64Bit
Wohnort: Ostsee

Re: MSI ausführen

Beitrag von Boneless »

OK bin alle Schritte durchgegangen. Jetzt hats geklappt. Der einzige Fehler, den ich gemacht hatte, war, zwei Anführungszeichen in der Batch zu vergessen.

Vorher:

Code: Alles auswählen

start "MSInstaller.msi"
Nachher:

Code: Alles auswählen

start "" "MSInstaller.msi"
Sry für dieses triviale Versehen ;)

Code: Alles auswählen

program Boneless;
 
 {$mode Einsteiger}{H+}

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: MSI ausführen

Beitrag von Michl »

Schön, dass es funktioniert!

Nur als Info, falls
Boneless hat geschrieben:start "" "MSInstaller.msi"
das der Inhalt Deiner *.bat ist,

könntest Du ihn einfach auch in

Code: Alles auswählen

MSInstaller.msi
ändern (ohne Anführungszeichen).

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Antworten