自从 Windows 10面世以来,对个人来说,需要重装系统的次数越来越少,除了它本身的稳定性之外,还有一个重要的影响因素是重装之后需要大量的时间配置环境和安装软件,面对这个成本问题,有可能需要专门花费一两天的时间来配置环境和安装软件,才能达到之前使用系统的体验。
起因
因为 618 换了台新机器,所以需要重装系统、配置环境和安装软件,而考虑到旧机器上的系统已经卡的不要不要的,却因为上面装了太多的东西,难以短时间去整理备份,所以,把这次配置的过程记录下来,方便后续更换。
为什么需要重装系统呢?因为新机器出厂时是家庭版,对开发环境不是很好,而且都会带有一些乱七八糟的软件,很影响使用体验,原装系统则是最稳妥的,至于厂商附带的有用的软件,可以去官网下载想要的软件或者驱动。
准备阶段
下载系统
首先,了解一下 I Tell You,这个网站提供许多原版的软件和系统,新网站需要注册才能访问,可以在I tell you新版网站上下载最新的 Windows 11,Windows 11 分为消费版(consumer editions)和商业版(business editions),消费版包含家庭版+专业版+教育版+专业教育版+专业工作站版,商业版包含专业版+企业版+教育版+专业教育版+专业工作站版,这里提供 2022/05/17 更新的商业版版本,BT 链接 、ED2K 链接,主要是将机器出厂的家庭版改为专业版,通过系统内更新,相同系统,无需新的激活码
刻录系统(可选)
下载完后,需要用刻录软件UltraISO,将系统刻录到U盘上,然后在新机器上插上U盘,点击 Setup 安装,重启时,记得拔掉U盘,如果 bios 里面选择了U盘启动,则会进入无休止的安装重启安装重启
安装方式
- 直接将
zh-cn_windows_11_business_editions_updated_may_2022_x64_dvd_a526f4d7.iso
文件复制到新机器上,点击安装 - 刻录系统完成后,将U盘插上新机器,点击U盘内的
Setup
进行安装 - 通过U盘启动
科学上网
[!WARNING] 注意
如果无法科学上网,后面的步骤是不如自己手动安装来的快
OneDrive
OneDrive 是微软推出的云存储服务,通过它,我们可以在多个设备上通过微软账户进行文件同步,它的优点是系统自带,这免去了多余的操作,而且方便执行
Winget
Winget 是 Windows 上的包管理工具,以命令行式进行操作,系统自带,通过它,我们可以轻松的导出/导入软件包
Scoop
Scoop 也是 Windows 上的一个包管理工具,为什么用它?Winget 没有的软件 Scoop 上大概率有,比如多个版本的 Java 和 Php,通过它,我们可以轻松的安装开发环境,而且更为重要的是,两者都很容易卸载
执行过程
暂时没能找到能全自动执行的方案,所以下面的流程显得比较重要
导出应用程序
如果是第一次使用,建议通过先导出,然后进行修改,形成自己的一个安装程序的配置
# 进入 OneDrive 所在目录下的 backup 文件夹
cd C:\Users\linka\OneDrive\backup
# 导出 app 到 winget_env.json 文件
winget export winget_env.json
winget_env.json
除 Packages 下可以修改外,其余可以一样,为了确保应用能够正常安装,一定要提前使用 winget search <package name>
查看应用的包识别符
// winget_env.json
{
"$schema": "https://aka.ms/winget-packages.schema.2.0.json",
"CreationDate": "2022-06-19T04:16:17.594-00:00",
"Sources": [
{
"Packages": [
// 需要安装的包的格式
// { "PackageIdentifier": "Microsoft.PowerShell" }
{
"PackageIdentifier": "Microsoft.PowerShell"
},
],
"SourceDetails": {
"Argument": "https://cdn.winget.microsoft.com/cache",
"Identifier": "Microsoft.Winget.Source_8wekyb3d8bbwe",
"Name": "winget",
"Type": "Microsoft.PreIndexed.Package"
}
}
],
"WinGetVersion": "1.3.1391-preview"
}
下面是我安装的一些环境和应用程序
Microsoft.PowerShell
: 系统本身自带的 PowerShell 版本较低,需要使用最新的版本Microsoft.WindowsTerminal.Preview
: Windows 新一代终端,预览版,用过的都说好Microsoft.WindowsTerminal
: Windows 新一代终端,用过的都说好Python.Python.2
: Python 2.x 版本Python.Python.3
: Python 3.x 版本Microsoft.OpenJDK.11
: JDK 11Microsoft.DotNet.DesktopRuntime.6
: .Net 6Microsoft.VisualStudioCode
: VSCode 编辑器,前端必用Google.Chrome
: Chrome 浏览器Mozilla.Firefox
: 火狐浏览器Docker.DockerDesktop
: Docker 容器DeepL.DeepL
: 翻译软件Microsoft.PowerToys
: 一组实用的 Windows 应用程序,比如常用的唤醒、始终置顶、FancyZones、PowerToys Run 等等JetBrains.Toolbox
: Jetbrains 系列管理工具RARLab.WinRAR
: 压缩文件管理工具PicGo.PicGo
: 图片上传工具Tencent.WeChat
: 微信Tencent.QQ
: QQDaum.PotPlayer
: PotPlayer 播放器Captura.Captura
: 录屏工具Kingsoft.WPSOffice.CN
: WPSObsidian.Obsidian
: 笔记工具Telegram.TelegramDesktop
: 电报
导入应用程序
在新机器上,打开 Powershell,执行命令 ,接下来,Winget 将会安装这些软件,安装过程可能会有提示需要手动点击下一步,所以请勿离开桌面
# 进入 OneDrive 所在目录下的 backup 文件夹
cd C:\Users\linka\OneDrive\backup
# 从 winget_env.json 文件导入 app
winget import winget_env.json
设置Powershell 版本和执行策略
打开 Windows 终端,将 Windows PowerShell
修改为 PowerShell
重新打开 WIndows Terminal,执行以下命令,修改执行脚本策略
set-executionpolicy remotesigned -scope currentuser
安装 Scoop 和安装应用
先通过执行命令 scoop list
查看已经安装的应用,确认需要再次安装的应用,然后稍微修改下面的内容,同样的,先执行 scoop search <package>
以确认包是否存在,值得夸赞的是,scoop 能够直接安装 deno、ffmpeg、php、mysql、openjdk 等开发环境
scoop 的安装方式与以前有些许改变,更多请访问ScoopInstaller/Install
将下面内容复制到 OneDrive 目录下,可以自动同步到新机器上,只需要在新机器上以管理员方式打开 Windows Terminal,进入 OneDrive 目录,执行下面脚本即可.\init_scoop.ps1
[!Tip] 注意事项
- Windows Terminal 使用的 PowerShell 版本 7.x 以上
- 执行脚本策略为 RemoteSigned
# init_scoop.ps1
$psVersion = $psversiontable.psversion.major
if ($psVersion -lt 5) {
Write-Host "确保您已安装PowerShell 5.0或更高版本" -ForegroundColor Red
Write-Host ""
exit 1
}
else {
Write-Host "您的PowerShell版本为$psVersion" -ForegroundColor Gray
}
if ($(get-executionpolicy) -ne "RemoteSigned") {
set-executionpolicy remotesigned -scope currentuser
Write-Host "已设置执行策略为RemoteSigned" -ForegroundColor Green
} else {
Write-Host "检查到执行策略已设置为RemoteSigned" -ForegroundColor Gray
}
function install_app([string]$app, [switch]$global) {
$surfix = $global ? "-g" : ""
$dir = $global ? $env:SCOOP_GLOBAL : $env:SCOOP
if (!$dir) {
Write-Host "请先安装 scoop" -ForegroundColor Red
exit 1
}
if (!(Test-Path "$dir\apps\$app")) {
Invoke-Expression "scoop install $app $surfix"
Write-Host "$app 安装成功: $dir\apps\$app" -ForegroundColor Green
} else {
Write-Host "$app 已安装: $dir\apps\$app" -ForegroundColor Gray
}
}
if (!(Test-Path "C:\scoop")) {
$env:SCOOP='C:\scoop'
[environment]::setEnvironmentVariable('SCOOP',$env:SCOOP,'User')
iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
Write-Host "Scoop 已安装到自定义目录: $env:SCOOP" -ForegroundColor Green
} else {
Write-Host "已存在 Scoop 安装目录: C:\scoop" -ForegroundColor Gray
}
if (!(Test-Path "C:\scoop_apps")) {
$env:SCOOP_GLOBAL='C:\scoop_apps'
[environment]::setEnvironmentVariable('SCOOP_GLOBAL',$env:SCOOP_GLOBAL,'Machine')
Write-Host "全局应用程序已安装到自定义目录: $env:SCOOP_GLOBAL" -ForegroundColor Green
} else {
Write-Host "已存在全局应用程序安装目录: C:\scoop_apps" -ForegroundColor Gray
}
# Main
install_app curl
install_app git
install_app dark
install_app 7zip
install_app sudo
install_app nvm
install_app aria2 -global
install_app deno -global
install_app ffmpeg -global
install_app youtube-dl -global
install_app yt-dlp -global
scoop bucket add extras
scoop bucket add versions
scoop bucket add java
scoop bucket add php
scoop bucket add nerd-fonts
# install_app <package name> [-global]
# nerd-fonts
install_app cascadia-code -global
nvm use lts
Write-Host "node 安装成功" -ForegroundColor Green
Windows Terminal 美化
打开 Windows Terminal 终端,下载 powershell 模块 posh-git
和 oh-my-posh
Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
安装完成后,执行 notepad $PROFILE
,在打开的文件中,输入以下内容
# Microsoft.PowerShell_profile.ps1
Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt -Theme paradox # V3
# Set-Theme Paradox # V2
执行 wt
以查看效果,更多请查看oh-my-posh,更多主题,请执行 Get-PoshThemes
其他说明
mysql
如果需要安装 mysql,winget 安装可以选择 Oracle.MySQL
版本为 8.0.29
,scoop 安装除可以选择 mysql 8.0.29
外,还可以安装 mysql56
和 mysql57
php
通过 scoop 安装,几乎可以选择任何小版本 scoop search php
openjdk
通过 scoop 安装,几乎可以选择任何小版本 scoop search openjdk
❯ scoop search openjdk
'java' bucket:
openjdk-ea (19-27-ea)
openjdk (18.0.1.1-2)
openjdk10 (10.0.2-13)
openjdk11 (11.0.2-9)
openjdk12 (12.0.2-10)
openjdk13 (13.0.2-8)
openjdk14 (14.0.2-12)
openjdk15 (15.0.2-7)
openjdk16 (16.0.2-7)
openjdk17 (17.0.2-8)
openjdk18 (18.0.1.1-2)
openjdk19 (19-27-ea)
openjdk7-unofficial (7u80-b32)
openjdk8-redhat-jre (8u332-b09)
openjdk8-redhat (8u332-b09)
openjdk9 (9.0.4-12)
ssh
将 terminal 设置文件同步到 OneDrive,.ssh
目录,手动复制到新机器上
WSL
安装 Ubuntu-20.04
wsl --install -d Ubuntu-20.04
上面这些流程,可以大大的简化逐个安装的时间,winget 几乎囊括了所有大厂应用程序,遇到没有的应用,也可以通过 scoop 社区的 bucket 补全这些应用程序,正确的使用方式应该是,winget 有官方版本,则使用 winget 进行安装,否则使用 scoop 进行安装
安装完之后,需要的就是登录,同步应用相关设置,这一点 chrome 和 vscode 是做的最好的,设置同步,堪称完美
总结
以上流程只是解决了安装的问题,借助 OneDrive(免费版),可以简单的实现跨设备同步,如果要和旧机器一样的配置,还需要单独进行设置或者同步,但相对来说,还是省了不少事
评论 (0)