2017-03-09 21 views
1

를 설치이 잘 작동 그들이노 설정 : 백업 외부 파일 전에 나는 <code>[InstallDelete]</code> 섹션 전에 파일 및 폴더의 백업을 만들 것입니다 삭제 섹션

[Files] 
Source: "{app}\res_mods\configs\wotstat\cache.json"; \ 
    DestDir: "{app}\_backup\res_mods_{#DateTime}\configs\wotstat\"; \ 
    Flags: external skipifsourcedoesntexist uninsneveruninstall 
Source: "{app}\res_mods\0.9.17.1\vehicles\*"; \ 
    DestDir:"{app}\_backup\res_mods_{#DateTime}\0.9.17.1\vehicles\"; \ 
    Flags: external skipifsourcedoesntexist createallsubdirs recursesubdirs uninsneveruninstall 

을 삭제합니다. 그러나, 내가

[InstallDelete] 
Type: filesandordirs; Name: "{app}\mods\*.*"; Tasks: cleanres 
Type: filesandordirs; Name: "{app}\res_mods\*.*"; Tasks: cleanres 

을 선택하면 어떤 파일이 내가 만든 작동 수있는 방법

를 저장하지 않습니다. Thx

+0

'{#DateTime} '은 무엇입니까? –

+0

날짜 및/또는 시간을 이름 폴더에 넣으려면. #define DateTime GetDateTimeString ('dd/mm/yy', '-', '');와 함께 사용하십시오. . [링크] (http://www.jrsoftware.org/ispphelp/index.php?topic=getdatetimestring) –

+0

그러나 어떤 날짜/시간? - 어떻게 지어? –

답변

1

[InstallDelete] 섹션은 [Files] 섹션 전에 처리됩니다 (예상대로). installation order을 참조하십시오.

[Code] 

procedure CurStepChanged(CurStep: TSetupStep); 
var 
    SourcePath: string; 
    DestPath: string; 
begin 
    if CurStep = ssInstall then 
    begin 
    SourcePath := ExpandConstant('{app}\res_mods\0.9.17.1\vehicles'); 
    DestPath := ExpandConstant('{app}\_backup\res_mods_{#DateTime}\0.9.17.1\vehicles'); 
    Log(Format('Backing up %s to %s before installation', [SourcePath, DestPath])); 
    if not ForceDirectories(DestPath) then 
    begin 
     Log(Format('Failed to create %s', [DestPath])); 
    end 
     else 
    begin 
     DirectoryCopy(SourcePath, DestPath); 
    end; 

    SourcePath := ExpandConstant('{app}\res_mods\configs\wotstat\cache.json'); 
    DestPath := ExpandConstant('{app}\_backup\res_mods_{#DateTime}\configs\wotstat'); 
    if not ForceDirectories(DestPath) then 
    begin 
     Log(Format('Failed to create %s', [DestPath])); 
    end 
     else 
    begin 
     if not FileCopy(SourcePath, DestPath + '\cache.json', False) then 
     begin 
     Log(Format('Failed to copy %s', [SourcePath])); 
     end 
     else 
     begin 
     Log(Format('Backed up %s', [SourcePath])); 
     end; 
    end; 
    end; 
end; 

코드가 Inno Setup: copy folder, subfolders and files recursively in Code section에서 DirectoryCopy 함수를 사용하여

당신은 설치가 시작되기 전에 일어나는 CurStepChanged(ssInstall) event에서 백업을 코딩 할 수 있습니다.

+0

코드와 함께 unknow 식별자 소스 경로를 가지고 –

+0

다른 질문에서'DirectoryCopy'를 복사 했습니까? –

+0

아니지만 동일 함 –