Вопрос Установка файлов в зависимости от версии проги

Статус
В этой теме нельзя размещать новые ответы.

YegorkaGor

Мимокрокодил
Проблема в следующем.
Имеется программа, версия кот. прописана в реестре,
HKLM, 'Software\Myroed\Program\3.0\Common', 'Version', '3.0.1.2543'
Как осуществить выбор файлов, в зависимости от версии установленной проги (она будет меняться)?
Код:
[Files]
Source: \Myroed\ver\3.0.1.2543\*.*; DestDir: {app}\Myroed\Program\ru_RU\; AfterInstall: ExtLog(); Flags: ignoreversion; Check: ???_или_что_тут_прописать
Source: \Myroed\ver\3.0.1.2384\*.*; DestDir: {app}\Myroed\Program\ru_RU\; AfterInstall: ExtLog(); Flags: ignoreversion; Check: ???_или_что_тут_прописать
Source: \Myroed\ver\3.0.1.2344\*.*; DestDir: {app}\Myroed\Program\ru_RU\; AfterInstall: ExtLog(); Flags: ignoreversion; Check: ???_или_что_тут_прописать

[Code]
function ProgVersion(Default: String): Boolean; // проверяем версию установленной проги и передаем в check
var
sVersion: String;
begin
if not RegQueryStringValue(HKCU, 'Software\Myroed\Program\3.0\Common', 'Version', sVersion)
then
RegQueryStringValue(HKLM, 'Software\Myroed\Program\3.0\Common', 'Version', sVersion);
Result := sVersion
end;
ерунда, конечно, ничего не выходит. Помогите, очень нужно.
 

Хамик

Старожил
YegorkaGor, как вариант
Код:
[setup]
appname=app
appvername=app 1.0
defaultdirname={sd}\test

[Files]
Source: 1.txt; DestDir: {app}; Flags: ignoreversion; Check: ProgVersion;
Source: 1.txt; DestDir: {app}; DestName: 2.txt; Flags: ignoreversion; Check: ProgVersion2;
Source: 1.txt; DestDir: {app}; DestName: 3.txt; Flags: ignoreversion; Check: ProgVersion3;

[Code]
function ProgVersion: Boolean;
var
sVersion: string;
begin
if RegQueryStringValue(HKLM, 'Software\Myroed\Program\3.0\Common', 'Version', sVersion) then
  if sVersion = '3.0.1.2543' then
   Result := true;
end;
function ProgVersion2: Boolean;
var
sVersion: string;
begin
if RegQueryStringValue(HKLM, 'Software\Myroed\Program\3.0\Common', 'Version', sVersion) then
  if sVersion = '3.0.1.2384' then
   Result := true;
end;
function ProgVersion3: Boolean;
var
sVersion: string;
begin
if RegQueryStringValue(HKLM, 'Software\Myroed\Program\3.0\Common', 'Version', sVersion) then
  if sVersion = '3.0.1.2344' then
   Result := true;
end;
 

YURSHAT

Тех. админ
Администратор
YegorkaGor,
Код:
[Files]
Source: "Myroed\ver\3.0.1.2543\*.*"; DestDir: "{app}\Myroed\Program\ru_RU"; Flags: ignoreversion; Check: CheckVer('3.0.1.2543')
Source: "Myroed\ver\3.0.1.2384\*.*"; DestDir: "{app}\Myroed\Program\ru_RU"; Flags: ignoreversion; Check: CheckVer('3.0.1.2384')
Source: "Myroed\ver\3.0.1.2344\*.*"; DestDir: "{app}\Myroed\Program\ru_RU"; Flags: ignoreversion; Check: CheckVer('3.0.1.2344')

[Code]
function CheckVer(VerStr: String): Boolean;
var
  RegVerStr: String;
begin
  if not RegQueryStringValue(HKCU, 'Software\Myroed\Program\3.0\Common', 'Version', RegVerStr) then
    RegQueryStringValue(HKLM, 'Software\Myroed\Program\3.0\Common', 'Version', RegVerStr);
  Result := RegVerStr = VerStr;
end;
 

YegorkaGor

Мимокрокодил
Ребята, агромадное спасибо, всё работает-пашет! Вставил код YURSHAT, как наименее затратный и наглядный. Радует, что двигался в правильном направлении, но застрял на Check: ProgVersion(ExpandConstant()).
Ещё раз спасибо.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху