[Checkins] SVN: z3c.recipe.winservice/trunk/src/z3c/recipe/winservice/ Improved windows service installation script.

Roger Ineichen roger at projekt01.ch
Sat Apr 12 15:12:22 EDT 2008


Log message for revision 85279:
  Improved windows service installation script. 
  Adjust tests

Changed:
  U   z3c.recipe.winservice/trunk/src/z3c/recipe/winservice/README.txt
  U   z3c.recipe.winservice/trunk/src/z3c/recipe/winservice/service.py
  U   z3c.recipe.winservice/trunk/src/z3c/recipe/winservice/winservice.in

-=-
Modified: z3c.recipe.winservice/trunk/src/z3c/recipe/winservice/README.txt
===================================================================
--- z3c.recipe.winservice/trunk/src/z3c/recipe/winservice/README.txt	2008-04-12 18:10:04 UTC (rev 85278)
+++ z3c.recipe.winservice/trunk/src/z3c/recipe/winservice/README.txt	2008-04-12 19:12:21 UTC (rev 85279)
@@ -118,11 +118,9 @@
   <BLANKLINE>
     Installation
   <BLANKLINE>
-      The Zope service should be installed by the Zope Windows
-      installer. You can manually install, uninstall the service from
-      the commandline.
+      You can manually install, uninstall the service from the commandline.
   <BLANKLINE>
-        zopeservice.py [options] install|update|remove|start [...]
+        python bin\winservice.py [options] install|update|remove|start [...]
              |stop|restart [...]|debug [...]
   <BLANKLINE>
       Options for 'install' and 'update' commands only:
@@ -187,7 +185,13 @@
   import win32event
   import win32process
   <BLANKLINE>
+  # these are replacements from winservice recipe
+  PYTHON = r'C:\Python24\python.exe'
+  PYTHONDIR = os.path.split(PYTHON)[0]
+  PYTHONW = os.path.join(PYTHONDIR, 'pythonw.exe')
+  PYTHONSERVICE_EXE = r'%s\Lib\site-packages\win32\pythonservice.exe' % PYTHONDIR
   <BLANKLINE>
+  <BLANKLINE>
   # the max seconds we're allowed to spend backing off
   BACKOFF_MAX = 300
   # if the process runs successfully for more than BACKOFF_CLEAR_TIME
@@ -227,7 +231,7 @@
           return []
   <BLANKLINE>
   <BLANKLINE>
-  class Service(win32serviceutil.ServiceFramework):
+  class Zope3Service(win32serviceutil.ServiceFramework):
       """ A class representing a Windows NT service that can manage an
       instance-home-based Zope/ZEO/ZRS processes """
   <BLANKLINE>
@@ -237,14 +241,12 @@
       # each instance.  The below-defined start_cmd (and _svc_display_name_
       # and _svc_name_) are just examples.
   <BLANKLINE>
-      _svc_name_ = r'Zope-Instance'
-      _svc_display_name_ = r'Zope instance at C:\Zope-Instance'
+      _svc_name_ = '870810267'
+      _svc_display_name_ = r'Zope 3 Windows Service'
+      _svc_description_ = r'Zope 3 Windows Service description'
   <BLANKLINE>
-      start_cmd = (
-          r'"C:\Program Files\Zope-2.7.0-a1\bin\python.exe" '
-          r'"C:\Program Files\Zope-2.7.0-a1\lib\python\Zope\Startup\run.py" '
-          r'-C "C:\Zope-Instance\etc\zope.conf"'
-          )
+      _exe_name_ = PYTHONSERVICE_EXE
+      start_cmd = '"%s" "%s"' % (PYTHONW, r'/sample-buildout/bin/app-script.py')
   <BLANKLINE>
       def __init__(self, args):
           win32serviceutil.ServiceFramework.__init__(self, args)
@@ -389,28 +391,10 @@
               servicemanager.PYS_SERVICE_STOPPED,
               (self._svc_name_, ' (%s) ' % self._svc_display_name_))
   <BLANKLINE>
-  # these are replacements from winservice recipe
-  PYTHON = r'...\python.exe'
-  PYTHONDIR = os.path.split(PYTHON)[0]
-  PYTHONW = os.path.join(PYTHONDIR, 'pythonw.exe')
-  PYTHONSERVICE_EXE = r'%s\Lib\site-packages\win32\pythonservice.exe' % PYTHONDIR
-  RUNZOPE = r'/sample-buildout/bin/app-script.py'
-  SERVICE_NAME = str(hash(SERVICE_DISPLAY_NAME))
-  SERVICE_DISPLAY_NAME = 'Zope 3 Windows Service'
-  SERVICE_DESCRIPTION =  'Zope 3 Windows Service description'
   <BLANKLINE>
-  <BLANKLINE>
-  class InstanceService(Service):
-      start_cmd = '"%s" "%s"' % (PYTHONW, RUNZOPE)
-      _svc_name_ = SERVICE_NAME
-      _svc_display_name_ = SERVICE_DISPLAY_NAME
-      _svc_description_ = SERVICE_DESCRIPTION
-      _exe_name_ = PYTHONSERVICE_EXE
-  <BLANKLINE>
-  <BLANKLINE>
   if __name__ == '__main__':
       import win32serviceutil
       if os.path.exists(PYTHONSERVICE_EXE):
           # This ensures that pythonservice.exe is registered...
           os.system('"%s" -register' % PYTHONSERVICE_EXE)
-      win32serviceutil.HandleCommandLine(InstanceService)
+      win32serviceutil.HandleCommandLine(Zope3Service)

