내가 나중에 같은 설치 프로그램에 포함 할 임시 파일에 NSIS 코드를 추가 해요 :
이...
!tempfile includeInSectionA
...
!appendfile '${includeInSectionA}' '<some NSIS code>$\n'
...
Section "A" SEC_A
!include '${includeInSectionA}'
SectionEnd
...
내가 임시 파일에 추가하려는 일부 NSIS 코드가 포함 변수 (또는 정의, 동일한 문제) ${variable}
같은 :
Var variable
StrCpy ${variable} 'contentOfVariable'
...
!appendfile '${includeInSectionA}' 'DetailPrint "Variable: ${variable}"$\n'
문제 : 컨텐츠가 가지고 있기 때문에 변수가 아닌 임시 파일에 추가시, 임시 파일 포함시 확장한다 그동안 변경된 내용 :
!appendfile '${includeInSectionA}' 'DetailPrint "Variable: ${variable}"$\n'
; --> DetailPrint "Variable: contentOfVariable" ; WRONG
; --> DetailPrint "Variable: ${variable}" ; RIGHT
그래서 어떻게 든 이스케이프해야합니다.
달러 기호를 이스케이프 및/또는 다음과 같이 괄호가 작동하지 않습니다
!appendfile '${includeInSectionA}' 'DetailPrint "Variable: $${variable}"$\n'
; --> DetailPrint "Variable: $contentOfVariable"
!appendfile '${includeInSectionA}' 'DetailPrint "Variable: $\{variable}"$\n'
; --> DetailPrint "Variable: $\{variable}"
!appendfile '${includeInSectionA}' 'DetailPrint "Variable: $\${variable}"$\n'
; --> DetailPrint "Variable: $\contentOfVariable"
한 가지 해결책은 것이이 같은 변수를 파괴하는,하지만 ... 추한, 쉽게 깰 것 유지하기가 어렵습니다.
!appendfile '${includeInSectionA}' 'DetailPrint "Variable: $'
!appendfile '${includeInSectionA}' '{variable}"$\n'
그래서 "$ {variable}"을 (를) 이스케이프 처리하는 방법은 무엇입니까?
$ {VARIABLE}은 (는) 변수가 아니며 정의입니다! – Anders
@ 앵더 : 물론! 문제와 관련이 없지만 수정 됨. – bassim