关于重装操作系统的「最佳实践」

最近实在受不了 Windows 11 过于令人汗颜的系统性能和 Dev Channel 近期版本频繁出现的基础性问题,这些 Bug 严重影响了个人的使用体验和工作效率。作为 Windows Insider 7 年老用户的我,也不得不决定回滚到 Windows 10。

image

然而使用 Windows 11 半年有余,新安装的软件、更改的应用配置数量相当多,以至于直接恢复先前 Windows 10 的系统镜像变成了一个不可取的选择。所以,最后我还是选择了逐个导出离线工具的配置文件,卸载可能造成残留的软件,全新安装 Windows ISO,配置 Windows,又花了整整两天时间把工作、学习所需的资料、软件和各种开发环境逐一安装回来。

作为一个非轻量级 PC 用户(相对于只用电脑办公、看视频而言),在这个过程中,我遇到了一些问题,想听听各位是怎么解决的——或者说,各位是否有一种更为优雅的解决方案?


重装软件的思考

众所周知,软件的重新安装/重配置是重装系统环节中最复杂的一环。它大致可以分成三个阶段:「软件和配置的备份」「重装过程中的抹除」「软件的安装和配置」

我们日常使用的软件一般会分成四类:固化到操作系统的(如 Universal Theme Patcher、Explorer Patcher 、各类驱动程序等)、通过安装包(Setup.exe/.msi)安装的(如印象笔记)、通过微软商店或其他包管理器安装的(如各种 UWP 应用、Steam 游戏,以及你通过 choco/winget/pip/npm 等安装的一些具有命令行工具的小软件)、就地安装的(如各种绿色、便携版软件、游戏,一些 SDK 运行环境等)。

第一类软件自然不在我们的讨论范围内,只需要检查兼容性后,简单地重新安装即可。

第三类软件一般不需要考虑备份问题,尤其是对于自带云存档的 Steam 游戏而言。而通过其他包管理器安装的工具,包管理器自身大多提供了记录安装列表和批量安装、卸载的功能,可以极大地简化安装操作。不过,这依然是需要费工夫去做的。

第四类软件最简单。不考虑极少数粗制滥造、会满磁盘写文件的绿色软件,大部分精心制作的便携应用程序都会将必要的配置文件放在当前目录下。只要安放位置和操作系统不在同一分区,你甚至不用考虑它们。

第二类软件是比较复杂的。
由于侵入到注册表中,而注册表在系统全新安装后必然会重置,因此在「软件和配置的备份」这一步上,基本上没有备份的余地,必须利用软件自身提供的「导入/导出」「云同步」类的功能进行数据备份(手动迁移数据目录难度太大,且无法面面俱到,不在我们的讨论范围内);而对于软件自身,最多保存一下之前用过的安装包,或者记录一下下载地址。
在「重装过程中的抹除」上,又需要分情况讨论:如果软件和操作系统在同一分区,抹除通常来说是完全的;但如果你和我一样,习惯于将软件装在一个单独的分区上,那么就必须考虑重装后的旧软件残留问题。自然,如果这个分区上只有软件自身的程序文件,可以简单地格式化分区解决问题。但是一些软件默认将其个人数据文件保存在安装目录内部(点名某信和某 Q),或者是保存在其他分区上(如习惯于把配置文件、缓存放在另一分区内的 Dart)。这种情况下,重装系统后就会留下大量的软件残余垃圾。靠一些工具可以清理掉一部分,但毕竟不如事先卸载软件,靠软件自身的删除程序清理来得彻底。这时,挨个地卸载软件就变成了一件必要的工作。
而「软件的安装和配置」,相较起来倒可以算是比较轻松的过程了。这个过程是在清洁的操作系统上进行的,相比于之前臃肿/卡顿的旧系统而言,在速度和时间成本上通常都不会太让人为难。

总之,这些安装包安装型的软件,几乎成为了重装系统的最大阻力。 考虑到应用型的软件大多不涉及操作系统本身,我们能否找出一种更好的迁移方法?

