내 NSIS 스크립트를 컴파일 할 때 (내 버전 번호를 계산하는) 함수를 호출하고 싶지만 실행 중에는 호출하지 않으려합니다. 이것이 가능한가? nsExec
과 기본 문자열 조작 기능을 사용합니다.스크립트를 컴파일하는 동안 NSIS에서 함수를 호출하는 방법은 무엇입니까?
1
A
답변
1
달콤한! 그것은 가능 : 볼 http://nsis.sourceforge.net/Invoking_NSIS_run-time_commands_on_compile-time
기본 개념은 다음과 같습니다
- 는 기본 스크립트 (컴파일시에,
!system
통해) 실행 - 실행을 실행 파일을 생성하는 별도의 스크립트를 컴파일 - 그리고 이렇게하면 텍스트 파일이 생성됩니다 (
!define
). !include
메인 스크립트의 텍스트 파일
및 presto! 스크립트에서 컴파일 할 때 생성되는 내용이 있습니다.
2
이 작업을 수행 할 수 있습니다 :
!system '"calculate_version.exe" "tempfile.tmp"'
!searchparse /file "tempfile.tmp" `APP_VERSION=` APPVERSION
이가하는 일 : calculate_version.exe를 호출 (이 함수를 호출하는 간단한 NSIS 스크립트 될 수있다). 이 실행 파일은 tempfile.tmp에 버전 번호를 출력해야합니다. 버전의 형식은 중요하지 않습니다. 이 예제에서는 "APP_VERSION = something"(WriteINIStr
을 사용하여 작성할 수 있음)을 선택했습니다.
다음 줄에 임시 파일을 열고 우리가 쓴 줄을 검색합니다. 그런 다음 우리가 찾은 곳으로 $ {APPVERSION}을 설정합니다.
필자가 인용 한 기사에서 아이디어를 선호한다. (실제로는 당신과 거의 같다) 어려운 스크립트가 필요한 스크립트를 분석하는 대신 연관된 스크립트 (작성! 메인 스크립트. –
포인트가 있습니다. 반면에, 나는 주어진 프로그램의 출력 일 수도 아닐 수도있는 파일에서 컴파일하는 아이디어를 정말 좋아하지 않는다. 선호도의 문제, 나는 =) – Piskvor