CopyFiles
명령과 UninstallString 레지스트리에서 읽은 값을 사용하는 데 문제가 있습니다. UninstallString 값은 "C:\myapp\uninstall.exe"
(따옴표 포함)입니다.NSIS 왜 CopyFile은 다른 예가 아닌 한 예에서 작동합니까?
다음을 시도해도 작동하지 않으면. 이 C:\myapp\uninstall.exe
그래서
CopyFiles $uninstallPath "C:\Temp" # Does not work
다음, 나는의 UninstallString의 값에서 따옴표를 레지스트리를 편집 및 제거 할 수 있습니다.
다음은 작동하지만 따옴표로 묶지는 않습니다.
CopyFiles $uninstallPath "C:\Temp" # Works
이제 변수 주위에 따옴표를 추가하고 작동합니다.
CopyFiles "$uninstallPath" "C:\Temp" # Works
첫 번째 사례와 마지막 사례는 같은 일을하는 두 가지 다른 방식이라고 생각합니다. 첫 번째 예제가 효과가없는 이유에 대한 명확한 설명은 없습니까?
하는 것은 필요하지 않은이 걱정하는 그 '다음은 그 함수의 종류에 내 걸릴 것입니다 인수 $ uninstallPath를 공백을 포함 할 수 있지만 따옴표로 묶지 않은 CopyFiles에 전달합니까? 따옴표가 필요하지 않은 경우 레지스트리에 저장된 경로를 둘러싸고 제거하는 것이 일반적인 관례입니까? – user870130
변수에 공백이 있어도 변수를 인용 할 필요는 없으며 컴파일러가 스크립트의 함수에 전달한 매개 변수를 구문 분석 한 후에도 최종 사용자 시스템에서 확장됩니다. 실행될 수있는 명령은 레지스트리에 저장 될 때 인용되어야하며 아이콘이나 다른 파일과 같은 다른 경로는 일반적으로 인용되지 않습니다. 참고 자료 : https://blogs.msdn.microsoft.com/oldnewthing/20070515-00/?p=26863 – Anders
코드에 약간의 문제가 있음을 확인했습니다. 첫 번째 StrCpy는 StrCpy $ 1 $ 0이어야합니다. – user870130