#!/usr/bin/env python3 # -*- coding:utf-8 -*- import os import platform import PyInstaller.__main__ import argparse import shutil from datetime import datetime from version import app_version from shutil import copyfile import subprocess system = platform.system() APPNAME = 'GPCT-standalone' VERSION = '1.0.0' build = os.path.join(os.getcwd(), 'build') dist = os.path.join(os.getcwd(), 'dist') spec = os.path.join(os.getcwd(), 'spec') pycache = os.path.join(os.getcwd(), '__pycache__') logPath = os.path.join(os.getcwd(), 'logFile') main = os.path.join(os.getcwd(), 'main.py') cmdBase = [ main, '--clean', '--workpath', build, '--specpath', spec, '--distpath', dist, '--noconfirm', '--windowed', '--log-level','WARN', '--name',APPNAME, # '--add-binary','../influxd.exe:.', '--add-data','../dataFile/config.json:.', '--add-data','../Syunew3D_x64.dll:.', '--add-data','../version.json:.', '--add-data','../help.md:.', '--add-data','../help_task.md:.', '--add-data','../dataFile/data.db:.', '--add-data','../default_cosl.py:.', '--add-data','../default_general.py:.', '--add-data','../default_http.py:.', '--add-data','../default_scpi.py:.', '--add-data','../default_task.py:.', '--add-data','../logo:logo', '--add-data','../qml:qml', '--add-data','../3dpart/nidaqmx:nidaqmx', '--add-data','../3dpart/nidaqmx-0.9.0.dist-info:nidaqmx-0.9.0.dist-info', '--add-data','../scripts:scripts', '--add-data','../sqls:sqls', # '--add-data',f'../grafana:grafana' ] cmdList = { 'Darwin':cmdBase + [ '--icon','../logo/logo.icns', '--osx-bundle-identifier','com.ningxuezhi', ], 'Windows':cmdBase + [ '--icon','../logo/logo.ico', '--exclude-module', 'PyQt5', '--exclude-module', 'PySide2', '--exclude-module', 'PySide6', '--version-file','../version.info', ] } proList = { 'default':'project_000001', 'zsh':'project_000002' } class Main(): def __init__(self): super().__init__() def run(self): print('The system is : ', system) versionInfo = app_version.data parser = argparse.ArgumentParser() parser.add_argument( '-c', '--clean', action='store_true', help='clean' ) parser.add_argument( '-b', '--build', action='store_true', help='build' ) parser.add_argument( '-d', '--dog', help='dog' ) parser.add_argument( '-v', '--version', action='version', version= versionInfo["version"] ) args = parser.parse_args() print(args) if args.clean: for i in [build, dist, spec, pycache, logPath]: shutil.rmtree(i, ignore_errors=True) if args.build: if args.dog: dog_directory = args.dog print('dog_directory:', dog_directory) copyfile("default_config.json", "./dataFile/config.json") copyfile("default_data.db", "./dataFile/data.db") copyfile("./dog/"+dog_directory+"/Psyunew3.pyc", "./Psyunew3.pyc") versionInfo['proId'] = dog_directory in proList and proList[dog_directory] or '' versionInfo['releaseTime'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S') app_version.update(versionInfo) PyInstaller.__main__.run(cmdList[system]) else: print("Please provide the dog directory using -d option") if __name__ == '__main__': main = Main() main.run()