bzr win32 bdist postinstall.py :  » Development » Bazaar » bzr-2.2b3 » tools » win32 » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Development » Bazaar 
Bazaar » bzr 2.2b3 » tools » win32 » bzr-win32-bdist-postinstall.py
# (c) Canonical Ltd, 2006
# written by Alexander Belchenko for bzr project
#
# This script will be executed after installation of bzrlib package
# and before installer exits.
# All printed data will appear on the last screen of installation
# procedure.
# The main goal of this script is to create special batch file
# launcher for bzr. Typical content of this batch file is:
#  @python bzr %*
#
# This file works only on Windows 2000/XP. For win98 there is
# should be "%1 %2 %3 %4 %5 %6 %7 %8 %9" instead of "%*".
# Or even more complex thing.
#
# [bialix]: bzr de-facto does not support win98.
#           Although it seems to work on. Sometimes.
# 2006/07/30    added minimal support of win98.
# 2007/01/30    added *real* support of win98.

import os
import sys
import _winreg

from bzrlib import win32utils


def _quoted_path(path):
    if ' ' in path:
        return '"' + path + '"'
    else:
        return path

def _win_batch_args():
    if win32utils.winver == 'Windows NT':
        return '%*'
    else:
        return '%1 %2 %3 %4 %5 %6 %7 %8 %9'


if "-install" in sys.argv[1:]:
    # try to detect version number automatically
    try:
        import bzrlib
    except ImportError:
        ver = ''
    else:
        ver = bzrlib.__version__

    ##
    # XXX change message for something more appropriate
    print """Bazaar %s

Congratulation! Bzr successfully installed.

""" % ver

    batch_path = "bzr.bat"
    prefix = sys.exec_prefix
    try:
        ##
        # try to create
        scripts_dir = os.path.join(prefix, "Scripts")
        script_path = _quoted_path(os.path.join(scripts_dir, "bzr"))
        python_path = _quoted_path(os.path.join(prefix, "python.exe"))
        args = _win_batch_args()
        batch_str = "@%s %s %s" % (python_path, script_path, args)
        # support of win98
        # if there is no HOME for bzr then set it for Bazaar manually
        base = os.environ.get('BZR_HOME', None)
        if base is None:
            base = win32utils.get_appdata_location()
        if base is None:
            base = os.environ.get('HOME', None)
        if base is None:
            base = os.path.splitdrive(sys.prefix)[0] + '\\'
            batch_str = ("@SET BZR_HOME=" + _quoted_path(base) + "\n" +
                         batch_str)

        batch_path = os.path.join(scripts_dir, "bzr.bat")
        f = file(batch_path, "w")
        f.write(batch_str)
        f.close()
        file_created(batch_path)        # registering manually created files for
                                        # auto-deinstallation procedure
        ##
        # inform user where batch launcher is.
        print "Created:", batch_path
        print "Use this batch file to run bzr"
    except Exception, e:
        print "ERROR: Unable to create %s: %s" % (batch_path, e)

    ## this hunk borrowed from pywin32_postinstall.py
    # use bdist_wininst builtins to create a shortcut.
    # CSIDL_COMMON_PROGRAMS only available works on NT/2000/XP, and
    # will fail there if the user has no admin rights.
    if get_root_hkey()==_winreg.HKEY_LOCAL_MACHINE:
        try:
            fldr = get_special_folder_path("CSIDL_COMMON_PROGRAMS")
        except OSError:
            # No CSIDL_COMMON_PROGRAMS on this platform
            fldr = get_special_folder_path("CSIDL_PROGRAMS")
    else:
        # non-admin install - always goes in this user's start menu.
        fldr = get_special_folder_path("CSIDL_PROGRAMS")

    # make Bazaar entry
    fldr = os.path.join(fldr, 'Bazaar')
    if not os.path.isdir(fldr):
        os.mkdir(fldr)
        directory_created(fldr)

    # link to documentation
    docs = os.path.join(sys.exec_prefix, 'Doc', 'Bazaar', 'index.html')
    dst = os.path.join(fldr, 'Documentation.lnk')
    create_shortcut(docs, 'Bazaar Documentation', dst)
    file_created(dst)
    print 'Documentation for Bazaar: Start => Programs => Bazaar'

    # bzr in cmd shell
    if os.name == 'nt':
        cmd = os.environ.get('COMSPEC', 'cmd.exe')
        args = "/K bzr help"
    else:
        # minimal support of win98
        cmd = os.environ.get('COMSPEC', 'command.com')
        args = "bzr help"
    dst = os.path.join(fldr, 'Start bzr.lnk')
    create_shortcut(cmd,
                    'Start bzr in cmd shell',
                    dst,
                    args,
                    os.path.join(sys.exec_prefix, 'Scripts'))
    file_created(dst)

    # uninstall shortcut
    uninst = os.path.join(sys.exec_prefix, 'Removebzr.exe')
    dst = os.path.join(fldr, 'Uninstall Bazaar.lnk')
    create_shortcut(uninst,
                    'Uninstall Bazaar',
                    dst,
                    '-u bzr-wininst.log',
                    sys.exec_prefix,
                    )
    file_created(dst)
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.