Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Dark Engel

Старожил


Сообщения: 150
Благодарности: 12

Профиль | Отправить PM | Цитировать


К сожалению никто по моему вопросику не ответил посему копаю сам. Нарыл такую функцию 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;

-------

"Чем больше мы умнеем, тем больше понимаем что мы глупцы."


Последний раз редактировалось Dark Engel, 21-12-2009 в 13:40.


Отправлено: 11:55, 21-12-2009 | #728