2009-07-09 2 views
4

다른 조건에서 약간 다른 버전을 생성 할 수 있도록 NSIS 기반 설치 프로그램이 있습니다.파일 존재시 NSIS 스크립트 조건 컴파일

컴파일 타임에 조건을 쉽게 설정할 수 있습니다. 특정 파일이 디스크에 있으면 대체 브랜딩을 사용할 수 있습니다. 이 동작을 제공하기 위해 makensis.exe에 명령 줄 옵션을 사용할 수는 있지만 컴파일러가이 문제를 해결할 수 있다면 좋을 것입니다.

"IfExist"유형 논리를 컴파일하는 방법이 있습니까?

답변

6
!macro CompileTimeIfFileExist path define 
!tempfile tmpinc 
!system 'IF EXIST "${path}" echo !define ${define} > "${tmpinc}"' 
!include "${tmpinc}" 
!delfile "${tmpinc}" 
!undef tmpinc 
!macroend 

Section 
!insertmacro CompileTimeIfFileExist "$%windir%\explorer.exe" itsThere 
!ifdef itsThere 
MessageBox mb_Topmost yes 
!else 
MessageBox mb_Topmost no 
!endif 
SectionEnd 

참고 :!의 여기에 사용되는 시스템 명령은 내가 당신의 메커니즘을하는 방법을 볼 수 있지만 당신이

+0

Windows를 사용하는 데 제한이 있습니다. 나는 카일과 함께 내일 스핀을 받으러 코드를 가져갈 것이다. 감사. –

2

컴파일 타임 파일 탐지에 대한 일반적인 질문에 대한 답변이 없지만 수행하려고하는 것처럼 들리는 부분에 대한 해결책이 있습니다. 주요 설치 스크립트에서

!define CUSTOM_BRANDING 
!define APPNAME "Brand X" 
!define LOGO "C:\Brand_X_Logo.png" 

:

파일 CustomBranding.nsh에서 :

내 설치는 다음과 같이 사용

!include /NONFATAL "CustomBranding.nsh" 
!ifndef CUSTOM_BRANDING 
    !define APPNAME "Generic" 
    !define LOGO "C:\Generic_Logo.png" 
!endif 

인가 그 "다른 브랜드의 종류 "너는 묻고있어?

+0

글쎄, 내 경우에는 브랜드가 아니라 설치 프로그램보다 제품이다 창에 컴파일 가정 그걸 써. 나는 내일 사무실로 돌아올 때 당신의 해결책을 시도하고 Ander의 해결책을 살펴볼 것입니다. –