11 Aug 2009

如何在windows xp下安装python2.6的setuptools

最近开始学python,要安装很多egg文件,但发现http://pypi.python.org/pypi/setuptools#downloads没有python2.6的MS Windows installer版本,google了一把,用如下方法解决:

1. 下载 setuptools-0.6c9.tar.gz
2. 下载 setuptools-0.6c9-py2.6.egg (放在同一个目录)
3. 用7-zip或者其他解压工具打开 setuptools-0.6c9.tar.gz ,并且把里面的 ez_setup.py 文件解压到同一个目录里。
4. 打开cmd窗口,并进入你刚才下载和解压文件的目录里。(例如: d:\downloads\)
5. 输入 python ez_setup.py setuptools-0.6c9-py2.6.egg

提示如下:

E:\temp>python ez_setup.py setuptools-0.6c9-py2.6.egg
Processing setuptools-0.6c9-py2.6.egg
Copying setuptools-0.6c9-py2.6.egg to c:\python26\lib\site-packages
Adding setuptools 0.6c9 to easy-install.pth file
Installing easy_install-script.py script to C:\Python26\Scripts
Installing easy_install.exe script to C:\Python26\Scripts
Installing easy_install-2.6-script.py script to C:\Python26\Scripts
Installing easy_install-2.6.exe script to C:\Python26\Scripts

Installed c:\python26\lib\site-packages\setuptools-0.6c9-py2.6.egg Processing dependencies for setuptools==0.6c9 Finished processing dependencies for setuptools==0.6c9 Processing setuptools-0.6c9-py2.6.egg Removing c:\python26\lib\site-packages\setuptools-0.6c9-py2.6.egg Copying setuptools-0.6c9-py2.6.egg to c:\python26\lib\site-packages setuptools 0.6c9 is already the active version in easy-install.pth Installing easy_install-script.py script to C:\Python26\Scripts Installing easy_install.exe script to C:\Python26\Scripts Installing easy_install-2.6-script.py script to C:\Python26\Scripts Installing easy_install-2.6.exe script to C:\Python26\Scripts

Installed c:\python26\lib\site-packages\setuptools-0.6c9-py2.6.egg Processing dependencies for setuptools==0.6c9 Finished processing dependencies for setuptools==0.6c9

E:\temp>

06 Aug 2009

不改程序, 创建同一个程序不同服务名的方法

以往写windows service都需要个ProjectInstaller和serviceInstaller并配置serviceName,这样build出来的exe在install成windows service时我们会:

@echo 安装WindowService
@Set Path=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;
@Set svn_dir=%cd%
installutil %svn_dir%\MyServiceDemo.exe
pause
@echo 成功!

但服务名被我们编译在程序里了,如果这个exe想被装很多次服务怎么办呢?
今天从同事Martin Jia那里学来一个好方法,可以不用ProjectInstaller、serviceInstaller这种东西,直接安装exe为windows service并在安装时指定服务名称

安装服务:

sc create 服务名 binpath= ”路径” displayname= ”显示名”

卸载服务

sc delete 服务名