2013-05-16 2 views
6

설치하기 전에 어떻게 사용자 파일을 복사, 이동, 이름 변경 할 수 있습니까?InnoSetup - 설치하기 전에 파일 복사

우리는 쉽게 [InstallDelete] 섹션 사용하여 파일을 삭제할 수 있습니다

[InstallDelete] 
Type: files; Name: "{app}\SomeFile.exe"; 

우리가 할 수있는 사본을, 비슷한 방식으로 이름을 변경?

편집 : [파일] 섹션에서 만들려고

하지만 소스 파일이 존재하지 않기 때문에 내가 컴파일하는 동안 오류가 발생 : 당신이 [Files] 섹션을 사용할 수 있습니다

[Files] 
Source: "{app}\SomeFile.exe"; DestDir: "{app}\SomeDir\SomeFile.exe"; 
+0

소스 파일이 존재하지 않을 경우, 어떻게 InnoSetup 설치에 포함하도록되어 : 내부적으로 같은 동작을 그대로 둘은 RenameFile 기능을 사용할 수 있습니까? –

+1

@Thorsten, 당신은 ['external'] (http://www.jrsoftware.org/ishelp/index.php?topic=filessection&anchor=external) 플래그를 사용할 수 있습니다.하지만 작동한다고하더라도 나쁜 생각입니다. – TLama

+0

@Thorsten : 설치시이 파일을 포함하고 싶지 않습니다. 이들은 사용자가 파일을 저장할 경우 응용 프로그램의 다른 하위 디렉토리로 이동하려는 파일을 저장합니다. –

답변

8

파일을 복사하는 경우 ,하지만 거기에 이동하거나 작업의 이름을 바꿀 섹션이 있다고 생각하지 않습니다, 그래서 나는 이것을 위해 [Code] 섹션을 사용하도록 제안 할 것입니다.

다음은 이동 및 이름 바꾸기 작업의 샘플 코드입니다.

[Code] 
procedure CurStepChanged(CurStep: TSetupStep); 
begin 
    if CurStep = ssInstall then 
    begin 
    // move file 
    if not RenameFile(ExpandConstant('{app}\SomeDir\SomeFile.exe'), ExpandConstant('{app}\SomeFile.exe')) then 
     MsgBox('File moving failed!', mbError, MB_OK); 
    // rename file 
    if not RenameFile(ExpandConstant('{app}\SomeFile.exe'), ExpandConstant('{app}\RenamedSomeFile.exe')) then 
     MsgBox('File moving failed!', mbError, MB_OK); 
    end; 
end; 
+1

감사합니다! 그냥 [코드] 기능을 사용하여 이동 코드를 배치하는 방법을 찾고있었습니다. procedure CurStepChanged (CurStep : TSetupStep); 잘 될 것입니다. 더 좋은 점은 사용자에게 내가 저장 파일을 옮겼다는 것을 경고 할 수 있습니다. –

+0

당신을 진심으로 환영합니다! 그리고 예, 그건 공평하게 들립니다 :-) – TLama

+1

사용자 파일은'{user *}'폴더 중 하나에 있어야하며 설치 프로그램을 사용하여 이동할 수는 없습니다. 설치 프로그램은 한 사용자 만 실행하지만 여러 사용자가 응용 프로그램을 사용하고있을 수 있습니다. 그것들을 관리하는 것은 응용 프로그램 자체의 책임이어야합니다. – Miral

관련 문제