使用Chocolatey包自动化PowerShell模块

在这篇博文中,了解如何创建Chocolatey包(一种流行的Windows打包管理器)。

随着自动化变得更加必需而非一种奢侈,我们IT从业者需要考虑执行琐碎任务的更好方法;其中之一就是安装软件。与其下载一个MSI,双击运行并按照向导进行操作,不如考虑一种更好的方式。

几乎所有软件都有用于静默安装的命令行开关,如果你进行足够的研究,可能会找到正确的开关。然后,您的安装可能如下所示:

> install.exe /q /n /e /noreboot

你会记得所有这些开关吗?可能不会。您可以将这些开关放在批处理文件中,然后忘记了您放置该脚本的位置或者您可以这样做:

Install-Package -Name AcmeSoftware

现在是一些容易记住的东西。

但是你要如何达到这一点呢?答案是一个NuGet仓库和一个NuGet包。NuGet是一种传统的软件打包技术,允许您将软件打包起来,然后存储在仓库中,随时下载和安装。Chocolatey是一个受欢迎的开源工具,它使用NuGet允许IT管理员下载并静默安装软件。

在本文中,我将假设您已经设置了一个NuGet仓库,或者您知道将要发送您的软件包的位置。

让我们拿一款软件,将其打包成一个NuGet包,以供在这些仓库中使用。

安装Chocolatey

由于在Windows操作系统中默认未安装Chocolatey,因此必须下载并安装它。可以通过在PowerShell控制台中运行以下命令来下载并安装它:

PS> iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

创建NUSPEC文件

要创建一个Chocolatey包,首先必须创建一个NUSPEC文件。NUSPEC文件是一个描述包内容的XML包清单。此NUSPEC文件必须采用特定格式。以下是一个使用仅必需元素的示例NUSPEC文件:

<?xml version="1.0" encoding="utf-8"?>
    <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
      <metadata>
        <id>MySpecialSoftware</id>
        <version>1.0</version>
        <description>Some software I'm packaging up.</description>
        <authors>Adam Bertram</authors>
      </metadata>
    </package>

有关可用标记的完整列表,请参阅NUSPEC参考

如何创建Chocolatey包

接下来,创建包。为此,我们使用Install-ChocolateyInstallPackage命令。假设我们要打包的软件是一个EXE文件,并且安静安装的开关是/s。我们必须将文件位置和要使用的安静安装开关发送给该命令。

PS> Install-ChocolateyPackage -PackageName 'AcmeSoftware' -FileType 'exe' -File 'C:\install.exe' -SilentArgs '/s'

此命令将创建包。接下来,我们需要使用chocoexe来打包该包。

PS> choco pack

一旦软件已经打包完毕,现在它已经以一种格式存在,可以将其发布到您选择的Chocolatey仓库中。

摘要

这个过程可以为需要通过Chocolatey部署的每个软件重复进行。正如您所看到的,只需要进行一些额外的步骤,就可以使软件“Chocolatey-ready”。现在这样做可以让您回到处理重要任务,而不是费时地弄清楚如何一次性部署软件到一堆机器上!

如果您在学会如何创建Chocolatey软件包后想要深入了解,一定要查看Chocolatey文档

Learning How to Create Chocolatey Package

Source:
https://adamtheautomator.com/create-chocolatey-package/