2017-11-05 13 views
0

일부 설치 프로그램에서 7zip으로 추출한 NSIS 스크립트를 이해하는 데 문제가 있습니다. 몇 가지 질문이 있습니다.NSIS 스크립트에서 멈춤

  1. 무엇보다 .onInit 함수가 실행됩니까?
  2. System::Call "* (&t256) p .r5 "의 의미는 무엇입니까? 문서에서 알 수 있듯이 새로운 구조가 생성되지만 &t256은 무엇입니까?
  3. r0-r10은 레지스터이므로 r0이 일부 문자열에 대한 포인터 인 경우 r0 값을 얻을 수 있습니까? 포인터 자체가 아니라 문자열이 필요합니다. Messagebox MB_OK "$r0" 포인터를 인쇄하십시오
  4. *$1(&t255 .r0)과 같은 전화가 있습니다. $ 1 값을 얻고 싶습니다.

+0

디 컴파일 된 스크립트를 보는 것이 NSIS를 배우는 가장 좋은 방법은 아닙니다. – Anders

답변

0
  • 예, .onInit가 실행되는 .NSI의 첫 번째 부분입니다 감사합니다. (내부적으로 .onInit을 호출하기 전에 InstallDirRegKey을 호출합니다.
  • t은 문자열 유형이며 C/C++에서 TCHAR과 같습니다. *(&t256)p.r5은 파일 이름을 저장할 수있는 256 자의 버퍼입니다. 메모리를 할당하고 주소를 $5에 저장합니다.

  • r0은 시스템 플러그 인 레지스터 구문으로 $R0이 아닌 NSIS 코드의 $0과 동일합니다 (다른 레지스터 임).

  • $1에 문자열이 포함되어있는 경우 *$1(&t255 .r0)$0에 문자열의 처음 255자를 추출/배치합니다.