2015-01-06 2 views
0

파일이 있는지 확인하고 다른 디렉토리로 복사하려고합니다. 불행히도 파일은 AppData 폴더에 있습니다.NSIS AppData에서 파일 검색 및 복사

CheckFile: 
     !define INSTDIR_DATA "$APPDATA\Local\VirtualStore\Program Files\SomeFolder" 
     IfFileExists INSTDIR_DATA\SettingsFile.ini CopyOver NotHere 

문제없이이 섹션에 들어가지만 명시 적으로 파일이 있는지 확인하는 것처럼 보이지 않을 수 있습니다. 내가 놓친 게 있니? 현재 사용자 디렉토리를 통해이 디렉토리를 검색해야하므로 모든 사용자에게이 디렉토리를 설정하지 않아도됩니다. 내 시스템에

DetailPrint $AppData 
DetailPrint $LocalAppdata 

이 인쇄 :

C:\Users\Anders\AppData\Roaming 
C:\Users\Anders\AppData\Local 

$의 AppData 실제로의 AppData "루트"하지만 그것의 로밍 일부가 아닌

답변

0

NSIS는 $을 LocalAppData 상수를 가지고있다.

스크립트에 RequestExecutionLevel 특성이있는 경우 Windows가 파일 시스템 리디렉션을 처리하는 방법에 영향을 미치고 VirtualStore가 그 일부입니다.

+0

이렇게하면 도움이되지만 여전히 제대로 작동하지 않습니다. "$ LocalAppdata \ VirtualStore \ Program Files \ Atari \ Nerf \ System"으로 올바르게 정의되어 있습니까? 관리자 권한으로이 기능을 실행하려고 할 때 현재 실행 수준을 명시 적으로 설정하지 않았습니까? VirtualStore에서 파일 찾기/복사에 정확히 어떤 영향을 미칩니 까? – Rajada

+0

define을 사용하는 구문은 $ {name}이므로 실제 코드가 IfFileExists "$ {INSTDIR_DATA} \ ..."를 사용하기를 바랍니다. 실행 수준은 VirtualStore에서 파일을 찾는 데 실제로 영향을주지 않아야하지만 설정하지 않고 상승되지 않은 경우에는 $ ProgramFiles (http://support.microsoft.com/kb/)로 복사 할 수 없습니다. 927387 # MT3). 여전히 작동시키지 못한다면 Microsoft/Sysinternals의 프로세스 모니터를 사용하여 현재 사용중인 경로가 무엇인지 확인해야합니다. – Anders

+0

아, 그런 식으로 간과 할 것입니다. 감사! – Rajada