1 |
joko |
1.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 |
|
|
) |