def build_msi(bitness=32): egg_path = Path('spreads.egg-info') if egg_path.exists(): shutil.rmtree(unicode(egg_path)) build_path = Path('build') if not build_path.exists(): build_path.mkdir() pkg_dir = build_path / 'pynsist_pkgs' if pkg_dir.exists(): shutil.rmtree(unicode(pkg_dir)) pkg_dir.mkdir() for pkg in BINARY_PACKAGES.itervalues(): arch = 'win32' if bitness == 32 else 'win-amd64' extract_native_pkg(pkg.format(arch=arch), pkg_dir) for pkg in (x.project_name for x in SOURCE_PACKAGES if x.project_name is not None): copy_info(pkg, pkg_dir) icon = os.path.abspath("spreads.ico") extra_files = [(unicode( (Path('win_deps') / 'extra' / x.format(arch='.amd64' if bitness == 64 else '')).absolute()), None) for x in EXTRA_FILES] nsi_template = os.path.abspath("template.nsi") # NOTE: We need to remove the working directory from sys.path to force # pynsist to copy all of our modules, including 'spreads' and 'spreadsplug' # from the site-packages. Additionally, we need to change into the # build directory. if os.getcwd() in sys.path: sys.path.remove(os.getcwd()) os.chdir(unicode(build_path)) builder = InstallerBuilder( appname="spreads", version=spreads.__version__, packages=[x.module_name for x in SOURCE_PACKAGES], extra_files=extra_files, py_version="2.7.6", py_bitness=bitness, build_dir='msi{0}'.format(bitness), installer_name=None, nsi_template=nsi_template, icon=icon, shortcuts={ 'Configure spreads': { 'entry_point': 'spreads.main:run_config_windows', 'icon': icon, 'console': False }, 'Spreads Web Service': { 'entry_point': 'spreads.main:run_service_windows', 'icon': icon, 'console': False } }) builder.run() os.chdir('..')
def build_msi(bitness=32): egg_path = Path('spreads.egg-info') if egg_path.exists(): shutil.rmtree(unicode(egg_path)) build_path = Path('build') if not build_path.exists(): build_path.mkdir() pkg_dir = build_path/'pynsist_pkgs' if pkg_dir.exists(): shutil.rmtree(unicode(pkg_dir)) pkg_dir.mkdir() for pkg in BINARY_PACKAGES.itervalues(): arch = 'win32' if bitness == 32 else 'win-amd64' extract_native_pkg(pkg.format(arch=arch), pkg_dir) for pkg in (x.project_name for x in SOURCE_PACKAGES if x.project_name is not None): copy_info(pkg, pkg_dir) icon = os.path.abspath("spreads.ico") extra_files = [(unicode((Path('win_deps') / 'extra' / x.format(arch='.amd64' if bitness == 64 else '')) .absolute()), None) for x in EXTRA_FILES] nsi_template = os.path.abspath("template.nsi") # NOTE: We need to remove the working directory from sys.path to force # pynsist to copy all of our modules, including 'spreads' and 'spreadsplug' # from the site-packages. Additionally, we need to change into the # build directory. if os.getcwd() in sys.path: sys.path.remove(os.getcwd()) os.chdir(unicode(build_path)) builder = InstallerBuilder( appname="spreads", version=spreads.__version__, packages=[x.module_name for x in SOURCE_PACKAGES], extra_files=extra_files, py_version="2.7.6", py_bitness=bitness, build_dir='msi{0}'.format(bitness), installer_name=None, nsi_template=nsi_template, icon=icon, shortcuts={ 'Configure spreads': { 'entry_point': 'spreads.main:run_config_windows', 'icon': icon, 'console': False}, 'Spreads Web Service': { 'entry_point': 'spreads.main:run_service_windows', 'icon': icon, 'console': False} } ) builder.run() os.chdir('..')
from nsist import (configreader, get_installer_builder_args, InstallerBuilder, InputError) if __name__ == '__main__': if len(sys.argv) < 2: print('Provide config file!') sys.exit(1) # load config file, parse into arguments, and setup InstallerBuilder config = configreader.read_and_validate(sys.argv[1]) args = get_installer_builder_args(config) builder = InstallerBuilder(**args) print('Setting up build directory...') try: builder.run(makensis=False) except InputError as e: print("Error in config values:") print(str(e)) sys.exit(1) print('Building installer...') if builder.run_nsis() == 0: print('Installer created: {}'.format(builder.installer_name)) print('Creating auto-updater bundle...') bundle_name = builder.installer_name.replace('exe', 'zip') bundle_path = os.path.join(builder.build_dir, bundle_name) pkg_path = os.path.join(builder.build_dir, 'pkgs') stored = 0