[Twisted-Python] Sample Script to create Windows Service for Twisted App (1/2)
First, A big thanks to Cory for writing the tap2ntsvc, and for helping me understand how it work (as well as proving to me that it can work. In exchange for all his help, I am sending two .bat files in 2 messages. Because of mail filtering, I am going to include the .bat files at the end of the messages rather then attach them. Background: I have a twisted program that leverages WMI, ctypes, and win32 calls. These all need to be included in the exe. Lessons Learned: Microsoft uses different type libraries for XP and 2000, the python wrappers are created in the site-packages\win32com\gen_py\{GUID}1 for 2000, and site-packages\win32com\gen_py{GUID}2 for XP. You can create different installers for both, or include them all into the same service (see the comments in fixup.bat in the 2/2 email) Have fun, Mike ---------------------------------------------------------------- Michael Schneider Senior Software Engineering Consultant UGS PLM Solutions - an EDS Company "The Greatest Performance Improvement Is the transitioning from a non-working state to the working state> ------------------ gen.bat--------------------------------------------- rem ------------- BAT file to create Service for twisted app that rem uses WMI python module rem Author: Michael Scheider rem Shadow Author (Cory - he helped me get going, re and proved to me that it could work) rem Cory also wrote the tool to package the system rem in exchange for all his hard work, I am releasing this script rem under the same license as Twisted (free) rem Use this file as a roadmap, but you may need other modules, rem Note: if you are not using WMI, you can comment out the rem %WIN2000_WMI_MODULES% and the %WINXP_WMI_MODULES% from rem tap2ntsvc command line rem Twisted Functionality/Python Modules used rem rem WMI- process and disk info rem ctypes - memory info rem twisted as web server rem twisted xml-rpc rem cgi - perl and python rm rpy files rem Special thanks to Cory to get this going rem Version Info rem python2.3.3 rem win32all build 163 rem py2exe version 1.4.2 rem inno - latest version rem Lessons Learned rem rem WMI stashes the com wrappers in site- rem rem Windows 2000 wrapper location= site-packages\win32com\gen_py\565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1 rem Windows XP wrapper location = site-packages\win32com\gen_py\565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2 rem rem NOTE: the numbers are the same except for 2000 uses 1 and XP uses 2 rem if you want your installer to run on both you will need rem to copy the directory from the other machine and include rem both directories rem ------------------- WMI modules ------------------------ rem the directory rem set WINXP_WMI_MODULES=win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.ISWbemMethod,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.ISWbemMethodSet,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.ISWbemObjectPath,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.ISWbemObjectSet,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.ISWbemProperty,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.ISWbemPropertySet,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.ISWbemServicesEx,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.SWbemMethod,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.SWbemMethodSet,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.SWbemObjectEx,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.SWbemObjectPath,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.SWbemObjectSet,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.SWbemProperty,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.SWbemPropertySet,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.SWbemServicesEx,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.__init__,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x2.ISWbemObjectEx,wmi set WIN2000_WMI_MODULES=win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.ISWbemMethod,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.ISWbemMethodSet,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.ISWbemObject,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.ISWbemObjectPath,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.ISWbemObjectSet,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.ISWbemProperty,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.ISWbemPropertySet,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.ISWbemServices,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.SWbemMethod,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.SWbemMethodSet,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.SWbemObject,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.SWbemObjectPath,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.SWbemObjectSet,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.SWbemProperty,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.SWbemPropertySet,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.SWbemServices,win32com.gen_py.565783C6-CB41-11D1-8B02-00600806D9B6x0x1x1.__init__,wmi python tap2ntsvc --include twisted.web.server,twisted.web.resource,twisted.web.static,twisted.web.script,gridnode.webinfo,gridnode.JobRunner,gridnode.appconfig,gridnode.sendmail,twisted.internet.win32eventreactor,%WIN2000_WMI_MODULES% -r win32 d:\grid\gridnoded.tap
participants (1)
-
Schneider, Michael