我正在完成一款Windows软件管理工具,一定有你需要的功能

用了多年的 Windows 系统,实在无法忍受软件备份,还原以及碎片化维护的痛苦,所以有了它。

  • 前置共识,大众基本一致的共识,Windows 下软件分两类,标准安装的软件(写入注册表/服务/漫游配置等),便携软件或叫做绿色软件(严格意义上说不会在自身目录以外释放数据)。

  • 解决什么问题,或者说当前的痛点是什么?

    • 对于标准安装软件:
      • 数据难以备份,因为 Windows 没有系统级的约束,每个软件随便写配置,甚至写配置的目录名跟软件名没什么直接关系(可能跟公司名有关系),然后有的存 appdata,有的存注册表,有的存根目录,不一而足。
      • 没有统一的软件更新检测通道,只能用类似XX管家类的,他们这些管家懂得都懂。
    • 对于便携软件:
      • 相对于标准安装软件来说,便携软件没有统一的管理入口,大多数靠用户创建目录维护,很多时候甚至都忘记了有这么个软件,只能靠一些启动软件管理。
      • 同样的难以备份数据,因为很多软件绿色不绿,依然会写 AppData 目录,或者直接在 User 根目录下创建配置。哪怕绝对绿色面临数十上百多层目录备份也麻烦。
      • 大部分情况下都是下载新版替换老版本 ,然后把数据配置复制过来。如果要完美迁移可能需要用文件目录对比工具进行逐行对比,着实麻烦。
  • 我做了什么?

  • 扫描系统建立所有软件的台账,其实不容易,先说标准软件,Windows 下其实也有好些方式管理比如 WinGet/Scoop/Chocolatey/Npm等,所以先扫描,把软件跟数据(配置文件/注册表)建立关联评分。

  • 数据备份,这个是本软件的核心功能之一,备份所有关联的数据,然后恢复数据。

  • 软件启动工作台,不同于常规启动软件,他们大部分都是搜索型,我主要思路是树形,自上而下的树形结构更符合人类逻辑,在大脑建立全貌,降低认知负荷,可以引用电脑真实文件夹也可以创建虚拟文件夹,当然也支持搜索。正在做的是一个基于场景的启动,想要做什么,然后以来什么软件,然后打包。

  • 因为还未完成所有模块,所以放部分截图,欢迎大家分享痛点。

要出门了,有空继续。

5 个赞

启动工作台这块我应该不会用,我对启动工具的需求主要还是小、轻、快。不过「把软件和它散落的数据目录关联起来」这个功能挺吸引我。既然已经能识别软件和数据的关联,能不能再进一步支持把 C 盘里的这些数据目录迁移到其他盘,用软链接接回原路径?这是当前功能的延展,能解决 C 盘空间占用的问题。

1 个赞

是要用户自己去关联目录吗,还是软件会自动关联一部分,其余用户去关联

自动分析识别关联数据,包括文件夹/注册表,但是由用户选择确认。也可以加一个置信度阈值后自动选择。

我现在基本识别了所有关联数据,理论上是可以的,我自己也有几个程序用了链接的方式修改配置文件路径,但是其实 Windows 下这个操作有风险,有的程序在更新/安装/修复时会重命名数据目录,可能会有竞态问题,导致丢失数据,所以这个要兜底方案,保证数据不丢失,得再设计下。如果由用户自己选择就简单了 ,暴露几个功能在界面上就好了。

支持,顶一下

既然有备份了,会不会增加卸载功能

希望支持强力卸载功能,不使用安装程序自带的卸载程序(客户公司提供的安全软件,卸载需要密码),直接清理掉相关的注册表、服务等相关配置

不是有一个软件叫UniGetUI啊,看看是不是你想的完全体
Release notes | UniGetUI

备份还原这块有个疑问:备份出来的数据是按软件打包成独立文件的吗?如果换电脑,能直接在新系统上还原吗?感觉迁移场景下会很实用。

卸载目前我是读取注册表调用卸载按钮,还没有直接删除对应关联数据的设计,卸载同样存在置信度问题,一般用户操作有极小概率会删除错误,尤其是一个公司有很多系列软件,都在一个 AppData 目录下,这需要好好考虑下。

标准安装软件只是备份关联的数据,用户手动安装新版之后,直接还原覆盖会把备份的数据覆盖过去。便携软件分三种情况,整目录备份,或者精简(排除掉tmp log之类的),或者纯手动选择。
类似:

这个软件我也用了一段时间,不过他主要是维护了一套软件中心,所以它可以比较方便的更新,版本管理,而且备份我没看到它本地数据(可能我姿势不对),我这个主要定位是备份,还有环境变量,右键菜单等,然后就是管理便携软件。

一看这软件列表就知道是个软件资深爱好者

还有第三类,打包应用

我也在写一个启动器,快2万行,不过太菜了现在快要写崩了。三种方式启动,列表、搜索和界面,类claunch。

数据备份、网址更新、检测运行,也是其中的想法之一,不过都只放了占位,主要是其他启动项功能太多导致数据量爆炸,过多的界面区域交互导致bug频发,不过主要是太菜了

说实话你那些功能做起来挺难的,我也就是想做个检测更新,手动备份而已。自动更新、自动化卸载,自动化找配置文件,我都不知道要怎么做

无论是启动器还是其他管理功能,都是先要建立软件基础台账,然后启动还是其他的只是消费数据,如果要快而且省事你可以直接用everything SDK,用它给你数据,然后你来消费这个数据,检测更新放弃自己维护一台软件库的想法,我的方法是找官网,然后写个网页解析,提取版本对比,这样可以很灵活,不用硬编码,如果官网改变了修改正则就可以了。

更新其实 Windows 下面很难做统一的更新手段,碎片化太厉害了,比如有的支持支持静默,有的不支持,有的支持指定路径(命令参数指定),有的不行,除非一个个软件分析测试,然后保存规则,手动更新安全一点。

找配置应该在基础台账完成,分析注册表,枚举一次,然后通过软件名称/目录交叉验证,我是这个方法。具体有问题可以回帖交流。

1 个赞