系统重装后如何优雅的安装开发环境和软件

偏向技术
/ 0 评论 / 91 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年06月19日,已超过887天没有更新,若内容或图片失效,请留言反馈。

自从 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盘启动,则会进入无休止的安装重启安装重启

安装方式

  1. 直接将 zh-cn_windows_11_business_editions_updated_may_2022_x64_dvd_a526f4d7.iso 文件复制到新机器上,点击安装
  2. 刻录系统完成后,将U盘插上新机器,点击U盘内的 Setup 进行安装
  3. 通过U盘启动

科学上网

[!WARNING] 注意
如果无法科学上网,后面的步骤是不如自己手动安装来的快

OneDrive

OneDrive 是微软推出的云存储服务,通过它,我们可以在多个设备上通过微软账户进行文件同步,它的优点是系统自带,这免去了多余的操作,而且方便执行

Winget

Winget 是 Windows 上的包管理工具,以命令行式进行操作,系统自带,通过它,我们可以轻松的导出/导入软件包

Scoop

Scoop 也是 Windows 上的一个包管理工具,为什么用它?Winget 没有的软件 Scoop 上大概率有,比如多个版本的 Java 和 Php,通过它,我们可以轻松的安装开发环境,而且更为重要的是,两者都很容易卸载

执行过程

暂时没能找到能全自动执行的方案,所以下面的流程显得比较重要

导出应用程序

如果是第一次使用,建议通过先导出,然后进行修改,形成自己的一个安装程序的配置

bash
# 进入 OneDrive 所在目录下的 backup 文件夹
cd C:\Users\linka\OneDrive\backup
# 导出 app 到 winget_env.json 文件
winget export winget_env.json
1234

winget_env.json

Packages 下可以修改外,其余可以一样,为了确保应用能够正常安装,一定要提前使用 winget search <package name> 查看应用的包识别符

json
// 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"
}
1234567891011121314151617181920212223

下面是我安装的一些环境和应用程序

导入应用程序

在新机器上,打开 Powershell,执行命令 ,接下来,Winget 将会安装这些软件,安装过程可能会有提示需要手动点击下一步,所以请勿离开桌面

bash
# 进入 OneDrive 所在目录下的 backup 文件夹
cd C:\Users\linka\OneDrive\backup
# 从 winget_env.json 文件导入 app
winget import winget_env.json
1234

设置Powershell 版本和执行策略

打开 Windows 终端,将 Windows PowerShell 修改为 PowerShell

17213800b92

重新打开 WIndows Terminal,执行以下命令,修改执行脚本策略

powershell
set-executionpolicy remotesigned -scope currentuser
1

安装 Scoop 和安装应用

先通过执行命令 scoop list 查看已经安装的应用,确认需要再次安装的应用,然后稍微修改下面的内容,同样的,先执行 scoop search <package>以确认包是否存在,值得夸赞的是,scoop 能够直接安装 denoffmpegphpmysqlopenjdk 等开发环境

scoop 的安装方式与以前有些许改变,更多请访问ScoopInstaller/Install

将下面内容复制到 OneDrive 目录下,可以自动同步到新机器上,只需要在新机器上以管理员方式打开 Windows Terminal,进入 OneDrive 目录,执行下面脚本即可.\init_scoop.ps1

[!Tip] 注意事项

  1. Windows Terminal 使用的 PowerShell 版本 7.x 以上
  2. 执行脚本策略为 RemoteSigned
powershell
# 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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Windows Terminal 美化

打开 Windows Terminal 终端,下载 powershell 模块 posh-gitoh-my-posh

powershell
Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
12

安装完成后,执行 notepad $PROFILE,在打开的文件中,输入以下内容

powershell
# Microsoft.PowerShell_profile.ps1

Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt -Theme paradox # V3
# Set-Theme Paradox # V2
123456

执行 wt 以查看效果,更多请查看oh-my-posh,更多主题,请执行 Get-PoshThemes

其他说明

mysql

如果需要安装 mysql,winget 安装可以选择 Oracle.MySQL 版本为 8.0.29,scoop 安装除可以选择 mysql 8.0.29 外,还可以安装 mysql56mysql57

php

通过 scoop 安装,几乎可以选择任何小版本 scoop search php

openjdk

通过 scoop 安装,几乎可以选择任何小版本 scoop search openjdk

powershell
❯ 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)
123456789101112131415161718

ssh

将 terminal 设置文件同步到 OneDrive,.ssh 目录,手动复制到新机器上

WSL

安装 Ubuntu-20.04

bash
wsl --install -d Ubuntu-20.04
1

上面这些流程,可以大大的简化逐个安装的时间,winget 几乎囊括了所有大厂应用程序,遇到没有的应用,也可以通过 scoop 社区的 bucket 补全这些应用程序,正确的使用方式应该是,winget 有官方版本,则使用 winget 进行安装,否则使用 scoop 进行安装

安装完之后,需要的就是登录,同步应用相关设置,这一点 chrome 和 vscode 是做的最好的,设置同步,堪称完美

总结

以上流程只是解决了安装的问题,借助 OneDrive(免费版),可以简单的实现跨设备同步,如果要和旧机器一样的配置,还需要单独进行设置或者同步,但相对来说,还是省了不少事

0

评论 (0)

取消