NSIS 스크립트에는 다음과 같은 줄이 있습니다. 너무 길어서 1 줄로 보였기 때문에 첫 줄을 코드 블록으로 바꾸지 않았습니다. "$ BINDIR \ SubscriberACD.exe"설치 - "$ BINDIR \ SubscriberACD.exe"--Description = "Apache Commons Daemon을 사용하는 구독자 서비스"- Jvm = "$ JVMDIR \ jvm.dll"-Classpath = "$ CLASSESDIR \ SubscriberACD.jar; $ CLASSESDIR \ jeromq-0.3.5.jar; $ CLASSESDIR \ jackson-databind-2.6.3.jar; $ CLASSESDIR \ jackson- core-2.6.3.jar; $ CLASSESDIR \ jackson-annotations-2.6.0.jar; $ CLASSESDIR \ management-core-util-4.1.2.jar; $ CLASSESDIR \ management-measurement-4.1.2.jar; $ CLASSESDIR \ management-measurement-checkpoint-writer-1.0.jar; $ CLASSESDIR \ jna-4.2.2.jar; $ CLASSESDIR \ jna-platform-4.2.2.jar "--StartMode = jvm - StartClass = SubscriberACD.Subscriber --StartMethod = windowsService --StartParams = start --StopMode = jvm --StopClass = SubscriberACD.Subscriber --StopMethod = windowsService --StopParams = stop --LogPath =" $ INSTDIR \ SubscriberACD \ 로그 "--StdOutput = 자동 --StdError = 자동차 '어떻게 든매우 긴 매개 변수 목록을 가진 NSIS 실행 명령은 다음 줄로 잘립니다.
Sleep 5000
ExecWait '"sc" config SubscriberACD start=" auto"'
, 내 NSIS 로그를 볼 때, 나는 다음을 참조 :
실행 :"C를 : \ 프로그램 파일 (x86) ₩ MyProduct ₩ SubscriberACD ₩ bin ₩ SubscriberACD.exe "- 설치 ="C : ₩ Program Files (x86) ₩ MyProduct ₩ SubscriberACD ₩ bin ₩ SubscriberACD.exe " --Jvm = "C : ₩ Program Files (x86) ₩ MyProduct ₩ SubscriberACD ₩ jdk7 ₩ jre ₩ bin ₩ server ₩ jvm.dll" "Apache Commons 데몬을 사용하는 구독자 서비스" C : ₩ Program Files (x86) ₩ MyProduct ₩ SubscriberACD ₩ classes ₩ jeromq-0.3.5.jar; C : ₩ Program Files (x86) ₩ MyProduct ₩ SubscriberACD ₩ classes ₩ SubscriberACD.jar C : \ Program Files (x86) \ MyProduct \ SubscriberACD \ classes \ jackson-databind-2.6.3.jar; 프로그램 파일 (x86) \ MyProduct \ SubscriberACD \ classes \ jackson-annotations-2.6.0.jar, C : ₩ Program Files (x86) ₩ MyProduct ₩ SubscriberACD ₩ classes ₩ management-core-util-4.1.2.jar; C : \ Program Files (x86) \ MyProduct \ SubscriberACD \ classes \ management-measurement-4.1.2.jar; C : \ PrograExecute : "sc" config SubscriberACD start = auto
NSIS가 어떻게 두 줄을 결합하고 실제로 첫 줄의 내용 중 일부를 덮어 썼는지 확인하십시오. 이 문제의 원인에 대한 아이디어가 있습니까? NSIS는 긴 매개 변수를 가진 명령을 좋아하지 않습니까?
원래는 첫 번째 명령에 ExecWait을 사용했습니다. 동일한 문제가 발생했을 때 Exec을 사용하여 전환 한 다음 5 초 동안 절전 모드를 추가했습니다. 이후 타이밍 문제 일 수 있다고 생각했기 때문에 절전 모드를 5 초 동안 추가했습니다.
내 견적을 두 번 확인하여 일치하는지 확인했습니다.
내가 스위칭 생각 지금은 옵션이 아닙니다. 그런데 NSIS를 처음 접했을 때 NSIS 코드의 목적이 무엇인지 잘 모릅니다. :) – SpartaSixZero
[여기] (https://sourceforge.net/projects/nsis/files/NSIS%202/2.51/nsis-2.51-strlen_8192.zip/download)는 NSIS 2 특별 빌드입니다. 내 배치 파일 코드는 실제 목적이 없습니다. 배치 파일을 만들고 실행하는 방법을 보여주는 예제 일뿐입니다 ... – Anders
문자열의 총 길이를 줄임으로써이 최대 문자 길이 문제를 해결할 수있었습니다. 감사 – SpartaSixZero