NSIS 檔案判斷存在與否/判斷檔案是否存在(IfFileExists Changes Section Flags)

NSIS 檔案判斷存在與否/判斷檔案是否存在(IfFileExists Changes Section Flags)

NSIS 檔案判斷存在與否/判斷檔案是否存在(IfFileExists Changes Section Flags)


 

資料來源:http://nsis.sourceforge.net/IfFileExists_Changes_Section_Flags

!include Sections.nsh
 
Name TestSelectSection
OutFile "TestSelectSection.exe"
 
Page components
Page instfiles
ShowInstDetails show
 
; This file will exist on most computers
Section /o "autoexec.bat detected" autoexec_detected
MessageBox MB_OK autoexec
SectionEnd
 
Section /o "Boot.ini detected" boot_detected
MessageBox MB_OK boot
SectionEnd
 
Section /o "non-existing file detected" missing_detected
MessageBox MB_OK missing
SectionEnd
 
Function .onInit
IfFileExists C:\autoexec.bat AutoexecExists PastAutoexecCheck
AutoexecExists:
  ; This is what is done by sections.nsh SelectSection macro
  SectionGetFlags "${autoexec_detected}" $0
  IntOp $0 $0 | ${SF_SELECTED}
  SectionSetFlags "${autoexec_detected}" $0
 
PastAutoexecCheck:
IfFileExists C:\boot.ini BootExists PastBootCheck
BootExists:
  ; Use the macro from sections.nsh
  !insertmacro SelectSection ${boot_detected}
 
PastBootCheck:
IfFileExists C:\xyz_missing.xyz MissingExists PastMissingCheck
MissingExists:
  !insertmacro SelectSection ${missing_detected}
 
PastMissingCheck:
FunctionEnd

——————————————————————-

如果計劃執行要麼塊或另一個塊,不要忘記跳過第二塊。

這樣一個簡單的例子是:

IfFileExists "$INSTDIR\file.txt" file_found file_not_found 
file_found: 
StrCpy $0 "the file was found" 
goto end_of_test ;<== important for not continuing on the else branch 
file_not_found: 
StrCpy $0 "the file was NOT found" 
end_of_test: 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *