在 Windows 上正统的做法一般是用 sysprep 准备一个带软件的操作系统。然而作为消费级别的应用,这样实在是太麻烦了,此外 sysprep 不能直接安装好最新版本的软件——要么准备好固定版本的,要么使用一段代码来安装软件。
总之,对于个人用户来说,我建立了一个(我)常用的软件安装脚本。
GitHub 直达:GeeLaw/PowerShellThingies/scripts/Install-Apps
脚本分两部分:
- 一部分用来全局安装软件,目前自动安装的有 7-Zip、Node.js 、Git for Windows、iTunes,可选安装的有 Image Composite Editor,需要手动安装(但是会自动跳转到对应页面提示你的)是 Visual Studio、Office 365 Home / Personal 和 Adobe Reader DC。
- 另一部分安装单用户软件,目前自动安装的有 MiKTeX、Visual Studio Code 和 ILSpy,需要手动安装(跳转页面)的是 SourceTree。
安装是全自动的,步骤基本上是:找出最新的版本(可能有爬虫)、下载最新的版本、安装最新的版本。每一步都带有查错,如果失败,将会打开对应软件的网址并提示用户自己纠正安装。
每个软件的安装方式?
7-Zip:先下载官方下载页面,找出版本号最高的,然后下载 64 位 MSI,然后用 msiexec 只显示进度条地安装。
Node.js:先下载官方的发行版列表,找出最高版本号的 LTS 版本,然后下载 64 位 MSI。
Git for Windows:先访问官方下载页面,找出当前版本的安装器,下载之后用 Inno Setup 的命令行,只显示进度条、不可撤销地安装。注意 Git for Windows 有一些配置参数,这些配置的情况是:创建文件关联和上下文菜单、桌面上创建快捷方式、自动更新、安装 LFS、使用 Vim、在 Command Prompt 里使用 git、使用 OpenSSH 和 Windows 的证书管理、不要自动做 CRLF 转换、使用 MinTTY 打开 Bash、使用凭据管理器、不用软链接。
iTunes:访问 Apple 的一个地址,直接得到安装器。安装器的参数格式和 msiexec 一样(内部就是 MSI )。
Image Composite Editor:访问下载页然后下载 MSI。
MiKTeX:这个最复杂,最后说。
Visual Studio Code:访问 Microsoft 的一个地址,得到安装器,也是 Inno Setup。安装选项:桌面快捷方式、文件和目录上下文菜单、文件关联、PATH、不要自动启动 Code。
ILSpy:访问 GitHub 的 latest release 页面,得到下载地址并下载,然后解压缩到 Documents。
回过头来说 MiKTeX:
- 访问一个地址,得到安装工具;
- 解压缩,得到安装工具的 exe ;
- 用安装工具下载 basic packages 到本地;
- 用安装工具从本地下载结果安装;
- 修复这个安装工具产生的一些错误,并安装
cm-super,然后补充安装的大小信息到注册表。
其中安装器产生的错误包括:
- 在“添加或删除程序”里,你看不到 MiKTeX 的图标(有这一项,但图标是不正确的)
- 在“添加或删除程序”里,点卸载会出错(因为卸载器和普通的安装方式的卸载器不一样,所以我写了一个新的卸载器并替换掉了)
安装 cm-super 是因为这个包可以让某些情况下排版的 PDF 变回高清的(没这个包时有时会有 rasterization 从而放大后走样),但是排版这些文件的时候不会自动要求安装这个包。采用这个脚本可以省去忘记安装的麻烦。
在幸运的情况下,只要启动脚本即可自动完成所有(我)需要的软件的自动安装。但是我最近一次尝试似乎没能成功安装 iTunes,是 iTunes 自己的偶然错误(因为我在其他电脑上成功了,且后来自己一句一句跑这个脚本也成功了)。
同一个仓库里的小甜点:在 OOBE (初始化电脑)之后帮你改变计算机名、更改注册信息、改变不活动标题栏的颜色(我用灰色而不是默认的惨白)、卸载不必要的 Windows 应用商店应用、更新 PowerShell 帮助文档。