打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Chocolatey-windows下的包管理软件

Chocolatey是一个基于Nuget的Windows包管理工具,截止到我更新此文章的时候,一共有3.7k多个独立包。本文旨在介绍Chocolatey这一工具的安装和用法,希望能有更多人享受到该工具的便利之处。

安装chocolatey

CMD

打开一个具有管理员权限的命令行窗口,执行如下命令:

@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

PowerShell

打开一个具有管理员权限的PowerShell窗口,执行如下命令:

iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))

使用chocolatey

安装包

安装包十分的容易,只需要打开管理员权限的命令行即可:

choco install <package>

卸载包

卸载也同样十分简单,打开管理员权限命令行,执行:

choco uninstall <package>

更新包

更新包则需要使用如下命令:

choco upgrade <package>

为chocolatey做贡献

Chocolatey的一个特点就是社区化的环境,每一个人都可以向它提交自己喜爱的包。因为Chocolatey总是从官方下载所需要的包,所以避免了授权等问题。当然,本来收费的软件,同样需要收费,比如JetBrains系列的产品。

注册APIKey

提交包则会略为复杂一点,首先你需要在 https://chocolatey.org/注册一个账号,并获取跟你账户绑定的唯一APIKey。然后在命令行中执行如下命令:

choco apikey -k <your key here> -s https://chocolatey.org

新建软件包

在命令行中运行

choco new <package name here># 为方便理解,此处使用test做包名

则当前目录下就会自动生成一个名为 test的文件夹,目录结构如下:

test.nuspectools  |--chocolateyinstall.ps1  |--chocolateyuninstall.ps1  |--ReadMe.md

完善信息

修改test.nuspec

自动生成的描述文件在需要填写的位置都有大写英文注释,只需要按照要求一一填写即可,下面我列举一份已经通过审核的Datagrip的描述文件作为参考:

<?xml version="1.0" encoding="utf-8"?><!-- Do not remove this test for UTF-8: if “Ω” doesn’t appear as greek uppercase omega letter enclosed in quotation marks, you should use an editor that supports UTF-8, not this one. --><package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">  <metadata>    <!-- Read this before publishing packages to chocolatey.org: https://github.com/chocolatey/chocolatey/wiki/CreatePackages -->    <id>datagrip</id>    <title>DataGrip</title>    <version>1.0.1</version>    <authors>JetBrains</authors>    <owners>Xuanwo</owners>    <summary>Your Swiss Army Knife for Databases and SQL</summary>    <description>## Intelligent query consoleAllows you to execute queries in different modes and provides local history that keeps track of all your activity and protects you from losing your work.......(省略)</description>    <projectUrl>https://www.jetbrains.com/datagrip/</projectUrl>    <packageSourceUrl>https://download.jetbrains.com/datagrip/datagrip-1.0.1.exe</packageSourceUrl>    <!--<projectSourceUrl></projectSourceUrl>    <docsUrl></docsUrl>    <mailingListUrl></mailingListUrl>-->    <bugTrackerUrl>https://youtrack.jetbrains.com/issues/DBE</bugTrackerUrl>    <tags>datagrip admin jetbrains trail 30days</tags>    <copyright>Commercial</copyright>    <!--<licenseUrl></licenseUrl>-->    <requireLicenseAcceptance>false</requireLicenseAcceptance>    <!--<iconUrl>http://cdn.rawgit.com/__REPLACE_YOUR_REPO__/master/icons/datagrip.png</iconUrl>-->    <!--<dependencies>      <dependency id="" version="__VERSION__" />      <dependency id="" />    </dependencies>-->    <releaseNotes>https://confluence.jetbrains.com/display/DBE/DataGrip+1.0.1+Release+Notes</releaseNotes>    <!--<provides></provides>-->  </metadata>  <files>    <file src="tools\**" target="tools" />  </files></package>

有一个比较坑的地方是 <description>部分是支持Markdown的,内容直接顶着括号写就OK,不用另起一行,也不用自己加缩进。

补充chocolateyinstall.ps1

chocolateyuninstall可以没有,但是一定要有 chocolateyinstall脚本。

chocolateyinstall.ps1如果点击 编辑打开的话,会自动调用 Windows Powershell ISE编辑器。

下面同样列举一份已经填写完成的样例:

$packageName= 'datagrip'$installerType = 'EXE'$toolsDir   = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"$url        = 'https://download.jetbrains.com/datagrip/datagrip-1.0.1.exe'$url64      = $url$silentArgs = '/S'$validExitCodes = @(0)Install-ChocolateyPackage "$packageName" "$installerType" "$silentArgs" "$url" "$url64"  -validExitCodes $validExitCodes

需要注意的是,填写完毕之后,一定要在Powershell中运行下列代码以删除所有的注释文字:

$f='c:\path\to\thisFile.ps1'gc $f | ? {$_ -notmatch "^\s*#"} | % {$_ -replace '(^.*?)\s*?[^``]#.*','$1'} | Out-File $f+".~" -en utf8; mv -fo $f+".~" $f

打包上传

所有的信息填写完成后,在 test.nuspec所在目录下执行 choco pack就会自动进行打包。

如果有重要的信息没有填写,choco将会报错,并红字提示:

LicenseUrl cannot be empty.ProjectUrl cannot be empty.PackageSourceUrl cannot be empty.

如果没有问题,则会有如下提示:

Attempting to build package from 'datagrip.nuspec'.Successfully created package 'datagrip.1.0.1.nupkg'

之后执行 choco push datagrip.1.0.1.nupkg即可将包上传至Chocolatey,通过管理员的审核之后,就会出现在软件列表中供人们下载了。  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
cmd安装Chocolatey/choco
Windows之Chocolatey:windows下的apt-get即Chocolatey简介、安装、使用方法之详细攻略
利用 Chocolatey 快速在 Windows 下搭建一个开发环境
deno初体验/安装与helloworld
Flutter 找不到 android sdk(图文详解)记一次安装中错误的过程
安装choco等
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服