不装 VS 自己编译安装 Windows Terminal
Windows Terminal 一直沒有發布可以直接安裝的二進制文件,想自行編譯的時候,看到系統需求中包含體積巨大的 Visual Studio 和 Windows SDK,腦袋都大了。直接下載其他人編譯好的安裝包又不放心,那么就想個辦法避免在本地環境編譯吧。
1. 編譯結果獲取
首先想到 Azure DevOps,這個可以簡單理解成微軟提供的在線 CI 平臺,寫好編譯文件就可以調用微軟的自帶所有編譯環境的鏡像直接在線編譯,并生成二進制下載。這個服務可以使用 edu 教育賬號免費使用,有 edu 郵箱的都可以用。我曾經使用這個編譯過其他人久不更新的 MFC 項目。自己寫一個 ,或者修改微軟生成的 azure-pipelines.yml 即可。
那么就從 GitHub 上把微軟的代碼拿過來,再寫個 pipeline 直接編譯吧。這時注意到,GitHub 上的項目中,居然已經包含了寫好的 pipeline。
想了想,微軟寫的東西當然自己也會用 Azure DevOps 啊。
接下來注意到,在 GitHub 倉庫的 Readme 中,已經有 Azure Pipelines 的編譯結果圖標了。
單擊圖標,打開軟的 DevOps 倉庫,可見每次 push 代碼都是會自動編譯的。進一步分析發現,只有合并到 master 分支時會編譯出二進制文件。
那么我們選擇其中一個 master 分支的 CI job:
可以看到,右上角有 Artifacts 按鈕,說明這個 CI 是會上傳編譯出來的二進制文件到服務器的。不清楚這三個有什么區別,我起初以為分別對應 x64、x86 和 arm64 的編譯結果,但我下載第一個壓縮包中,是包含了三個平臺的編譯結果的。壓縮包很大,150多M,內容如下:
其中的 CascadiaPackage_0.0.1.0_x64.msix 就是我們要的二進制安裝包。
2. 安裝嘗試
首先把系統調成開發者模式。
然后雙擊 msix 文件直接安裝,發現安裝失敗,提示安裝包沒有簽名。
一番搜索之后,發現如果使用 VS 在本機直接部署,VS 會自動幫你簽名。如果使用 VS 命令行工具直接編譯出來的結果,是沒有簽名的。
在 GitHub 倉庫的一個 issue?(https://github.com/microsoft/Terminal/issues/489#issuecomment-496170540)中有人提到,需要用 SignTool.exe 來為這個安裝包簽名。
3. 證書生成
簽名首先需要一個證書。在這里我們直接自簽發一個證書并添加信任就行了。參考剛才的 issue 中提到的腳本,打開管理員權限的 Power Shell ,并 cd 到 msix 安裝包所在目錄中,執行如下命令:
New-SelfSignedCertificate -Type Custom -Subject "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" -KeyUsage DigitalSignature -FriendlyName "WindowsTerminal" -CertStoreLocation "Cert:\LocalMachine\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")此時會顯示一個證書指紋,復制其中指紋并替換掉下面命令中的 C5C9D98CE9A23FB72C20B4D039876F3D93C3E1FF,同時修改命令中的密碼。
$password = ConvertTo-SecureString -String "隨便設置一個密碼" -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\LocalMachine\My\C5C9D98CE9A23FB72C20B4D039876F3D93C3E1FF" -FilePath WindowsTerminal.pfx -Password $password
Remove-Item -Path "Cert:\LocalMachine\My\C5C9D98CE9A23FB72C20B4D039876F3D93C3E1FF"
此時當前目錄會生成一個 WindowsTerminal.pfx 證書。雙擊之,安裝到計算機存儲的受信任人(Trusted People)目錄中,中間會要你輸入剛才腳本里設置的密碼。
好了,證書搞定了。
4. 提取安裝簽名工具
下面使用 SignTool.exe 工具進行簽名。這個工具是 Windows 10 SDK?(https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk) 中的一個工具。去微軟網站查看發現,這貨體積巨大,包含了許多開發 Windows 所需的工具包。但我們并不需要其他的部分,所以這里投機取巧一下,只安裝所需的部分。
首先要下載 ISO 格式的安裝鏡像,不要直接下 Installer。大概 800M 左右,半夜直連下載速度飛快,白天就不行了,視情況使用更加科學的上網方式。
下好之后,使用 Windows 自帶的 Mount 功能映射為虛擬光驅。打開 Installers 目錄,找到 WindowsAppCertificationKitx64-x86_en-us.msi 這個包,雙擊安裝。
這個工具包就包含了我們需要的 SignTools.exe ,其他的部分不需要,可以刪掉這個鏡像了。在 C:\ProgramFiles(x86)\WindowsKits\10\AppCertificationKit\signtool.exe 路徑可以找到我們需要的工具。
5. 簽名安裝
在 msix 和證書文件所在目錄打開 cmd,執行以下命令完成簽名:
"C:\Program Files (x86)\Windows Kits\10\App Certification Kit\signtool.exe" sign /fd SHA256 /a /f WindowsTerminal.pfx /p 你的密碼 CascadiaPackage_0.0.1.0_x64.msix
簽好后再雙擊 msix 包,就可以順利安裝了。
Enjoy!
總結
以上是生活随笔為你收集整理的不装 VS 自己编译安装 Windows Terminal的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开源基于Canal的开源增量数据订阅消费
- 下一篇: 带你了解C#每个版本新特性