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

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

Аватара для R.i.m.s.k.y.

Ветеран


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

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


Цитата 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;

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Последний раз редактировалось R.i.m.s.k.y., 28-06-2010 в 09:19.


Отправлено: 09:02, 28-06-2010 | #1994