# WinAppsRecover **Repository Path**: icerayer/win-apps-recover ## Basic Information - **Project Name**: WinAppsRecover - **Description**: 已合并到【AppXManager】仓库统一更新;Windows预装应用卸载后的重新安装 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-08 - **Last Updated**: 2024-07-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WinAppsRecover #### 介绍 Windows预装应用卸载后的重新安装,这是一个使用Python编写的桌面应用程序,主要用于管理Windows系统中的预装应用。该程序通过读取`C:/Program Files/WindowsApps/`目录下的AppxManifest.xml文件来获取预装应用信息,并提供了安装、卸载、全选、反选、选择未安装以及一键安装和卸载等功能。 ![软件界面](res/软件界面.jpg) #### 软件架构 1. **类定义**: - `App` 类:用于封装预装应用的信息,包括应用名称、XML配置文件路径以及安装状态。 2. **核心功能函数**: - `install(app)`:负责通过PowerShell命令安装指定的应用。 - `uninstall(app)`:负责通过PowerShell命令卸载指定的应用,并根据卸载结果更新应用状态及界面元素。 - `getColor(app)`、`getBtColor(app)` 和 `getDisabled(app)`:这三个辅助函数根据应用是否已安装来动态设置界面上文本的颜色、按钮颜色以及按钮的禁用状态。 - `notfoundAppx(app_name)`:检查指定应用是否在系统中已卸载。 3. **数据获取与处理**: - 通过PowerShell命令获取系统中已安装的AppxPackage列表。 - 遍历`C:/Program Files/WindowsApps/`目录下的子目录,读取每个子目录中的AppxManifest.xml文件以获取预装应用信息,并将这些信息封装到`App`对象中,存储在一个字典中(键为应用名称,值为对应的App实例)。 4. **图形用户界面(GUI)设计**: - 使用PySimpleGUI构建一个主窗口,包含两个主要部分: - **预装应用列表区域**:使用多行布局展示所有预装应用及其状态,每行包含一个复选框表示应用是否已安装、安装按钮和卸载按钮。 - **操作控制区域**:一组操作按钮,如全选、反选、全不选、选择未安装、一键安装和一键卸载等,以方便用户批量操作。 5. **事件循环**: - 主程序启动一个无限循环,监听从GUI接收的事件(如按钮点击)。 - 根据接收到的不同事件类型调用相应的处理函数进行响应。 #### 功能特性 - **应用列表显示**:列出系统中存在的预装应用及其安装状态。 - **安装与卸载**:单个或批量安装、卸载指定预装应用。 - **多种选择模式**:支持全选、反选、全不选及仅选择未安装的应用。 - **确认提示**:在执行一键安装或卸载操作前,会弹出确认窗口以避免误操作。 #### 使用方法 1. 运行本程序,将出现一个带有预装应用列表的界面。 2. 通过勾选框选择需要操作的应用。 3. 点击对应按钮进行安装、卸载等操作。 - “安装”按钮用于安装未安装的应用,安装成功后按钮颜色变为灰色并禁用。 - “卸载”按钮用于卸载已安装的应用,卸载成功且确认应用不存在后,相应应用名的颜色变回红色,“安装”按钮重新启用。 4. 利用“全选”、“反选”、“全不选”和“选择未安装”功能快速切换所选应用。 5. 点击“一键安装”或“一键卸载”,在确认对话框中点击“是”后,程序将对已选择的应用进行相应的批量操作。 #### 技术实现 本程序主要利用了以下库: - PySimpleGUI:构建图形用户界面(GUI)。 - subprocess:调用PowerShell命令以实现应用的安装和卸载操作。 - pathlib:处理文件路径相关操作。 - xml.etree.ElementTree:解析AppxManifest.xml文件以获取预装应用信息。 请确保在运行环境中具有管理员权限以执行应用安装和卸载命令。