曾经试用过一个很有意思的软件,叫 CloneApp。这个软件自带了一份常见应用程序的配置文件位置数据库,可以扫描你安装的软件列表,并一键备份/恢复有记录的软件的应用数据。这基本上解决了第一步和第三步的痛点。但是这个小工具毕竟年久失修,且是个人维护,各种方面而言都难以起到实用的效果。

系统配置的迁移

这一步可能对大多数初级用户而言都没有必要。但是,作为有关整个系统重装过程的讨论,我觉得还是有必要提几句。

试考虑这两个情景:

  1. 由于开发工作需要,你的 PATH 等环境变量塞满了大量 SDK 的解压目录。重装系统后,你不得不重新一个一个地添加进去。
  2. 你曾经看过一个屏蔽某软件自带广告的好办法,只需要修改一个注册表项。重装系统后,你只能再次打开百度、Google 搜索那篇文章。

由于目录的变更和内部结构的变化,环境变量和注册表的迁移都是难以实现的。

但至少,我们是否需要事先记录下这些曾经作出的改变,以备日后查看呢?据我所知,这样的软件应该还没有出现过。

其他思路?

在重装系统这件事上,每个人都有自己的想法。

我的一些朋友选择了一种相当简单粗暴的解决方案:只使用便携式软件。对 Ta 而言,一个配置良好的移动硬盘就足以装下大部分的数字生活数据。因此也不需要考虑这些问题。

或者,对另外一部分人来说,重装系统压根不需要考虑那么多,备份好重要的个人数据就可以格式化整个硬盘,软件的事完全可以之后再说。他们将重装系统视为一次重新开始、重新探索每个软件和操作系统本身的使用方法、使用技巧的机会。


寻找更高效的工具,抑或改变自己的 PC 使用习惯?我个人认为,在重装系统这件事上,应当存在着某种让时间和精力成本都最小化的「最佳实践」。它不应该是某种令人沮丧的麻烦事。

不知不觉写了一大堆废话。无论是推荐能让重装事半功倍的软件、提出你平时运用的更快捷的重装方法,还是对于「重装系统」这件事本身新的理解,都欢迎各位留言、讨论、总结、批评。

10 Likes

自己是除非万不得已,不重装。

因为 SSD 容量较小,我自己是将软件和数据都放在 C 盘下。每次重装前都执行以下步骤:

  1. 全盘全量备份到外部硬盘(VHD 格式),以避免数据丢失
  2. 对照已安装程序列表,整理出需要备份数据的程序
  3. 根据 2 中的列表逐个备份,有导出功能的直接导出,没有的尽量备份应用数据/配置文件夹
    • Chrome / Edge: User Data 文件夹
    • QQ:Tencent Files
    • 微信:WeChat Files
  4. 备份文档类数据:主要是 Documents 文件夹,以及存放自己各个项目的文件夹
  5. 备份系统/开发环境数据:
    • PATH 变量列表
    • JetBrains IDE 开启设置同步
    • 用户主目录下的各种 . 文件夹(.ssh…)
    • WSL 用户目录文件打包

最后就是重装 + 重新配置了。

一般情况下,重装后第一天可以把系统配置到基本可用的状态,但是接下来的一周甚至一个月内依然会时不时感觉不顺手,因为无法做到面面俱到的恢复,只能遇到时再处理了。

不过也听说过更激进一些的做法,例如

但无论如何,重装 Windows 都是挺麻烦的… 如果要让重装体验更好,可能得从其他 OS 取经:

  • Mac:Time Machine 系统级别的备份支持
  • Linux:home 目录和系统目录分离
  • Chrome OS:万物上云

或许可以从另一个维度思考:重装系统的目的是什么?

  • 系统崩了:可能 Windows 的就地安装就足够了?
  • 系统不干净了:备份后手动慢慢清理,或者用系统还原 / 差分 VHD?
4 Likes

有点污蔑绿色软件了。。。。
绿色软件才是 不写注册表(除非需要自动启动、自动关联、特别驱动)、只写当前目录,即拷即用,即删即清。

只可惜这些软件不多,越是大公司(微软、谷歌)的,越不绿色

3 Likes

我几个月前从空白盘安装了 Windows 11,这个系统上我保持了一些习惯以便随时重装系统时重建自己习惯的环境。

系统配置

