| from distutils.command.bdist_wininst import bdist_wininst as _bdist_wininst |
| import os, sys |
| |
| class bdist_wininst(_bdist_wininst): |
| _good_upload = _bad_upload = None |
| |
| def create_exe(self, arcname, fullname, bitmap=None): |
| _bdist_wininst.create_exe(self, arcname, fullname, bitmap) |
| installer_name = self.get_installer_filename(fullname) |
| if self.target_version: |
| pyversion = self.target_version |
| # fix 2.5+ bdist_wininst ignoring --target-version spec |
| self._bad_upload = ('bdist_wininst', 'any', installer_name) |
| else: |
| pyversion = 'any' |
| self._good_upload = ('bdist_wininst', pyversion, installer_name) |
| |
| def _fix_upload_names(self): |
| good, bad = self._good_upload, self._bad_upload |
| dist_files = getattr(self.distribution, 'dist_files', []) |
| if bad in dist_files: |
| dist_files.remove(bad) |
| if good not in dist_files: |
| dist_files.append(good) |
| |
| def reinitialize_command (self, command, reinit_subcommands=0): |
| cmd = self.distribution.reinitialize_command( |
| command, reinit_subcommands) |
| if command in ('install', 'install_lib'): |
| cmd.install_lib = None # work around distutils bug |
| return cmd |
| |
| def run(self): |
| self._is_running = True |
| try: |
| _bdist_wininst.run(self) |
| self._fix_upload_names() |
| finally: |
| self._is_running = False |
| |
| |
| if not hasattr(_bdist_wininst, 'get_installer_filename'): |
| def get_installer_filename(self, fullname): |
| # Factored out to allow overriding in subclasses |
| if self.target_version: |
| # if we create an installer for a specific python version, |
| # it's better to include this in the name |
| installer_name = os.path.join(self.dist_dir, |
| "%s.win32-py%s.exe" % |
| (fullname, self.target_version)) |
| else: |
| installer_name = os.path.join(self.dist_dir, |
| "%s.win32.exe" % fullname) |
| return installer_name |
| # get_installer_filename() |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |