[pyinst] Automatically detect python architecture and working directory

:ci skip all
This commit is contained in:
pukkandan 2021-02-04 22:01:22 +05:30
parent 8a784c74d1
commit ff88a05cff
2 changed files with 27 additions and 18 deletions

View file

@ -106,7 +106,7 @@ To build the Windows executable, you must have pyinstaller (and optionally mutag
python -m pip install --upgrade pyinstaller mutagen python -m pip install --upgrade pyinstaller mutagen
For the 64bit version, run `py devscripts\pyinst.py 64` using 64bit python3. Similarly, to install 32bit version, run `py devscripts\pyinst.py 32` using 32bit python (preferably 3) Once you have all the necessary dependancies installed, just run `py devscripts\pyinst.py`. The executable will be built for the same architecture (32/64 bit) as the python used to build it. It is strongly reccomended to use python3 although python2.6+ is supported.
You can also build the executable without any version info or metadata by using: You can also build the executable without any version info or metadata by using:

View file

@ -1,5 +1,10 @@
#!/usr/bin/env python
# coding: utf-8
from __future__ import unicode_literals from __future__ import unicode_literals
import sys import sys
import os
import platform
from PyInstaller.utils.win32.versioninfo import ( from PyInstaller.utils.win32.versioninfo import (
VarStruct, VarFileInfo, StringStruct, StringTable, VarStruct, VarFileInfo, StringStruct, StringTable,
@ -7,13 +12,17 @@ from PyInstaller.utils.win32.versioninfo import (
) )
import PyInstaller.__main__ import PyInstaller.__main__
arch = sys.argv[1] if len(sys.argv) > 1 else platform.architecture()[0][:2]
assert arch in ('32', '64')
print('Building %sbit version' % arch)
_x86 = '_x86' if arch == '32' else ''
assert len(sys.argv) > 1 and sys.argv[1] in ("32", "64") FILE_DESCRIPTION = 'Media Downloader%s' % (' (32 Bit)' if _x86 else '')
_x86 = "_x86" if sys.argv[1] == "32" else "" SHORT_URLS = {'32': 'git.io/JUGsM', '64': 'git.io/JLh7K'}
FILE_DESCRIPTION = 'Media Downloader%s' % (" (32 Bit)" if _x86 else '')
SHORT_URLS = {"32": "git.io/JUGsM", "64": "git.io/JLh7K"}
root_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
print('Changing working directory to %s' % root_dir)
os.chdir(root_dir)
exec(compile(open('youtube_dlc/version.py').read(), 'youtube_dlc/version.py', 'exec')) exec(compile(open('youtube_dlc/version.py').read(), 'youtube_dlc/version.py', 'exec'))
VERSION = locals()['__version__'] VERSION = locals()['__version__']
@ -38,21 +47,21 @@ VERSION_FILE = VSVersionInfo(
kids=[ kids=[
StringFileInfo([ StringFileInfo([
StringTable( StringTable(
"040904B0", [ '040904B0', [
StringStruct("Comments", "Youtube-dlc%s Command Line Interface." % _x86), StringStruct('Comments', 'Youtube-dlc%s Command Line Interface.' % _x86),
StringStruct("CompanyName", "pukkandan@gmail.com"), StringStruct('CompanyName', 'pukkandan@gmail.com'),
StringStruct("FileDescription", FILE_DESCRIPTION), StringStruct('FileDescription', FILE_DESCRIPTION),
StringStruct("FileVersion", VERSION), StringStruct('FileVersion', VERSION),
StringStruct("InternalName", "youtube-dlc%s" % _x86), StringStruct('InternalName', 'youtube-dlc%s' % _x86),
StringStruct( StringStruct(
"LegalCopyright", 'LegalCopyright',
"pukkandan@gmail.com | UNLICENSE", 'pukkandan@gmail.com | UNLICENSE',
), ),
StringStruct("OriginalFilename", "youtube-dlc%s.exe" % _x86), StringStruct('OriginalFilename', 'youtube-dlc%s.exe' % _x86),
StringStruct("ProductName", "Youtube-dlc%s" % _x86), StringStruct('ProductName', 'Youtube-dlc%s' % _x86),
StringStruct("ProductVersion", "%s%s | %s" % (VERSION, _x86, SHORT_URLS[sys.argv[1]])), StringStruct('ProductVersion', '%s%s | %s' % (VERSION, _x86, SHORT_URLS[arch])),
])]), ])]),
VarFileInfo([VarStruct("Translation", [0, 1200])]) VarFileInfo([VarStruct('Translation', [0, 1200])])
] ]
) )