在 Github 我有一个储存某些软件配置的私有库,这次重装系统我新建了一个手动记录系统配置更改 (例如手动编辑注册表) 等操作的 log 文件。

至于在 Windows 的 Settings 中更改的配置,新装系统后我怎么都会过一遍图形化的设置界面,所以对这些设置项的更改的备份不在我考虑范围内。

软件

我现在尽量通过 scoop 安装软件,部分游戏、软件通过 Steam 安装,所以当前系统中手动从安装包 (或从 Microsoft Store) 安装的软件只有约 6 个。

通过 scoop 或 Steam 重装应用都还算方便。对于 scoop 而言,只要事先通过 scoop export 备份了已安装列表,重装基本就是一条命令的事。

部分我不关心它更不更新的便携版应用我放在 NAS 里,开机自动挂载对应文件夹,不受重装系统或更换设备影响。

软件配置

我有一份完整的已安装软件列表,某些软件的配置写在文件里或可导出,我都在列表中做了标记。不定期和卸载前都按列表中的标记备份一遍。例如,不定期备份 %userprofile% 里的配置文件 (及部分其他文件)。

少数配置不可导出的软件,我只能重装时手动再来一遍。例如配置写在注册表的 IDM。

文件

文件的备份就比较简单了。不重要的在 NAS,重要的随时同步,两者之前的找个好地方放。

其他

上面没有特别提到浏览器等安装的插件。某些插件的备份包含在对主程序的备份内,例如备份浏览器 profile 时自然做到了对插件的备份,备份 mpv 配置时也不至于手动排除脚本文件夹。对于其他无法随主程序备份的插件,按普通程序处理。

另外,对我来说减轻备份工作负担的另一个办法是尽量不装或替换难备份/不干净的软件,虽然这部分就没有什么参考性了。例如现在这系统我没装腾讯、阿里等的程序,某些涉及 Matlab 的需求使用 Julia 代替。

2 Likes

你把绿色软件和便携软件搞混了,便携软件一般都是配置在当前目录的ini,几乎不写注册表

绿色软件是前些年搞精减和去广告的那些人,在分享的解压包里自带1到2个bat文件,或者一个小nsis写的程序,运行后能快速写入和删除配置和运行的残留,这种的还算负责,可以标榜为绿色软件

还有些打着绿色软件的旗号,分享的软件,虽然直接也能用,但是是软件本身运行后自动写入注册表,没有提供清理注册表和软件在%appdata%里运行残留的bat或者程序的,这类假绿色软件就是毒瘤

绿色软件是几十年前的名词了。
你说的是 再打包软件,它们只是安装过程、内容变了一些,软件会对什么目录操作,是改不了的。

写当前目录还是%appdata%,各有利弊,就像ini和注册表哪个好一样。
个人倾向于 当前目录、ini更好。但不能强求。

或许没有最佳实践,只有最适合自己的,因为每个人的使用习惯、对数据的取舍不同。

就我来说,系统盘的话,我不会在 ~/Documents 中存放数据,Windows PowerShell 配置文件除外。另外,目录下的 QQ/TIM/WeChat 之类的我都是直接丢弃的。~/Desktop 只临时存放工作文件,且通过云进行同步。

剩下唯一需要考虑的无非是 ~ 下的各种 dotfile,已经保存到 GitHub。

各种其他文件保存到非系统盘,重要文件云上同步,完成的项目及时归档存储。

然后就是软件部分了,像一些命令行工具或者需要被其他软件调用的,直接用 Scoop 进行安装(基本都收录在 main bucket),完全不用考虑环境变量的事情。

VS Code、JetBrains、Chrome、Edge 之类的各种配置都可以通过账号进行同步,也基本不用担心。

略微麻烦的是 GUI 应用,以前我也尽量通过 Scoop 安装(大部分可以在 extras bucket 中找到)但是感觉有问题。一是有些软件没有,得自己写 manifest 或添加别人的 bucket;二是软件普遍大,解压安装的时候经常等得蛋疼,心想还不如手动点点点。所以,前不久尝试通过 winget 安装 GIMP、Blender、Inkscape 之类的,感觉还不错。重要的是,我自认为需要的软件不多,所以需要通过 winget 安装的也没几个。毕竟小一点的或者不常用的 GUI 应用还是借助 Scoop 搞定。

