当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何在 AutoPilot 期间安装和使用 WinGet

作者:精品下载站 日期:2024-12-14 06:39:06 浏览:16 分类:玩电脑

如何在 AutoPilot 期间安装和使用 WinGet


在这篇文章中,我将向您展示如何在 AutoPilot 过程中安装最新版本的 WinGet,并随后同时使用 WinGet 命令行工具部署应用程序。

这将使您能够在 AutoPilot 过程中以及登录后立即使用 WinGet 命令行工具来管理应用程序。

WinGet是什么?

WinGet 是 Windows 包管理器解决方案的命令行工具,使您能够在 Windows 10 和 11 计算机上查找、安装、升级或删除应用程序。

它是一种快速有效的工具,用于将应用程序远程部署到工作站上,尤其是使用 Microsoft Intune。

WinGet 是否预装在 Windows 中?

默认情况下,现代版本的 Windows 10(1709 或更高版本)和所有版本的 Windows 11 都预装了 Windows 包管理器 (WinGet)。

这就提出了一个问题,如果它可能已经部署了,为什么还要手动安装它呢?安装 Windows 包管理器后,命令行工具可能需要一段时间才能可用。仅当用户登录并触发 Microsoft Store 注册 Windows 包管理器时才会发生这种情况。因此,需要手动安装。

WinGet 版本和文件大小

我想提及 WinGet 的文件大小和可用的不同版本。这是因为从 WinGet 版本 1.6.1573-preview 开始,.NET 和 PowerShell 主机已包含在捆绑包中,导致包文件大小增加了 20 倍!

维护者在 GitHub 上该版本的讨论部分中强调了这一点。

[玩转系统] 如何在 AutoPilot 期间安装和使用 WinGet

对于没有内置这些占用大量资源的功能的最新版本,请确保安装版本 1.5.2201。 但是,如果您想在 AutoPolit 配置期间使用 WinGet 部署应用程序,请按照我的脚本安装最新版本。

第 1 步:创建安装脚本

您首先需要创建一个用于安装 WinGet 的脚本。

下面是一个简单的脚本,它将首先检查 WinGet 是否已经安装;然后,如果不是,它将从官方存储库下载推荐的 WinGet 版本和依赖项并安装它们。

该脚本也可以从 GitHub 访问。

<#
.SYNOPSIS
Installs WinGet, for use with Intune

.LINK
   https://ourcloudnetwork.com
   https://www.linkedin.com/in/danielbradley2/
   https://twitter.com/DanielatOCN
   
.NOTES
   Version:        0.1
   Author:         Daniel Bradley
   Creation Date:  Friday, January 5th 2024, 5:18:37 pm
   File: Install-winget.ps1

.EXAMPLE
Deploy as Intune script

.LICENSE
Use this code free of charge at your own risk.
Never deploy code into production if you do not know what it does.
#>

#Create path and define log file
$path= "C:\ProgramData\WinGet"
$LogFile = "InstallLog.txt"
mkdir $path -ErrorAction SilentlyContinue

#Write to log
Function LogWrite
{
   Param ([string]$logstring)
   $date = (Get-Date).tostring("yyyyMMdd-HH:mm")
   Add-content "$path$Logfile" -value "$date - $logstring"
}

#Check if WinGet is Installed
$TestPath = "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.21.3482.0_x64__8wekyb3d8bbwe\AppxSignature.p7x"
$Winget = Test-path $TestPath -PathType Leaf

#Install WinGet
if (!$Winget){
    LogWrite "WinGet not installed, attempting install with Add-AppxPackage"
    Try {
        LogWrite "Downloading WinGet and its dependencies..."
        Start-Transcript -Path "$path$Logfile" -Append
        Invoke-WebRequest -Uri https://aka.ms/getwinget -OutFile "$path\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" -Verbose
        Invoke-WebRequest -Uri https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx -OutFile "$path\Microsoft.VCLibs.x64.14.00.Desktop.appx" -Verbose
        Invoke-WebRequest -Uri https://github.com/microsoft/microsoft-ui-xaml/releases/download/v2.7.3/Microsoft.UI.Xaml.2.7.x64.appx -OutFile "$path\Microsoft.UI.Xaml.2.7.x64.appx" -Verbose
        Add-AppxProvisionedPackage -online -packagepath $path\Microsoft.VCLibs.x64.14.00.Desktop.appx -SkipLicense -Verbose
        Add-AppxProvisionedPackage -online -packagepath $path\Microsoft.UI.Xaml.2.7.x64.appx -SkipLicense -Verbose
        Add-AppxProvisionedPackage -online -packagepath $path\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle -SkipLicense -Verbose
        Stop-Transcript
    }
    Catch {
        Write-host "Unable to complete offline installer"
    }
} Else {
    LogWrite "WinGet already installed"
}

将此脚本保存为 Install-WinGet.ps1,然后您可以在 AutoPilot 中的 OOBE 期间测试该脚本,以确认它有效并且 WinGet 也有效!

在 OOBE 屏幕上,单击 SHIFT+F10 并键入以下内容:(PowerShell 脚本的文件路径可能有所不同)。

PowerShell
Set-ExecutionPolicy Unrestricted
.\Install-WinGet.ps1

安装完成后,使用以下命令测试安装 Google Chrome:

winget install -e --id Google.Chrome

[玩转系统] 如何在 AutoPilot 期间安装和使用 WinGet

步骤 2:将脚本上传到 Intune

接下来,您需要将脚本上传到 Intune。我选择通过脚本部署它,而不是打包到 Win32 应用程序中,但您可以选择任何一种方式进行部署。 (如果您要打包到 Win32 应用程序中,则可能需要向代码添加更多逻辑)。在我看来,WinGet 将在安装后进行部署和维护,因此我打算在安装后忘记它。

如果您想在 OOBE 期间同时部署应用程序,您可以将以下代码行附加到脚本中:(将 Google.Chrome 更改为您首选的应用程序)。

或者,您可以单独打包并将其部署为 Win32 应用程序(这将在 OOBE 期间脚本完成执行后运行)。 我无法让它工作,但如果可以的话请给我留言!

cd "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_1.21.3482.0_x64__8wekyb3d8bbwe\"
LogWrite "location set to $((Get-Location).Path)"
.\Winget install Google.Chrome --accept-package-agreements --accept-source-agreements | Tee-Object "$path$Logfile" -Append

按照以下步骤从 Intune 管理中心部署脚本。

1.登录https://intune.microsoft.com/

2. 选择设备,然后在策略下选择脚本

3. 选择添加 > Windows 10 及更高版本

4. 定义和名称,然后单击下一步。在脚本设置页面上,选择以下设置

[玩转系统] 如何在 AutoPilot 期间安装和使用 WinGet

5. 将您的脚本分配给所有设备(或您的首选项)并完成向导。

包起来

如果您做到了这一步,那就太好了!我想建议的是,在 OOBE 的这个阶段使用 WinGet 命令行工具安装应用程序是一个概念验证。当然,还有更好的方法来打包、部署和维护应用程序,但每个人都有自己的偏好。

首次登录后,我们立即可以看到 Google Chrome 已使用 WinGet 成功安装。

[玩转系统] 如何在 AutoPilot 期间安装和使用 WinGet

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