1 |
# This setup script builds a single-file Python inprocess COM server. |
2 |
# |
3 |
|
4 |
# ModuleFinder can't handle runtime changes to __path__, but win32com uses them |
5 |
# see http://starship.python.net/crew/theller/moin.cgi/WinShell |
6 |
import sys |
7 |
try: |
8 |
import modulefinder |
9 |
import win32com |
10 |
for p in win32com.__path__[1:]: |
11 |
modulefinder.AddPackagePath("win32com", p) |
12 |
for extra in ["win32com.shell"]: #,"win32com.mapi" |
13 |
__import__(extra) |
14 |
m = sys.modules[extra] |
15 |
for p in m.__path__[1:]: |
16 |
modulefinder.AddPackagePath(extra, p) |
17 |
except ImportError: |
18 |
# no build path setup, no worries. |
19 |
pass |
20 |
|
21 |
|
22 |
# regular startup of build.py |
23 |
# from Python24\Lib\site-packages\py2exe\samples\singlefile\comserver\setup.py |
24 |
from distutils.core import setup |
25 |
import py2exe |
26 |
import sys |
27 |
|
28 |
# If run without args, build executables, in quiet mode. |
29 |
if len(sys.argv) == 1: |
30 |
sys.argv.append("py2exe") |
31 |
sys.argv.append("-q") |
32 |
|
33 |
class Target: |
34 |
def __init__(self, **kw): |
35 |
self.__dict__.update(kw) |
36 |
# for the versioninfo resources |
37 |
self.version = "0.6.0" |
38 |
self.company_name = "No Company" |
39 |
self.copyright = "no copyright" |
40 |
self.name = "py2exe sample files" |
41 |
|
42 |
################################################################ |
43 |
# a COM server dll, modules is required |
44 |
# |
45 |
|
46 |
interp = Target( |
47 |
description = "Mess Shell Extension", |
48 |
# what to build. For COM servers, the module name (not the |
49 |
# filename) must be specified! |
50 |
#modules = ["win32com.servers.interp"], |
51 |
modules = ["context_menu"], |
52 |
# we only want the inproc server. |
53 |
create_exe = False, |
54 |
) |
55 |
|
56 |
|
57 |
################################################################ |
58 |
# pywin32 COM pulls in a lot of stuff which we don't want or need. |
59 |
|
60 |
excludes = ["pywin", "pywin.debugger", "pywin.debugger.dbgcon", |
61 |
"pywin.dialogs", "pywin.dialogs.list", "win32com.client"] |
62 |
|
63 |
options = { |
64 |
"bundle_files": 1, # create singlefile exe |
65 |
"compressed": 1, # compress the library archive |
66 |
"excludes": excludes, |
67 |
"dll_excludes": ["w9xpopen.exe"] # we don't need this |
68 |
} |
69 |
|
70 |
setup( |
71 |
options = {"py2exe": options}, |
72 |
zipfile = None, # append zip-archive to the executable. |
73 |
#console = ["context_menu.py"] |
74 |
com_server = [interp] |
75 |
) |