全部搞定之后就是软件的设置部分了,这个完全可以拉长战线,用到哪个的时候再设置也不迟,而且很多我都直接默认设置了。还有就是,使用 WSL2 + Docker Desktop 以及 Vagrant + VirtualBox 的组合将各种环境隔离避免污染本机。

想到哪说到哪,各种细项难免忽略。

1 Like

要是不跨版本升级降级的话,重装不如不如备份个干净的系统,到时候还原。
IDM备份可以试试这个:
https://musetransfer.com/s/8ht2cu9kv(有效期至2月2日)|密码:7380|【Muse】你有一份文件待查收,请点击链接获取文件

绿色软件是个比较“国人”的叫法,我一般用portable/便携版来找这种软件。
一、我对便携版软件是这样分类的:

  1. 单文件便携版
  2. 多文件便携版
  3. 配置文件、缓存需要写入用户目录的便携版
  4. 需要对注册表读写、系统参数设定、下载模块才能正常工作的便携版

我认为分类4的便携版是毫无意义的。前三者我会把程序分类放到A:/prg 或者 D:/prg (A盘是一个小容量SSD,C盘是系统盘SSD,D盘往后是大容量HHD)这样重新安装系统也完全能够正常使用

二、一部分软件虽然需要安装,但是实际上安装展开的文件复制到另一个电脑随便什么位置,也能完全正常使用。我也把他们看作便携版。(通常是在sandboxie里安装,然后看到释放文件到哪里,是不是很复制,感觉问题不大就直接复制展开文件出来试试)

三、你可以使用虚拟化软件重新打包安装版软件,这类软件有ThinApp, Spoon, Cameyo等,他们会通过快照-对比-完成打包的方式,把安装版软件变为点击就能使用的“便携版”。

四、安装系统之前,你在用的软件很多。当你重新安装系统之后,不见得这些软件都还需要。使用的时候再安装,抛弃一部分软件,做一次断舍离,也是有意义的

3 Likes

VHD格式用什么来备份好,优势是?

win11鼠标时不时会卡顿,查了各种说法,一直不知道是什么导致的。

晚上回来看到各位分享的经验,我受益良多。仔细阅读之后,感觉大家所谈及的内容都能汇总成一篇 Wiki 了,哈哈。

@jerrylus@ncepuzs 同学都提到了用「沙盒/虚拟机」方式隔离部分软件运行。这个思路感觉很有意思,但 WSL/Docker 似乎仅适用于 Linux 程序。不知有无成熟的、可用于 Windows 应用的轻量级解决方案?


关于 @haitao 同学说的:

我的原意是特指少数不够绿色的「绿色软件」,可能是斜体表达的反义不是很清楚。对于这一点,我的解释和 @kli2018 同学差不多。


一些问题的新想法:

我个人倾向于觉得,软件和操作系统之间应当有一个良好的解离。也就是说,对于软件而言,系统应该被抽象为仅支持 「安装」「读写文件」「写入配置」「卸载」 等功能的接口层。系统应当对于应用使用文件系统和注册表的情况了如指掌,并能够随时将应用的程序文件和数据文件打包,以便于应用程序的本地转移、异机迁移甚至再分发。
这一点上,macOS 和 iOS 的沙盒机制都做得比较优秀,Android 最近的版本也在努力赶上。Windows 试图建立了一套软件部署/移除的机制,却仅仅要求应用程序在注册表中声明自身,其他操作一律「自由放任」,甚至卸载程序的执行都交由软件自由指定。这是导致重装后迁移难题的一大原因。

我自己用的是 Disk2vhd - Windows Sysinternals | Microsoft Docs,放在 PE 里跑。优势是如果需要提取文件比较简单,直接在 Windows 的「磁盘管理」里挂载上就好了。理论上有需要的话甚至可以通过改 BCD 直接从 VHD 启动,不过暂时还没有遇到过需要启动旧系统的情况。

我很少安装软件,基本上用这个方法

https://xkonglong.com/universal-extractor/

