In meinem NSIS Skript habe ich die folgenden Zeilen (Die erste Zeile wurde nicht in einen Codeblock umgewandelt, weil sie zu lang war und schlecht aussah wie 1 Zeile):NSIS Exec Befehl mit sehr langer Parameterliste, die durch die nächste Zeile abgeschnitten wird
Exec '"$ BINDIR \ SubscriberACD.exe" // IS // SubscriberACD --Install = "$ BINDIR \ SubscriberACD.exe" --Description = "Subskribierter Dienst mit Apache Commons Daemon" --Jvm = "$ JVMDIR \ jvm.dll" --Classpath = "$ CLASSESDIR \ SubscriberACD.jar; $ CLASSEDIR \ 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 \ Verwaltung-core-util-4.1.2.jar; $ CLASSESDIR \ management-measurement-4.1.2.jar; $ CLASSESDIR \ Management-Messung-Checkpoint-Writer-1.0.jar; $ CLASSESDIR \ jna-4.2.2.jar; $ CLASSESDIR \ jna-Plattform-4.2.2.jar "--StartMode = jvm --StartClass = AbonnentenACD.Subscriber --StartMethod = WindowsService --StartParams = Start --StopMode = jvm --StopClass = AbonnentenACD.Subscriber --StopMethod = WindowsService --StopParams = stop --LogPath =" $ INSTDIR \ SubscriberACD \ logs“--StdOutput = auto --StdError = auto‘
Sleep 5000
ExecWait '"sc" config SubscriberACD start=" auto"'
Irgendwie, wenn ich an meinem NSIS-Protokolle sehen, sehe ich folgendes:
Ausführen: „C: \ Programmdateien (x86) \ MyProduct \ SubscriberACD \ bin \ SubscriberACD.exe "// IS // SubscriberACD --Install =" C: \ Programme (x86) \ MyProduct \ SubscriberACD \ bin \ SubscriberACD.exe "--Description = "Abonnentenservice mit Apache Commons Daemon" --Jvm = "C: \ Programme (x86) \ MyProduct \ SubscriberACD \ jdk7 \ jre \ bin \ server \ jvm.dll" --Classpath = "C: \ Programme (x86) \ MyProduct \ SubscriberACD \ classes \ SubscriberACD.jar; C: \ Programme (x86) \ MyProduct \ SubscriberACD \ classes \ jeromq-0.3.5.jar; C: \ Programmdateien (x86) \ MyProduct \ SubscriberACD \ classes \ jackson-databind-2.6.3.jar; C: \ Programme (x86) \ MyProduct \ SubscriberACD \ classes \ jackson-core-2.6.3.jar; C: \ Programmdateien (x86) \ MyProduct \ SubscriberACD \ classes \ jackson-annotations-2.6.0.jar; C: \ Programme (x86) \ MyProduct \ SubscriberACD \ classes \ management-core-util-4.1.2.jar; C : \ Programme (x86) \ MyProduct \ SubscriberACD \ classes \ management-measurement-4.1.2.jar; C: \ PrograExecute: "sc" Konfig SubscriberACD start = auto
Beachten Sie, wie NSIS die beiden Zeilen kombinierte und tatsächlich einen Teil des Inhalts aus der ersten Zeile überschrieb. Irgendwelche Ideen darüber, was das verursacht? Hat NSIS keine Befehle mit langen Parametern?
Ursprünglich verwendete ich ExecWait für meinen ersten Befehl. Als ich das gleiche Problem sah, wechselte ich zu Exec und fügte danach einen Sleep 5000 hinzu, um für 5 Sekunden zu schlafen, da ich dachte, dass es ein Timing-Problem gewesen sein könnte.
Ich habe meine Anführungszeichen überprüft, um sicherzustellen, dass sie übereinstimmen.
Ich denke, die Umstellung auf NSIS 3.0 für jetzt keine Option ist, da wir ein Release schnell kommen müssen, damit ich die Batch-Datei Option versuchen. Übrigens, ich bin neu bei NSIS und nicht wirklich sicher, was der Zweck Ihres NSIS-Codes ist. :) – SpartaSixZero
[Hier] (https://sourceforge.net/projects/nsis/files/NSIS%202/2.51/nsis-2.51-strlen_8192.zip/download) ist die NSIS 2 spezielle Build. Mein Batch-Datei-Code hat keinen wirklichen Zweck, es war nur ein Beispiel, das zeigt, wie man eine Batch-Datei erstellt und ausführt ... – Anders
Ich konnte dieses Problem umgehen, indem ich die Gesamtlänge meiner Zeichenfolge reduzierte. Vielen Dank – SpartaSixZero