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

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

Пользователь


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

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


Dimon585h, есть один старый пример проверки файла по md5 и путь тут берется из реестра. если файл не найден,то нужно указать его. Думаю в твоем случае это нужно.
читать дальше »
Код: Выделить весь код
#define Key "HKLM\SOFTWARE\7-Zip" 
#define Subkey "Path" 
#define Filename "7zFM.exe" 
#define MD5 "6c14c21147452b73ddd51a1af9be0a87" 
 
[Setup] 
AppName=MyApp 
AppVerName=MyApp 
DefaultDirname={pf}\MyApp 
 
[CustomMessages] 
DirBrowseMessage=Пожалуйста, укажите расположение программы MyApp 
 
[code ] 
var 
Root: Integer; DestDir, Key, Subkey: String; 
 
function GetRegPath(): String; 
var str1, str2: string; 
begin 
str1:=Copy('{#Key}', 1, Pos('\', '{#Key}')-1); 
case AnsiUppercase(str1) of 
  'HKLM': Root:= HKLM; 'HKCU': Root:= HKCU; 
  'HKCR': Root:= HKCR; 'HKU':  Root:= HKU; 
  'HKCC': Root:= HKCC; 
end; 
Key:=Copy('{#Key}', Pos('\', '{#Key}')+1, Length('{#Key}')); 
Subkey:='{#Subkey}'; Result:=''; 
If RegQueryStringValue(Root, Key, Subkey, str2) then 
  if str2<>'' then Result:=str2 
end; 
 
Function CheckPath(Path, Filename, MD5: String): Boolean; 
begin 
Result:= False; 
If FileExists(AddBackslash(Path)+Filename) then 
  if AnsiUpperCase(GetMD5OfFile(AddBackslash(Path)+Filename))=AnsiUppercase(MD5) then Result:=True; 
end; 
 
Function GetPath(): Boolean; 
var Check, Cancel: Boolean; 
begin 
DestDir:=GetRegPath(); Check:=CheckPath(DestDir, '{#Filename}', '{#MD5}'); 
if Check = False then 
begin 
  repeat 
  Cancel:=BrowseForFolder(ExpandConstant('{cm:DirBrowseMessage}'), DestDir, False); 
  Check:=CheckPath(DestDir, '{#Filename}', '{#MD5}'); 
  until (not(Check=False))or(not Cancel); 
end; 
if (Check = True) then Result:=Check else Result:= Cancel; 
end; 
 
Function InitializeSetup(): Boolean; 
begin 
Result:= GetPath;
end; 
 
procedure InitializeWizard(); 
begin 
WizardForm.DirEdit.Text:= DestDir; 
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:03, 29-11-2013 | #1564