2014-09-08 1 views
1

구성 요소가 선택되거나 전체 설치가 선택된 경우 파일의 이름을 바꾸려고합니다. 그러나 몇 가지 문제가 있습니다.Inno 구성 요소가 선택된 경우 파일 이름 바꾸기

Line 55; 
Column 5; 
Identifier expected; 

아래 procedure CurStepChanged(CurStep: TSetupStep); 줄 것이다 : 나는 그것을 실행하면

가 나는 오류가 발생합니다.

[Code] 
function GetFileName(const AFileName: string): string; 
begin 
    Result := ExpandConstant('{app}\' + AFileName); 
end; 

procedure AfterInstallProc; 
begin 
    If IsComponentSelected('update') or IsComponentSelected('full') then 
    begin 
    procedure CurStepChanged(CurStep: TSetupStep); 
    begin 
     if (CurStep = ssInstall) then 
     begin 
     if not FileExists(GetFileName('update.old.dat')) then 
      RenameFile(GetFileName('update.dat'), GetFileName('update.old.dat')); 
     end; 
    end; 
    else 
    result := true; 
    end; 
end; 

여기에 내 질문을 검색 할 때이 코드가 있음을 기억하십시오. 나는 그것을 정확하게 수행하고 있는지 확신하지 못한다. 구성 요소 선택과 같은 일부 오류가 수정되었지만 파일 이름을 바꾸는 절차가 잘못되었습니다.

+1

당신이 IsComponentSelected' 기능이 올바른지'호출하지만, 어떤 이유로 당신이 당신의 코드에 이벤트 방법을 인라인을 시도한 부분입니다. 그건 불가능합니다. 여러분은'CurStepChanged'에 대한 핸들러를 작성하거나 설치 후 절차를 만들 수 있습니다. – TLama

+0

확인. 그래서 나는 혼란 스럽다. CurStepChanged 란 무엇입니까? 이 경우에 필요합니까? 기본적으로 업데이트가 적용될 경우 이름을 바꿀 필요가있는 파일 하나입니다. – WASasquatch

+1

'CurStepChanged' 메쏘드는 Inno Setup이 특정 단계를 시작하거나 끝낼 때 호출되는 이벤트 메쏘드입니다. 그리고이 경우는'ssInstall' 단계를위한'CurStepChanged' 이벤트 핸들러를 작성하는 것이 좋습니다. – TLama

답변

2

쓰기이 대신 :

procedure CurStepChanged(CurStep: TSetupStep); 
begin 
    if (CurStep = ssInstall) and (IsComponentSelected('full') or 
    IsComponentSelected('update')) then 
    begin 
    if not FileExists(GetFileName('update.old.dat')) then 
     RenameFile(GetFileName('update.dat'), GetFileName('update.old.dat')); 
    end; 
end; 
+0

굉장히 효과가 있지만, 이름 바꾸기가 아닙니다. 서브 디렉토리와 확장자를 고려하지 않습니까? 예를 들어 하위 디렉토리를 설명하기 위해 Result : = ExpandConstant ('{app} db \'+ AFileName); '를 수행해야합니까? 확장 프로그램에 대해서는 확실하지 않습니다. – WASasquatch

+1

서면으로 작동합니다. 응용 프로그램 디렉토리에'update.old.dat' 파일이 없는지 확인하고 있습니다. 그런 파일이 없다면'update.dat' 파일 (당연히 있어야합니다)의 이름을'update.old.dat '. 'db' 서브 디렉토리의 경우'Result : = ExpandConstant ('{app} \ db \'+ AFileName);'. – TLama

+0

Gotchya! 감사! 나는 나의 점검 논리를 거꾸로 가지고 있었다. – WASasquatch