hmmm ich komme gerade einfach nicht weiter.
Ich habe es mir nun so eingestellt das er sich den Pfad aus der Registry holt und überprüft, sollte der Pfad nicht gefunden werden so bricht er mit einer Fehlermeldung zum manuellen deinstallieren ab und gut ist. Findet er den Pfad kommt die Meldung des Versionsunterschiedes, jedoch startet er nicht meine angegebene unins000.exe und ich sehe nicht warum, er bricht dann auch einfach alles ab.
Delphi-Quellcode:
Result := (SetupMajor > SavedMajor)
or ((SetupMajor = SavedMajor)
and (SetupMinor >= SavedMinor));
if(
not Result)
then
begin
if RegQueryStringValue(
HKLM,'
{#UNINSTKEY}','
InstallLocation',DOSBoxCAE2000Path)
then
begin
result := DirExists(DOSBoxCAE2000Path);
end;
if not Result
then
begin
MsgBox(ExpandConstant('
{cm:DOSBoxPathNotFound}'),mbError,MB_OK);
ResultDOSBoxCAE2000PathCheck := false;
end else
if MsgBox(Format(ExpandConstant('
{cm:NewerAppFound}'),[DecodeVersion(SavedMajor,SavedMinor)]),mbConfirmation,MB_YESNO) = IDYES
then;
begin
Exec(ExpandConstant('
>'),'
DOSBoxCAE2000Path\unins000.exe','
',SW_SHOW,ewWaitUntilTerminated,ResultCode);
end;
end;
Edit: Den Abbruch des Setups rufe ich halt hier auf (nur zur Veranschaulichung)
Delphi-Quellcode:
function InitializeSetup: boolean;
begin
UserFolderCAE := '';
Result := true;
Result := IsSetupNewer;
if ResultDOSBoxCAE2000PathCheck = false then
begin
result := false;
end;
end;