К сожалению никто по моему вопросику не ответил
посему копаю сам. Нарыл такую функцию function WizardSilent: Boolean;
Решил попробовать таким образом:
читать дальше »
Код:
//проверка на установленность и версию.
function DetectInstall(ProgName: string; ver: Integer): Boolean;
var
Names: TArrayOfString;
ResultDWord: Cardinal;
i: Integer;
msg: string;
begin
Result:= True;
if RegGetValueNames(HKEY_LOCAL_MACHINE, 'Software\***\***', Names) then
begin
for i:= 0 to GetArrayLength(Names)-1 do
if Lowercase(ProgName) = Lowercase(Names[i]) then
begin
RegQueryDWordValue(HKEY_LOCAL_MACHINE, 'Software\***\***', Names[i], ResultDWord);
if ResultDWord > ver then
begin
if WizardSilent then
Result:= False
else
msg:= 'Установленная версия *** новее.';
Result:= False;
MsgBox(msg, mbError, MB_OK);
end
else
if ResultDWord = ver then
begin
Result:= True;
end;
Break;
end;
end;
//Запись версии устанавливаемой программы.
RegWriteDWordValue(HKEY_LOCAL_MACHINE, 'Software\***\***', '***', 3);
end;
По логике если инсталяция silent то просто Result:= False а если обычная то
msg:= 'Установленная версия *** новее.';
Result:= False;
MsgBox(msg, mbError, MB_OK);
Но почему то в silent появляется пустое окошечко с кнопкой OK.
Вопрос снимается, решил сам. Если кому нужно прикладываю готовый код
читать дальше »
Код:
//проверка на установленность и версию.
function DetectInstall(ProgName: string; ver: Integer): Boolean;
var
Names: TArrayOfString;
ResultDWord: Cardinal;
i: Integer;
msg: string;
begin
Result:= True;
if RegGetValueNames(HKEY_LOCAL_MACHINE, 'Software\***\***', Names) then
begin
for i:= 0 to GetArrayLength(Names)-1 do
if Lowercase(ProgName) = Lowercase(Names[i]) then
begin
RegQueryDWordValue(HKEY_LOCAL_MACHINE, 'Software\***\***', Names[i], ResultDWord);
if ResultDWord > ver then
begin
if not WizardSilent then
Begin
msg:= 'Установленная версия *** новее.';
Result:= False;
MsgBox(msg, mbError, MB_OK);
end
else
Result:= False
end
else
if ResultDWord = ver then
begin
Result:= True;
end;
Break;
end;
end;
//Запись версии устанавливаемой программы.
RegWriteDWordValue(HKEY_LOCAL_MACHINE, 'Software\***\***', '***', 3);
end;