Цитата Schemer:
То как минимум должно выдать ошибку об отсутствие файла при установке »
|
А как Вы вызываете эту процедуру? Я из секции Files. Но можно еще через Event Function, почитайте в справке про CurStepChanged. Вашего кода я не вижу - кладу свой.
Код:
[Files]
;После копирования файлов будет запущена MeGUIavs
Components: MeGUI; Source: CodeRim\CodeRim\x264\*; DestDir: {app}\x264\; BeforeInstall: ChangeCaption('Установка MeGUI'); AfterInstall: MeGUIavs; Flags: ignoreversion uninsrestartdelete setntfscompression
[_Code]
procedure ChangeCaption(str: string);
begin
WizardForm.StatusLabel.Caption:= str;
end;
procedure RePlaceTextinFile(FilePath:string; find:string; replace:string);
var
S: TArrayOfString;
//str : string;
i : Integer;
begin
if not FileExists(FilePath) then begin MsgBox('Файл не найден', mbError, mb_Ok); Exit;end; // если файла нет, выходим
LoadStringsFromFile(FilePath, S); // загружаем файл
for i:= 0 to GetArrayLength(S)-1 do begin
if (Pos(AnsiUpperCase(find), AnsiUpperCase(S[i])) > 0) then begin
StringChangeEx(S[i], find, replace, True);
end;
end;
SaveStringsToFile(FilePath, S, False); // сохраняем файл
end;
procedure MeGUIavs;
var plugindir2_5 : String;
begin
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\AviSynth','plugindir2_5', plugindir2_5);
RePlaceTextinFile(ExpandConstant('{app}\x264\Megui\allprofiles\AviSynth\AviSynth_dp_ DeBlock.xml'), 'import("', 'import("'+plugindir2_5+'\');
end;
end.
Цитата Schemer:
А какой инно сетап нужен »
|
В инно не нужны гонки за версией. У меня стоит Inno Setup Compiler 5.3.7 и ISPP 5.3.6, к примеру на 198 странице у камрада SeDmY не клеилось из-за юникод версии инно.
Цитата cleric1985_n:
Подскажите как заставить выполнятся следующее задание из секции Code »
|
Читаем про CurStepChanged
Код:
Procedure CurStepChanged(CurStep: TSetupStep);
Begin
if CurStep = ssInstall then BackupData(ваши параметры)
End;
А вообще странно, если в тихом режиме применяется Registry, то должна отработать и BeforeInstall: BackupData('ext1'). В коде подставьте MsgBox('???', mbError, mb_Ok) - будет видно что где происходит (или не происходит).
Реестр можно бэкапить вот так, кстати если данные в реестре заковыристые вы уверены что RegWriteStringValue(HKCR, '.' + FileExt + '(backup)', '', OldValueData) правильно их выгрузит?
Код:
procedure BackupReg();
var
res, i, k: Integer;
reg0, reg, RegEdit: string;
Key: TArrayOfString;
begin
RegEdit:= ExpandConstant('{sys}\reg.exe');
reg0:= ExpandConstant('{app}\BackUp');
Key:= ['HKLM\SOFTWARE\GNU',
'HKEY_CURRENT_USER\SOFTWARE\GNU',
];
for i:= 0 to GetArrayLength(Key)-1 do begin
reg := reg0 + IntToStr(i) + '.reg';
if not FileExists(reg) then begin Exec(RegEdit, ' export ' + AddQuotes(Key[i]) + ' ' + AddQuotes(reg), ExpandConstant('{sys}'), SW_HIDE, ewWaitUntilTerminated, res);
end;
end;