Fake Allen (Richard), ;\)

I maintain state of all child processes, so picking a good time to update (when no children are present) is not a problem. The scheduler can set the "GoodUpdateTime" flag based on knowing that there is a period where no events are needed. Another scheduler process detects the presence of a new version and sets the UpdatePending flag. All I need to do is
 Code:
If Not $ACTIVE And $GoodUpdateTime And $UpdatePending
  Del 'kixservice.kix'
  Move 'kixservice.new' 'kixservice.kix'
  Run 'XNET RESTART kixservice'
EndIf

This works, but I'm trying to remove the XNET dependency. If I spawn a child script, it usually dies as soon as the service stops.

Your final "dumb" solution would work pretty effectively for this - the only downside is adding the extra script to the package. This could be as simple as
 Code:
While 1
  Shell 'kix32.exe kixservice.kix'
Loop
which would launch and wait for the service to exit and just restart it if it ever ended. I'd have to test this to insure that the child process stops when the parent is terminated by a service stop command. This might be as simple as replacing the run command above with EXIT 0.

I'm also going to investigate enabling "Recovery" on the service. Thus, if the service "fails" the O/S will simply restart it after 1 minute. I don't have anything so critical that being stopped for a minute would be an issue.

Thanks,

Glenn
_________________________
Actually I am a Rocket Scientist! \:D