File size: 1,429 Bytes
4411845
 
 
 
 
 
 
360749d
 
 
 
4411845
360749d
 
 
 
 
 
 
 
 
4411845
 
360749d
 
 
 
 
 
 
 
 
 
 
 
 
 
4411845
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# import sys
# import ctypes
# if not ctypes.windll.shell32.IsUserAnAdmin():
#     ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1)
#     sys.exit()


from argparse import ArgumentParser
from zipfile import ZipFile
from subprocess import Popen, PIPE
from shutil import rmtree
import atexit

argparser = ArgumentParser()
argparser.add_argument("-i", "--image", type=str, help="app image", required=True)
argparser.add_argument("-p", "--port", type=int, default=12345, help="port number")
argparser.add_argument("-f", "--folder", type=str, default="appfolder", help="app folder")
argparser.add_argument("-a", "--address", type=str, default="0.0.0.0", help="address to listen on")
args = argparser.parse_args()
folder = args.folder
rmtree(folder, ignore_errors=True)
atexit.register(lambda: rmtree(folder, ignore_errors=True))

ZipFile(args.image).extractall(folder)
try:
    process = Popen([folder + "\\main", "-p", str(args.port), "-a", str(args.address)], stdout=PIPE, stderr=PIPE, shell=True)
    while True:
        output = process.stdout.readline()
        if output == b"" and process.poll() is not None:
            break
        if output:
            if "Running a app" in output.decode():
                print("Setup complete")
    process.wait()
except Exception as e:
    print(f"An error occurred: {e}")
finally:
    rmtree(folder)