class PorcupineServerService(win32serviceutil.ServiceFramework): _svc_name_ = 'Porcupine' _svc_display_name_ = 'Porcupine Server' def __init__(self, args): win32serviceutil.ServiceFramework.__init__(self, args) sys.stdout = open('nul', 'w') sys.stderr = open('nul', 'w') self.controller = None def SvcDoRun(self): try: if '' not in sys.path: sys.path = [''] + sys.path if main_is_frozen(): os.chdir( os.path.dirname(sys.executable) ) from porcupineserver import Controller self.controller = Controller() self.controller.start() self.controller.shutdown_evt.wait() except Exception, e: print e if self.controller: self.controller.initiateShutdown() raise