Winbootmate ((link)) | Full

self.log("Preparing USB with diskpart...") subprocess.run(f"diskpart /s {dp_script_path}", shell=True, capture_output=True) os.unlink(dp_script_path)

# Buttons frame btn_frame = tk.Frame(root) btn_frame.pack(pady=5)

def run_admin_cmd(self, command, description=""): """Run a shell command that may need admin rights.""" try: self.log(f">>> {description or command}") result = subprocess.run(command, shell=True, capture_output=True, text=True) if result.returncode == 0: self.log("✓ Success") self.log(result.stdout) else: self.log("✗ Failed") self.log(result.stderr) return result except Exception as e: self.log(f"Error: {e}") return None winbootmate full

self.log("WinBootMate ready. Run as Admin for full features.")

tk.Button(btn_frame, text="1. View Boot Entries", command=self.view_boot_entries, width=20).grid(row=0, column=0, padx=5, pady=5) tk.Button(btn_frame, text="2. Backup BCD", command=self.backup_bcd, width=20).grid(row=0, column=1, padx=5, pady=5) tk.Button(btn_frame, text="3. Restore BCD", command=self.restore_bcd, width=20).grid(row=0, column=2, padx=5, pady=5) Backup BCD", command=self

# Title title = tk.Label(root, text="WinBootMate", font=("Segoe UI", 16, "bold")) title.pack(pady=10)

tk.Button(btn_frame, text="4. Create Bootable USB", command=self.create_bootable_usb, width=20).grid(row=1, column=0, padx=5, pady=5) tk.Button(btn_frame, text="5. Fix Boot Errors", command=self.fix_boot_errors, width=20).grid(row=1, column=1, padx=5, pady=5) tk.Button(btn_frame, text="6. Rebuild BCD", command=self.rebuild_bcd, width=20).grid(row=1, column=2, padx=5, pady=5) Fix Boot Errors", command=self

self.log("Extracting ISO to USB (this may take a while)...") # Mount ISO mount_result = subprocess.run(f'powershell Mount-DiskImage -ImagePath "{iso_path}" -PassThru', capture_output=True, text=True) if mount_result.returncode != 0: self.log("Failed to mount ISO. Try using Rufus or Ventoy.") return # Get mounted drive letter mount_letter = None for line in mount_result.stdout.splitlines(): if ":" in line and "\\" in line: # crude extraction parts = line.split() for p in parts: if len(p) == 2 and p[1] == ':': mount_letter = p break if not mount_letter: self.log("Could not find mounted ISO drive.") return