Hallo,
gegeben Delphi 11.3 und mein versuch per SHell Execute einen Installer von mir aufzurufen.
Delphi-Quellcode:
function TMyClass.RunInstaller(
const FileName, FTempPath:
string): Boolean;
var
ErrorCode : UInt32;
Param :
string;
begin
Param := '
';
Winapi.ShellAPI.ShellExecute(0, PWideChar('
open'), PWideChar(FileName),
PWideChar(Param), PWideChar(FTempPath), SW_SHOW);
ErrorCode := GetLastError;
if (ErrorCode <= 32)
then
begin
WriteLogMsg('
Fehler beim Ausführen des Installers:' +
FileName + '
Code: ' + ErrorCode.ToString + '
Msg.: ' +
System.SysUtils.SysErrorMessage(ErrorCode, 0));
Result := false;
end
else
Result := true;
end;
Mein Problem ist jetzt, dass der Installer problemlos gestartet wird, aber ErrorCode
immer 0 ist und die per SysErrorMessage abgeholte Fehlermeldung lautet: "Der Vorgang
wurde erfolgreich beendet".
Ja wie nun? Warum sagt dann Microsoft hier:
https://learn.microsoft.com/en-us/wi...-shellexecutea
dass Rückgabewerte <= 32 Fehlercodes sind und 0 wäre "The operating system is out of memory or resources.",
was ja wohl definitiv nicht stimmen kann, denn der Installer startet ja.
Was mache ich falsch?
Grüße
TurboMagic