]> jfr.im git - yt-dlp.git/blob - pyinst.py
[pyinst] Show Python version in EXE metadata (#384)
[yt-dlp.git] / pyinst.py
1 #!/usr/bin/env python3
2 # coding: utf-8
3
4 from __future__ import unicode_literals
5 import sys
6 # import os
7 import platform
8
9 from PyInstaller.utils.win32.versioninfo import (
10 VarStruct, VarFileInfo, StringStruct, StringTable,
11 StringFileInfo, FixedFileInfo, VSVersionInfo, SetVersion,
12 )
13 import PyInstaller.__main__
14
15 arch = sys.argv[1] if len(sys.argv) > 1 else platform.architecture()[0][:2]
16 assert arch in ('32', '64')
17 print('Building %sbit version' % arch)
18 _x86 = '_x86' if arch == '32' else ''
19
20 FILE_DESCRIPTION = 'yt-dlp%s' % (' (32 Bit)' if _x86 else '')
21
22 # root_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
23 # print('Changing working directory to %s' % root_dir)
24 # os.chdir(root_dir)
25
26 exec(compile(open('yt_dlp/version.py').read(), 'yt_dlp/version.py', 'exec'))
27 VERSION = locals()['__version__']
28
29 VERSION_LIST = VERSION.split('.')
30 VERSION_LIST = list(map(int, VERSION_LIST)) + [0] * (4 - len(VERSION_LIST))
31
32 print('Version: %s%s' % (VERSION, _x86))
33 print('Remember to update the version using devscipts\\update-version.py')
34
35 VERSION_FILE = VSVersionInfo(
36 ffi=FixedFileInfo(
37 filevers=VERSION_LIST,
38 prodvers=VERSION_LIST,
39 mask=0x3F,
40 flags=0x0,
41 OS=0x4,
42 fileType=0x1,
43 subtype=0x0,
44 date=(0, 0),
45 ),
46 kids=[
47 StringFileInfo([
48 StringTable(
49 '040904B0', [
50 StringStruct('Comments', 'yt-dlp%s Command Line Interface.' % _x86),
51 StringStruct('CompanyName', 'https://github.com/yt-dlp'),
52 StringStruct('FileDescription', FILE_DESCRIPTION),
53 StringStruct('FileVersion', VERSION),
54 StringStruct('InternalName', 'yt-dlp%s' % _x86),
55 StringStruct(
56 'LegalCopyright',
57 'pukkandan.ytdlp@gmail.com | UNLICENSE',
58 ),
59 StringStruct('OriginalFilename', 'yt-dlp%s.exe' % _x86),
60 StringStruct('ProductName', 'yt-dlp%s' % _x86),
61 StringStruct(
62 'ProductVersion',
63 '%s%s on Python %s' % (VERSION, _x86, platform.python_version())),
64 ])]),
65 VarFileInfo([VarStruct('Translation', [0, 1200])])
66 ]
67 )
68
69 PyInstaller.__main__.run([
70 '--name=yt-dlp%s' % _x86,
71 '--onefile',
72 '--icon=devscripts/cloud.ico',
73 '--exclude-module=youtube_dl',
74 '--exclude-module=youtube_dlc',
75 '--exclude-module=test',
76 '--exclude-module=ytdlp_plugins',
77 '--hidden-import=mutagen',
78 '--hidden-import=Crypto',
79 '--upx-exclude=vcruntime140.dll',
80 'yt_dlp/__main__.py',
81 ])
82 SetVersion('dist/yt-dlp%s.exe' % _x86, VERSION_FILE)