Modified: z3c.recipe.winservice/trunk/src/z3c/recipe/winservice/service.py
===================================================================
--- z3c.recipe.winservice/trunk/src/z3c/recipe/winservice/service.py	2008-04-12 18:10:04 UTC (rev 85278)
+++ z3c.recipe.winservice/trunk/src/z3c/recipe/winservice/service.py	2008-04-12 19:12:21 UTC (rev 85279)
@@ -80,12 +80,16 @@
 
         # setup service name
         defaultName = 'Zope3 %s' % self.name
+        defaultDescription = 'Zope3 windows service for %s' % self.name
+        displayName = options.get('name', defaultName)
+        serviceName = str(hash(displayName))
+        description = options.get('description', defaultDescription)
         self.winServiceVars = [
             ("<<PYTHON>>", self.executable),
             ("<<RUNZOPE>>", self.runScript),
-            ("<<SERVICE_DISPLAY_NAME>>", options.get('name', defaultName)),
-            ("<<SERVICE_DESCRIPTION>>", options.get('description',
-                defaultName)),
+            ("<<SERVICE_NAME>>", serviceName),
+            ("<<SERVICE_DISPLAY_NAME>>", displayName),
+            ("<<SERVICE_DESCRIPTION>>", description),
             ]
         self.runZopeVars = []
 

Modified: z3c.recipe.winservice/trunk/src/z3c/recipe/winservice/winservice.in
===================================================================
--- z3c.recipe.winservice/trunk/src/z3c/recipe/winservice/winservice.in	2008-04-12 18:10:04 UTC (rev 85278)
+++ z3c.recipe.winservice/trunk/src/z3c/recipe/winservice/winservice.in	2008-04-12 19:12:21 UTC (rev 85279)
@@ -17,11 +17,9 @@
 
   Installation
 
-    The Zope service should be installed by the Zope Windows
-    installer. You can manually install, uninstall the service from
-    the commandline.
+    You can manually install, uninstall the service from the commandline.
 
-      zopeservice.py [options] install|update|remove|start [...]
+      python bin\winservice.py [options] install|update|remove|start [...]
            |stop|restart [...]|debug [...]
 
     Options for 'install' and 'update' commands only:
@@ -86,7 +84,13 @@
 import win32event
 import win32process
 
+# these are replacements from winservice recipe
+PYTHON = r'<<PYTHON>>'
+PYTHONDIR = os.path.split(PYTHON)[0]
+PYTHONW = os.path.join(PYTHONDIR, 'pythonw.exe')
+PYTHONSERVICE_EXE = r'%s\Lib\site-packages\win32\pythonservice.exe' % PYTHONDIR
 
+
 # the max seconds we're allowed to spend backing off
 BACKOFF_MAX = 300
 # if the process runs successfully for more than BACKOFF_CLEAR_TIME
@@ -126,7 +130,7 @@
         return []
 
 
-class Service(win32serviceutil.ServiceFramework):
+class Zope3Service(win32serviceutil.ServiceFramework):
     """ A class representing a Windows NT service that can manage an
     instance-home-based Zope/ZEO/ZRS processes """
 
@@ -136,14 +140,12 @@
     # each instance.  The below-defined start_cmd (and _svc_display_name_
     # and _svc_name_) are just examples.
 
-    _svc_name_ = r'Zope-Instance'
-    _svc_display_name_ = r'Zope instance at C:\Zope-Instance'
+    _svc_name_ = '<<SERVICE_NAME>>'
+    _svc_display_name_ = r'<<SERVICE_DISPLAY_NAME>>'
+    _svc_description_ = r'<<SERVICE_DESCRIPTION>>'
 
-    start_cmd = (
-        r'"C:\Program Files\Zope-2.7.0-a1\bin\python.exe" '
-        r'"C:\Program Files\Zope-2.7.0-a1\lib\python\Zope\Startup\run.py" '
-        r'-C "C:\Zope-Instance\etc\zope.conf"'
-        )
+    _exe_name_ = PYTHONSERVICE_EXE
+    start_cmd = '"%s" "%s"' % (PYTHONW, r'<<RUNZOPE>>')
 
     def __init__(self, args):
         win32serviceutil.ServiceFramework.__init__(self, args)
@@ -288,28 +290,10 @@
             servicemanager.PYS_SERVICE_STOPPED,
             (self._svc_name_, ' (%s) ' % self._svc_display_name_))
 
-# these are replacements from winservice recipe
-PYTHON = r'<<PYTHON>>'
-PYTHONDIR = os.path.split(PYTHON)[0]
-PYTHONW = os.path.join(PYTHONDIR, 'pythonw.exe')
-PYTHONSERVICE_EXE = r'%s\Lib\site-packages\win32\pythonservice.exe' % PYTHONDIR
-RUNZOPE = r'<<RUNZOPE>>'
-SERVICE_NAME = str(hash(SERVICE_DISPLAY_NAME))
-SERVICE_DISPLAY_NAME = '<<SERVICE_DISPLAY_NAME>>'
-SERVICE_DESCRIPTION =  '<<SERVICE_DESCRIPTION>>'
 
-
-class InstanceService(Service):
-    start_cmd = '"%s" "%s"' % (PYTHONW, RUNZOPE)
-    _svc_name_ = SERVICE_NAME
-    _svc_display_name_ = SERVICE_DISPLAY_NAME
-    _svc_description_ = SERVICE_DESCRIPTION
-    _exe_name_ = PYTHONSERVICE_EXE
-
-
 if __name__ == '__main__':
     import win32serviceutil
     if os.path.exists(PYTHONSERVICE_EXE):
         # This ensures that pythonservice.exe is registered...
         os.system('"%s" -register' % PYTHONSERVICE_EXE)
-    win32serviceutil.HandleCommandLine(InstanceService)
+    win32serviceutil.HandleCommandLine(Zope3Service)



More information about the Checkins mailing list