Allow adding or removing individual environment variables.
[nssm.git] / README.txt
index 182f885..12a8393 100644 (file)
@@ -574,6 +574,12 @@ If the application crashes and is restarted by NSSM, the order might be:
   Exit/Post\r
 \r
 \r
+If NSSM is redirecting stdout or stderr it can be configured to redirect\r
+the output of any hooks it runs.  Set AppRedirectHooks to 1 to enable\r
+that functionality.  A hook can of course redirect its own I/O independently\r
+of NSSM.\r
+\r
+\r
 Managing services using the GUI\r
 -------------------------------\r
 NSSM can edit the settings of existing services with the same GUI that is\r
@@ -632,9 +638,10 @@ would have the same effect.
 \r
 Non-standard parameters\r
 -----------------------\r
-The AppEnvironment and AppEnvironmentExtra parameters recognise an\r
-additional argument when querying the environment.  The following syntax\r
-will print all extra environment variables configured for a service\r
+The AppEnvironment, AppEnvironmentExtra and Environment parameters\r
+recognise an additional argument when querying the environment.  The\r
+following syntax will print all extra environment variables configured\r
+for a service\r
 \r
     nssm get <servicename> AppEnvironmentExtra\r
 \r
@@ -649,6 +656,39 @@ KEY=VALUE pair in separate command line arguments.  For example:
 \r
     nssm set <servicename> AppEnvironment CLASSPATH=C:\Classes TEMP=C:\Temp\r
 \r
+Alternatively the KEY can be prefixed with a + or - symbol to respectively\r
+add or remove a pair from the block.\r
+\r
+The following two lines set CLASSPATH and TEMP:\r
+\r
+    nssm set <servicename> AppEnvironment CLASSPATH=C:\Classes\r
+    nssm set <servicename> AppEnvironment +TEMP=C:\Temp\r
+\r
+If the key is already present, specifying +KEY will override the value\r
+while preserving the order of keys:\r
+\r
+    nssm set <servicename> AppEnvironment +CLASSPATH=C:\NewClasses\r
+\r
+The following syntax removes a single variable from the block while\r
+leaving any other variables in place.\r
+\r
+    nssm set <servicename> AppEnvironment -TEMP\r
+\r
+Specifying -KEY=VALUE will remove the variable only if the existing\r
+value matches.\r
+\r
+The following syntax would not remove TEMP=C:\Temp\r
+\r
+    nssm set <servicename> AppEnvironment -TEMP=C:\Work\Temporary\r
+\r
+The + and - symbols are valid characters in environment variables.\r
+The syntax :KEY=VALUE is equivalent to KEY=VALUE and can be used to\r
+set variables which start with +/- or to explicitly reset the block in\r
+a script:\r
+\r
+    nssm set <servicename> AppEnvironment :CLASSPATH=C:\Classes\r
+    nssm set <servicename> AppEnvironment +TEMP=C:\Temp\r
+\r
 \r
 The AppExit parameter requires an additional argument specifying the exit\r
 code to get or set.  The default action can be specified with the string\r
@@ -892,6 +932,7 @@ Thanks to Stefan and Michael Scherer for reporting a bug writing the event messa
 Thanks to Paul Baxter for help with Visual Studio 2015.\r
 Thanks to Mathias Breiner for help with Visual Studio and some registry fixes.\r
 Thanks to David Bremner for general tidyups.\r
+Thanks to Nabil Redmann for suggesting redirecting hooks' output.\r
 \r
 Licence\r
 -------\r