win32_manual_post_install.py
141 lines
| 4.9 KiB
| text/x-python
|
PythonLexer
ville
|
r988 | #!python | ||
"""Windows-specific part of the installation""" | ||||
import os, sys | ||||
try: | ||||
import shutil,pythoncom | ||||
from win32com.shell import shell | ||||
import _winreg as wreg | ||||
except ImportError: | ||||
print """ | ||||
You seem to be missing the PythonWin extensions necessary for automatic | ||||
installation. You can get them (free) from | ||||
http://starship.python.net/crew/mhammond/ | ||||
Please see the manual for details if you want to finish the installation by | ||||
hand, or get PythonWin and repeat the procedure. | ||||
Press <Enter> to exit this installer.""" | ||||
raw_input() | ||||
sys.exit() | ||||
def make_shortcut(fname,target,args='',start_in='',comment='',icon=None): | ||||
"""Make a Windows shortcut (.lnk) file. | ||||
make_shortcut(fname,target,args='',start_in='',comment='',icon=None) | ||||
Arguments: | ||||
fname - name of the final shortcut file (include the .lnk) | ||||
target - what the shortcut will point to | ||||
args - additional arguments to pass to the target program | ||||
start_in - directory where the target command will be called | ||||
comment - for the popup tooltips | ||||
icon - optional icon file. This must be a tuple of the type | ||||
(icon_file,index), where index is the index of the icon you want | ||||
in the file. For single .ico files, index=0, but for icon libraries | ||||
contained in a single file it can be >0. | ||||
""" | ||||
shortcut = pythoncom.CoCreateInstance( | ||||
shell.CLSID_ShellLink, None, | ||||
pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink | ||||
) | ||||
shortcut.SetPath(target) | ||||
shortcut.SetArguments(args) | ||||
shortcut.SetWorkingDirectory(start_in) | ||||
shortcut.SetDescription(comment) | ||||
if icon: | ||||
shortcut.SetIconLocation(*icon) | ||||
shortcut.QueryInterface(pythoncom.IID_IPersistFile).Save(fname,0) | ||||
def run(wait=0): | ||||
# Find where the Start Menu and My Documents are on the filesystem | ||||
key = wreg.OpenKey(wreg.HKEY_CURRENT_USER, | ||||
r'Software\Microsoft\Windows\CurrentVersion' | ||||
r'\Explorer\Shell Folders') | ||||
programs_dir = wreg.QueryValueEx(key,'Programs')[0] | ||||
my_documents_dir = wreg.QueryValueEx(key,'Personal')[0] | ||||
key.Close() | ||||
# Find where the 'program files' directory is | ||||
key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, | ||||
r'SOFTWARE\Microsoft\Windows\CurrentVersion') | ||||
program_files_dir = wreg.QueryValueEx(key,'ProgramFilesDir')[0] | ||||
key.Close() | ||||
# File and directory names | ||||
ip_dir = program_files_dir + r'\IPython' | ||||
ip_prog_dir = programs_dir + r'\IPython' | ||||
doc_dir = ip_dir+r'\doc' | ||||
ip_filename = ip_dir+r'\IPython_shell.py' | ||||
pycon_icon = doc_dir+r'\pycon.ico' | ||||
if not os.path.isdir(ip_dir): | ||||
os.mkdir(ip_dir) | ||||
# Copy startup script and documentation | ||||
shutil.copy(sys.prefix+r'\Scripts\ipython',ip_filename) | ||||
if os.path.isdir(doc_dir): | ||||
shutil.rmtree(doc_dir) | ||||
shutil.copytree('doc',doc_dir) | ||||
# make shortcuts for IPython, html and pdf docs. | ||||
print 'Making entries for IPython in Start Menu...', | ||||
# Create .bat file in \Scripts | ||||
fic = open(sys.prefix + r'\Scripts\ipython.bat','w') | ||||
fic.write('"' + sys.prefix + r'\python.exe' + '" -i ' + '"' + | ||||
sys.prefix + r'\Scripts\ipython" %*') | ||||
fic.close() | ||||
# Create .bat file in \\Scripts | ||||
fic = open(sys.prefix + '\\Scripts\\ipython.bat','w') | ||||
fic.write('"' + sys.prefix + '\\python.exe' + '" -i ' + '"' + sys.prefix + '\\Scripts\ipython" %*') | ||||
fic.close() | ||||
# Create shortcuts in Programs\IPython: | ||||
if not os.path.isdir(ip_prog_dir): | ||||
os.mkdir(ip_prog_dir) | ||||
os.chdir(ip_prog_dir) | ||||
man_pdf = doc_dir + r'\manual.pdf' | ||||
man_htm = doc_dir + r'\manual\manual.html' | ||||
make_shortcut('IPython.lnk',sys.executable, '"%s"' % ip_filename, | ||||
my_documents_dir, | ||||
'IPython - Enhanced python command line interpreter', | ||||
(pycon_icon,0)) | ||||
make_shortcut('pysh.lnk',sys.executable, '"%s" -p pysh' % ip_filename, | ||||
my_documents_dir, | ||||
'pysh - a system shell with Python syntax (IPython based)', | ||||
(pycon_icon,0)) | ||||
make_shortcut('Manual in HTML format.lnk',man_htm,'','', | ||||
'IPython Manual - HTML format') | ||||
make_shortcut('Manual in PDF format.lnk',man_pdf,'','', | ||||
'IPython Manual - PDF format') | ||||
print """Done. | ||||
I created the directory %s. There you will find the | ||||
IPython startup script and manuals. | ||||
An IPython menu was also created in your Start Menu, with entries for | ||||
IPython itself and the manual in HTML and PDF formats. | ||||
For reading PDF documents you need the freely available Adobe Acrobat | ||||
Reader. If you don't have it, you can download it from: | ||||
http://www.adobe.com/products/acrobat/readstep2.html | ||||
""" % ip_dir | ||||
if wait: | ||||
print "Finished with IPython installation. Press Enter to exit this installer.", | ||||
raw_input() | ||||
if __name__ == '__main__': | ||||
run() | ||||