Имя пользователя:
Пароль:
 

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

Ветеран


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

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


Цитата Dark Engel:
Где ключ это признак установленности программы, а значение это версия. »
Пример
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[Code]
function DetectInstall(ProgName: string; ver: Integer): Boolean;
var
  Names: TArrayOfString;
  i: Integer;
  s, msg: string;
begin
  Result:= True;
  if RegGetSubkeyNames(HKEY_LOCAL_MACHINE, 'Software\UIT\FAP', Names) then
    begin
      for i:= 0 to GetArrayLength(Names)-1 do
        if Pos(ProgName, Names[i]) > 0 then
          begin
            // обрабатываем строку, с учётом, что она выглядит в таком формате: proga 1
            s:= Trim(Copy(Names[i], Pos(ProgName, Names[i]) + Length(ProgName),
                Length(Names[i]) - Length(ProgName)));
            if StrToInt(s) > ver then
              begin
                msg:= 'Установленная версия новее.';
                Result:= False;
              end
            else msg:= 'Рекомендуется обновить программу.';
            if StrToInt(s) = ver then
              Result:= False
            else MsgBox(msg, mbInformation, MB_OK);
            Break;
          end;
    end;
end;

function InitializeSetup(): Boolean;
begin
  // указываем название нашей программы и её версию
  Result:= DetectInstall('proga1', 1);
end;


Цитата R.i.m.s.k.y.:
как засунуть код в цикл »
Пример
Код: Выделить весь код
procedure BackupReg();
var
  res, i: Integer;
  BackupDir, RegEdit: string;
  Key: TArrayOfString;
begin
  RegEdit:= ExpandConstant('{win}\regedit.exe');
  BackupDir:= ExpandConstant('{pf}\InstallShield Installation Information\$RimPackUninstall$\');
  Key:= ['HKEY_LOCAL_MACHINE\SOFTWARE\GNU',
         'HKEY_CURRENT_USER\SOFTWARE\GNU'];
  for i:= 0 to GetArrayLength(Key)-1 do
    Exec(RegEdit, ' -ea ' + IntToStr(i) + '.reg ' + AddQuotes(Key[i]), BackupDir, SW_HIDE, ewNoWait, res);
end;

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:47, 10-12-2009 | #617