2017-02-08 4 views
0

IfFileExists의 $의 WINDIR \ system32를 \ 드라이버 \ pcitdrv.sys file_found FILE_NOT_FOUND
file_found :
메시지 박스 MB_OK FileFound
FILE_NOT_FOUND :
메시지 박스 MB_OK FileNotFoundNSIS 스크립트 수 없습니다

이 코드는 해당 파일이 해당 경로에 존재하더라도 코드의 file_not_found 부분을 항상 실행합니다.

또한 아래의 방법으로 시도 :

기능 AB
바르/GLOBAL OnlineOrOffline
$ {찾기} "$의 WINDIR \ system32를 \ 드라이버 \" "/ L = F /M=pcitdrv.sys" " SetOnlineOfflineVarliable "
메시지 박스 MB_OK $ OnlineOrOffline
FunctionEnd

기능 SetOnlineOfflineVarliable
strcpy를 $ R0 $ R9
strcpy를 $ OnlineOrOffline 발견" "
strcpy를 $ 0 StopLocate
또한 콜백 함수가 호출되지 않습니다이 시나리오에서는 $ 0
FunctionEnd

을 밀어 .

관련 도움이 필요하십니까?

또는 단순히

내 요구 사항에 $ WINDIR와 PC를 가정한다/system32를/드라이버/pcitdrv.sys가있는 파일을 다른 PC가 그 파일을 가지고 있지 않습니다. 설치 중에는 일부 라이센스가 있는지 확인합니다. 파일 존재 여부에 따라 라이센스 검사를 건너 뛸 수 있습니까?

+0

인가이 64 비트에서 일어나는 윈도우? – Anders

답변

0

64 비트 버전의 Windows에서 32 비트 응용 프로그램을 실행하는 경우 파일 시스템의 일부는 redirected입니다.

$ windir \ system32가 $ windir \ SysWOW64로 리디렉션됩니다. 당신이 윈도우 XP 64 비트 support 신경 쓰지 않는 경우

!include x64.nsh 
Section 

${DisableX64FSRedirection} 
StrCpy $0 "" 
IfFileExists "$windir\system32\drivers\pcitdrv.sys" 0 +2 
StrCpy $0 "1" 
${EnableX64FSRedirection} 

StrCmp $0 "" 0 file_found 
MessageBox MB_OK FileNotFound 
goto done 
file_found: 
MessageBox MB_OK FileFound 
done: 

SectionEnd 

는 항상 "진짜"system32를 액세스하는 특별한 의사 폴더를 사용할 수 있습니다 검사를 수행 할 때

당신은 재 지정을 해제 할 수 있습니다 폴더 :

Section 

IfFileExists "$windir\system32\drivers\pcitdrv.sys" file_found ; Check on 32-bit Windows 
IfFileExists "$windir\sysnative\drivers\pcitdrv.sys" file_found ; Check on 64-bit Windows 

MessageBox MB_OK FileNotFound 
goto done 
file_found: 
MessageBox MB_OK FileFound 
done: 

SectionEnd 
+0

가. 그것은 작동합니다. 그러나 0이가 할 않는 것을 감사드립니다. 또한 것이다 모든 비트 버전이 스크립트를 사용할 수 있습니까? 같은 32/64도 –

+0

0 점프 없음, +2 이것과 다음 명령을 건너 뜁니다. 어디에서나 작동해야합니다. – Anders

+0

오! Anders 고맙습니다. –

0

한 번 더 의심의 여지가 실제로
$ {DisableX64FSRedirection}
strcpy를 $ 0 ""
IfFileExists "$의 WINDIR \ system32를 \ 드라이버 \ pcitdrv.sys"0이
strcpy를 $ 0 "1"
$ {EnableX64FSRedirection}
STRCMP $ 0 ","0 file_found
$ {DisableX64FSRedirection}
strcpy를 $ 0 ""
IfFileExists "$ windir \ system32 \ drivers \ tcitdrv.SYS "0이
strcpy를 $ 0"1 "
$ {EnableX64FSRedirection}
STRCMP $ 0", "0 file_found
고토 수행
file_found :

완료 :
나는 두 파일의 PCIT을 확인하고 싶습니다 및 tcit.
이 맞습니까?