私の NSIS スクリプトには、次の行があります (1 行目が長すぎて 1 行として見栄えが悪いため、1 行目をコード ブロックに変換しませんでした)。
Exec '"$BINDIR\SubscriberACD.exe" //IS//SubscriberACD --Install="$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\logs" --StdOutput=auto --StdError=auto'
Sleep 5000
ExecWait '"sc" config SubscriberACD start=" auto"'
どういうわけか、NSIS ログを見ると、次のように表示されます。
実行: "C:\Program Files (x86)\MyProduct\SubscriberACD\bin\SubscriberACD.exe" //IS//SubscriberACD --Install="C:\Program Files (x86)\MyProduct\SubscriberACD\bin\SubscriberACD. exe" --Description=" Apache Commons Daemon を使用したサブスクライバー サービス" --Jvm="C:\Program Files (x86)\MyProduct\SubscriberACD\jdk7\jre\bin\server\jvm.dll" --Classpath="C :\Program Files (x86)\MyProduct\SubscriberACD\classes\SubscriberACD.jar;C:\Program Files (x86)\MyProduct\SubscriberACD\classes\jeromq-0.3.5.jar;C:\Program Files (x86)\ MyProduct\SubscriberACD\classes\jackson-databind-2.6.3.jar;C:\Program Files (x86)\MyProduct\SubscriberACD\classes\jackson-core-2.6.3.jar;C:\Program Files (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 が 2 行を結合し、最初の行の内容の一部を実際に上書きしたことに注目してください。これを引き起こしている原因についてのアイデアはありますか? NSIS は長いパラメータを持つコマンドを嫌いますか?
もともと、最初のコマンドには ExecWait を使用していました。同じ問題が発生したとき、Exec の使用に切り替えてから、タイミングの問題かもしれないと思ったので、その後 5 秒間スリープする Sleep 5000 を追加しました。
引用符が一致することを確認するために、引用符を再確認しました。