2009-02-09 2 views

답변

1

달콤한! 그것은 가능 : 볼 http://nsis.sourceforge.net/Invoking_NSIS_run-time_commands_on_compile-time

기본 개념은 다음과 같습니다

  1. 는 기본 스크립트 (컴파일시에, !system 통해) 실행
  2. 실행을 실행 파일을 생성하는 별도의 스크립트를 컴파일 - 그리고 이렇게하면 텍스트 파일이 생성됩니다 (!define).
  3. !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}을 설정합니다.

+0

필자가 인용 한 기사에서 아이디어를 선호한다. (실제로는 당신과 거의 같다) 어려운 스크립트가 필요한 스크립트를 분석하는 대신 연관된 스크립트 (작성! 메인 스크립트. –

+0

포인트가 있습니다. 반면에, 나는 주어진 프로그램의 출력 일 수도 아닐 수도있는 파일에서 컴파일하는 아이디어를 정말 좋아하지 않는다. 선호도의 문제, 나는 =) – Piskvor

관련 문제