diff --git a/installer/install.py b/installer/install.py index bf541fe..478560c 100644 --- a/installer/install.py +++ b/installer/install.py @@ -8,6 +8,7 @@ import os import shutil import json +import platform ############ Config ############ KEYWORD = "winpe" @@ -15,39 +16,51 @@ PYTHON = "python" DISK = "{disk}" ################################ -# Linux please run: mount /dev/sdX /mnt/disk --mkdir +# if you using Linux based OS, please run this command: mount /dev/sdX /mnt/disk --mkdir # DISK = "/mnt/disk" -def find_disk(): # This code from dashedgeless - disk_list = "CDEFGHIJKABLMNOPQRSTUVWYZ" - for i in disk_list: - this_disk = i + ":" - if os.path.exists(this_disk + "/ventoy/ventoy.json"): - return this_disk +def find_disk(): + if platform.system() == 'Linux': + if "{disk}" in DISK: + raise OSError( + "Cannot auto find the Ventoy disk in Linux! Please change \"DISK\"") + elif platform.system() == 'Windows': + ventoy_drives = [] + for i in "CDEFGHIJKABLMNOPQRSTUVWYZ": + this_disk = i+":" + if os.path.exists(this_disk + "/ventoy/ventoy.json"): + ventoy_drives.append(this_disk) + if len(ventoy_drives) != 1: + for (index, value) in enumerate(ventoy_drives): + print(f"{i}:{ventoy_drives[i]}", end=" ") + return ventoy_drives[int(input("Please choose your Ventoy device:"))] + else: + raise OSError(f"Unsupported operating system:{platform.system()}") + raise OSError( "Cannot find the Ventoy disk!(try to run ventoyPlugson once)") DISK = DISK.replace("{disk}", find_disk()) -print("use disk: "+DISK) +print("Use disk: "+DISK) with open(DISK+"/ventoy/ventoy.json", "r") as file: - vtoycfg = json.load(file) + ventoy_cfg = json.load(file) searchroot = "" -searchlevel = 3 -if "control" in vtoycfg: - for i in vtoycfg["control"]: +search_level = 3 +if "control" in ventoy_cfg: + for i in ventoy_cfg["control"]: if "VTOY_DEFAULT_SEARCH_ROOT" in i: searchroot = i["VTOY_DEFAULT_SEARCH_ROOT"] if "VTOY_MAX_SEARCH_LEVEL" in i: if i["VTOY_MAX_SEARCH_LEVEL"] != "max": - searchlevel = int(i["VTOY_MAX_SEARCH_LEVEL"]) + search_level = int(i["VTOY_MAX_SEARCH_LEVEL"]) filelist = [] -def dfs(deep, dir): - if deep > searchlevel: +def dfs(deep, dir, search_level): + if deep > search_level: return lists = os.listdir(DISK+dir) for i in lists: @@ -55,30 +68,33 @@ def dfs(deep, dir): if ".iso" in i.lower() and KEYWORD in i.lower(): filelist.append(dir+"/"+i) else: - dfs(deep+1, dir+"/"+i) + dfs(deep+1, dir+"/"+i, search_level) -dfs(0, searchroot) +dfs(0, searchroot, search_level) -if "injection" in vtoycfg: - for i in vtoycfg["injection"]: +if "injection" in ventoy_cfg: + for i in ventoy_cfg["injection"]: if "image" in i: if i["image"] in filelist: filelist.remove(i["image"]) else: - vtoycfg["injection"] = [] -print("find iso:", filelist) + ventoy_cfg["injection"] = [] + +print("Found iso:", filelist) for i in filelist: - vtoycfg["injection"].append({ + ventoy_cfg["injection"].append({ "image": i, "archive": "/PEinjector/PEinjector.7z" }) -print("write config") + + +print("Writing config") with open(DISK+"/ventoy/ventoy.json", "w") as file: - file.write(json.dumps(vtoycfg)) + file.write(json.dumps(ventoy_cfg)) -print("copy file") +print("Copying files") if not os.path.exists(DISK+"/PEinjector"): os.mkdir(DISK+"/PEinjector") if os.path.exists(DISK+"/PEinjector/PEinjector.7z"): @@ -88,14 +104,17 @@ if not os.path.exists(DISK+"/PEinjector/disable.txt"): with open(DISK+"/PEinjector/disable.txt", "w") as file: pass -print("write version info") + +print("Writing version info") shutil.copyfile("version", DISK+"/PEinjector/VERSION") -print("make dir") + +print("Making dir") if not os.path.exists(DISK+"/PEinjector/install"): os.mkdir(DISK+"/PEinjector/install") -print("install basic package") + +print("Installing basic package") if not os.path.exists(DISK+"/PEinjector/package"): os.mkdir(DISK+"/PEinjector/package") for i in os.listdir("package"): @@ -103,4 +122,5 @@ for i in os.listdir("package"): shutil.rmtree(DISK+"/PEinjector/package/"+i) shutil.copytree("package/"+i, DISK+"/PEinjector/package/"+i) -print("done") + +print("All done.")