如果这个无效,就用沙盘和沙盒来安装,运行,测试,没问题就提取出来免安装。

我系统里必须安装的也就office和VS

另外就是新系统会重新设置一下默认库的位置,onedrive的路径。

其他没什么了,软件都在d盘,资料都在e盘,备份都在f盘。

其实微软推荐的是备份c:\user文件夹

但是这个文件夹长期使用会有大量垃圾,我个人不太喜欢备份它。

我桌面基本上什么都没有,只有一个文件夹用来存临时文件。

学习了,开始记笔记。
我最近都是用goodsync来同步到移动硬盘,平时大部分文件都是实时onedrive同步的。
也在研究怎么备份系统合适
结论就是,能不重装就别重装
只要可导出配置文件的就周期导出一下。。。

本虎的实践经验是:尽可能少安装软件,多使用网页版。当然这有一个大前提,就是生产环境是怎么样的。
本虎的生产环境就是 Office 和浏览器,这就齐活啦。而 Office 呢,我又一直用默认配置,从来不安装插件,从来不修改配置与选项。浏览器我用的是 Microsoft Edge 可以自动同步书签和扩展,当然扩展的配置不会同步,所以我每个月会手动导出一份书签和每个扩展的配置文件,然后每个星期会审视一下安装的扩展最近都用过没有?没有用过的扩展我会在 Obsidian 里面记下来扩展的名字和用途,然后就移除它,保持浏览器环境的干干净净,就像本虎一样,这样才能够保持活力呀!
然后其他的常用软件,像解压缩软件、 Obsidian 等应用软件,我有一个小清单,是每次重装系统之后都会更新的,把这次重装之后安装的软件记录(名称和下载网址)下来,下一次重装的时候不就省事了嘛。
而其他的软件呢,比如说 keepassxc,它是有便携版本的,就不需要每次重新安装了,保存好文件就可以啦。
然后最最最重要的个人文件,我使用的是 Onedrive 进行实时同步,虽然我有 Microsoft365订阅,可以用1TB的空间,但是我还是给自己定下来了不超过15GB的使用限额,这样以后就算不续费了,也不会影响我的日常使用。至于那些大文件,比如游戏、电影什么的,我就都放在阿里云盘和百度网盘了,这两个盘都不用安装,使用网页版的就可以了。
至于没有那么重要的工作文件,我就用金山文档保存了,每天签到领WPS的会员,就可以用100GB的空间了,然后定期把文件保存到工作电脑中,工作电脑就不重装操作系统了。

1 Like

进来学习,顺便分享一下我目前的思路(我的比较粗暴)


准备了一个200多G的固态硬盘专门装系统和软件(以下简称C盘了)
准备一个随身U盘,使用ventoy就可以装系统了,同时还能当普通U盘用

各软件的配置尽量放到同步盘里

便携软件放在D盘
安装软件一律默认位置

准备一个笔记专门用于记录基础设置和装机记录


重装系统:

  • 翻阅并整理装机笔记
  • 用wiztree扫描一下C盘,看看有没有重要的数据,搬走
  • 然后直接用U盘重装,装好后把C盘的windows.old删掉
  • 照着笔记把基础设置弄好
  • 我习惯把windows的库文件夹设置到别的盘,比如桌面和文档都在D盘,视频在E盘
  • 安装常用软件
  • 其他软件是需要用的时候再装,而不是一口气全装好。

我觉得这样

  • 比较简单粗暴,以前重装系统需要从下午折腾到天黑,现在熟练了基本上一个小时
  • 帮我「断」掉一些太久不用的数据和软件
  • 其他软件到需要的时候自然会想起来去装(顺便可以看看有没有更新或者同类替代品)
  • 在重装系统的过程中,遇到了任何之前没遇到的,都在笔记中记录一下,积累一些经验

其他:
微信聊天记录:我一直把微信当做短信看待,有重要信息直接导出去,聊天记录一向不管理,删了就删了

1 Like

重装系统一点都不可怕,可怕的是要重新配环境,设软件,能多出几倍甚至十几倍的时间。

1 Like

所以最终导致了:美化的尽头是默认

1 Like

没错. 我以前搞过各种美化. 反而审美疲劳. 或者华而不实.