# LocalSoftwareManager
**Repository Path**: wd34zc/LocalSoftwareManager
## Basic Information
- **Project Name**: LocalSoftwareManager
- **Description**: 基于本地文件系统的软件管理程序
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-06-09
- **Last Updated**: 2026-06-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# LocalSoftwareManager
基于本地文件系统的软件库管理工具。将散落的安装包、应用程序、压缩包统一收纳,建立属于自己的软件仓库。
### 特色
- **纯本地,零依赖**:所有文件存储在本地磁盘,不依赖任何云服务,完全由你掌控
- **软件即文件夹**:每个软件一个文件夹,版本文件、图标、配置一目了然,可直接用资源管理器浏览
- **附录随软件走**:安装说明、注册机、破解补丁、使用教程等作为软件附录一起保存,换电脑或分享给同事时不会遗漏
- **自动识别**:拖入文件自动提取软件名、版本、平台架构,无需手动填写
- **一键安装**:安装包提权执行、压缩包解压 + 快捷方式 + 环境变量一气呵成
> 典型场景:下载了 `KeePassXC-2.7.11-win64.exe`,把注册机和破解说明 `.txt` 一起拖进去,之后任何时候重装系统,打开软件管理器就能找到完整的一套。
---
## 添加软件
### 支持的文件格式
| 扩展名 | 说明 | 默认平台 |
|---|---|---|
| `exe` | Windows 可执行文件 | win |
| `msi` | Windows 安装程序包 | win |
| `zip` | 压缩文件 | win |
| `rar` | RAR 压缩文件 | win |
| `7z` | 7z 压缩文件 | win |
| `iso` | 光盘镜像文件 | win |
| `tar` | Tar 归档文件 | linux |
| `gz` | Gzip 压缩文件 | linux |
| `tar.gz` | 压缩的 Tar 归档 | linux |
### 添加方式
- **拖拽添加**:直接将文件拖入主窗口,自动复制到待添加目录并打开添加界面
- **按钮添加**:点击"添加软件"按钮,手动将文件放入 `.new-softwares` 目录后操作
- 支持批量添加,多个文件逐个处理
### 填写软件信息
| 字段 | 说明 | 是否必填 |
|---|---|---|
| 软件名 | 从文件名自动提取,也可手动输入或从下拉候选选择 | 必填 |
| 版本号 | 从文件名自动提取,也可手动输入或从下拉候选选择 | 必填 |
| 描述 | 从 PE 文件信息自动读取,可手动编辑 | 选填 |
| 平台 | `win` / `linux`,自动检测 | 必选 |
| 架构 | `x64` / `x32` / `arm`,自动检测,可为空 | 可选 |
| 应用类型 | 安装包 / 应用程序 / 压缩包,自动检测 | 必选 |
#### 平台与架构自动检测规则
从文件名关键字自动判断:
| 文件名关键字 | 平台 | 架构 |
|---|---|---|
| `win` / `windows` + `x64` / `amd64` / `x86_64` | win | x64 |
| `win32` / `x86`(不含 `x86_64`) | win | x32 |
| `win` / `windows`(无架构关键字) | win | *(空)* |
| `.tar.gz` / `.tar` / `.gz` + `x64` / `amd64` | linux | x64 |
| `.tar.gz` / `.tar` / `.gz`(无架构关键字) | linux | *(空)* |
| `aarch64` / `arm64` / `arm` | linux | arm |
#### 旧格式兼容
旧版本使用合并的平台值(如 `win64`),升级后自动拆分为平台 + 架构:
| 旧值 | → 平台 | → 架构 |
|---|---|---|
| `win64` | win | x64 |
| `win32` | win | x32 |
| `linux64` | linux | x64 |
| `win` / `linux` | 原值 | *(空)* |
### 统一文件命名
添加后文件自动重命名为统一格式:
```
{软件名}-{版本号}-{平台}[-架构].{扩展名}
```
示例:
- `KeePassXC-2.7.11-win-x64.exe` — 有架构
- `Notepad++-8.5.0-win.exe` — 无架构
- `Redis-7.0.0-linux-x64.tar.gz` — Linux
### 压缩包特殊处理
添加压缩包(zip/rar/7z)时,可额外配置:
- **可执行文件**:压缩包内的主程序路径,如 `KeePassXC.exe`,支持逗号分隔多个。安装后自动创建开始菜单快捷方式
- **环境变量路径**:需加入系统 PATH 的目录,如 `bin/`,支持逗号分隔多个
两者均可通过"浏览"按钮可视化勾选压缩包内部文件/目录。
### 软件附录
每个软件版本可以附带任意文件作为"附录"——安装说明、注册机、破解补丁、使用教程等。附录与软件绑定存储,不会丢失。
- 将文件放入与软件同名的 `_crack` 文件夹即可自动关联(支持文件和子目录)
- 安装/执行软件时自动将附录复制到桌面
- 支持拖拽批量添加附录文件
- 也可用于存放 Portable 版的配置文件、插件等
---
## 管理软件
### 软件列表
- 左侧列表展示所有已安装软件,显示图标、名称、描述、版本数量
- 搜索框实时过滤,支持按软件名和描述搜索
- 键盘输入自动聚焦搜索框
### 软件详情(右侧面板)
- **图标**:显示软件图标,点击可更换(支持本地文件、URL下载、exe/dll提取、拖拽导入)
- **名称**:软件名称(可选中复制)
- **描述**:点击"编辑"按钮修改,保存到 `info.ini`
- **目录**:点击"打开位置"直接在资源管理器中打开软件文件夹,所有文件一目了然
- **版本列表**:展示所有版本,按添加时间倒序排列
> 软件目录即普通文件夹,可以用资源管理器直接浏览、复制、备份。换电脑时直接拷贝整个软件库目录即可。
### 版本管理
版本列表显示每个版本的详细信息:
| 列 | 说明 |
|---|---|
| 版本号 | 软件版本,如 `8.0.2310.11` |
| 类型 | 安装包 / 应用程序 / 压缩包 |
| 扩展名 | 文件格式,如 `exe`、`zip` |
| 平台 | win / linux |
| 架构 | x64 / x32 / arm / *(空)* |
| 文件大小 | 格式化显示 |
| 添加时间 | 首次添加的时间戳 |
| 破解 | 补丁下载/打开按钮 |
| 操作 | 安装、执行、卸载等 |
#### 各类型版本操作
**安装包(exe/msi):**
存放系统软件的安装程序,如 `Everything-1.4.exe`、`7z2201-x64.msi`。
- "下载并执行" / "执行" — 以管理员权限运行安装程序,开始系统安装流程
- "打开位置" — 在资源管理器中定位安装包文件
> ⚠️ 本程序不负责检测软件是否已安装,也不支持卸载已安装的系统软件。如需卸载,推荐使用 [Geek Uninstaller](https://geekuninstaller.com/)。
**应用程序:**
存放免安装的独立可执行程序,如 `Everything.exe`、`HWiNFO64.exe`。这类软件无需安装,双击即可运行。
- "下载并安装" — 将程序复制到应用目录,并在开始菜单创建快捷方式。如果安装了 [uTools](https://u.tools/),安装后即可在 uTools 中搜到
- "打开所在位置" — 在资源管理器中定位程序文件
- "卸载" — 删除本地程序文件,同时移除开始菜单中的快捷方式
**压缩包(zip/rar/7z):**
主要针对绿色便携版软件和免安装软件,如 `KeePassXC-2.7.11.zip`。支持两项额外配置:
- **可执行文件**:压缩包内需要创建开始菜单快捷方式的主程序,如 `KeePassXC.exe`,支持逗号分隔多个
- **环境变量路径**:需要加入系统 PATH 的目录,如 `bin/`,支持逗号分隔多个(常用于便携版 JDK、Python 等)
操作流程:解压到指定目录 → 扁平化单层包裹目录 → 创建开始菜单快捷方式 → 配置环境变量。卸载时逆向操作:移除环境变量 → 删除开始菜单快捷方式 → 删除解压目录。
**Linux 文件(tar/gz/iso):**
- "下载到桌面" — 直接复制文件到桌面,不执行其他操作
#### 右键菜单
版本行右键菜单提供:
- **编辑** — 修改版本号、平台、架构、可执行文件、环境变量路径
- **删除** — 删除版本文件及配置
- **重新添加** — 移回待添加目录重新配置
### 软件级别操作
- **删除软件**:右键软件列表项,删除整个软件目录(含所有版本)
- **刷新**:强制重新扫描磁盘,更新列表
- **配置**:修改软件库目录、安装包目录、应用下载目录等
### 缓存机制
- 软件列表自动缓存到 SQLite 数据库,启动时优先从缓存加载
- 磁盘目录数变化时自动触发重新扫描
- 数据结构升级时自动重建缓存
---
## 构建打包
### 环境要求
- JDK 1.8(`C:\Program Files\Java\jdk1.8.0_202`)
- Maven(通过 IntelliJ IDEA 内置,或独立安装)
- [launch4j](http://launch4j.sourceforge.net/)(已包含在 `launch4j/` 目录)
### 编译 JAR
```bash
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_202
mvn clean package -Dmaven.test.skip=true
```
输出:`target\local-software-manager-1.0.jar`(Spring Boot 可执行 JAR)
### 打包 EXE
1. 将 JAR 和 JRE 复制到 `dist/` 目录:
```bash
mkdir dist\jre
xcopy /e /q /h "%JAVA_HOME%\jre\*" dist\jre\
copy target\local-software-manager-1.0.jar dist\
copy app.ico dist\
```
2. 使用 launch4j 生成 EXE:
```bash
launch4j\launch4jc.exe launch4j-config.xml
```
输出:`dist\LocalSoftwareManager.exe`
### launch4j 配置要点
```xml
false
gui
app.ico
jre
1.8
1.0.0.0
LocalSoftwareManager
...
```
### 一键打包
运行 `pack.bat` 自动完成以上所有步骤。
### 发布说明
发布时将整个 `dist/` 目录打包为 zip。用户解压后运行 `LocalSoftwareManager.exe` 即可,无需安装 Java。推荐为 EXE 创建桌面快捷方式(`create-shortcut.ps1`)。