首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Windows PowerShell PackageManager (OneGet)安装Windows?

如何用Windows PowerShell PackageManager (OneGet)安装Windows?
EN

Stack Overflow用户
提问于 2019-02-18 02:02:14
回答 2查看 20.5K关注 0票数 10

我试过Install-Package nodejs,它似乎做了些什么:

代码语言:javascript
复制
PS C:\WINDOWS\system32> Install-Package nodejs

The package(s) come(s) from a package source that is not marked as trusted.
Are you sure you want to install software from 'chocolatey'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): y

Name                           Version          Source           Summary
----                           -------          ------           -------
nodejs.install                 11.10.0          chocolatey       Node JS - Evented I/O for v8 JavaScript.
nodejs                         11.10.0          chocolatey       Node JS - Evented I/O for v8 JavaScript.

然后,当我尝试运行node命令时,它会失败:

代码语言:javascript
复制
PS C:\WINDOWS\system32> node
node : The term 'node' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ node
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (node:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

如何使用PackageManager正确地执行此操作,以便可以使用该命令?

不确定另一个问题是否相关:在Windows 10中,没有通过OneGet/PackageManagement安装巧克力包装?

正如另一个问题所暗示的,我尝试设置Set-ExecutionPolicy Unrestricted,卸载和重新安装nodejs,但是结果是一样的。

我确实看到,安装后存在以下文件:

代码语言:javascript
复制
C:\Chocolatey\lib\nodejs.11.10.0\nodejs.11.10.0.nupkg
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg\legal\LICENSE.txt
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg\legal\VERIFICATION.txt
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg\tools\chocolateyInstall.ps1
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg\tools\node-v11.10.0-x64.msi
C:\Chocolatey\lib\nodejs.install.11.10.0.nupkg\nodejs.install.11.10.0.nupkg\tools\node-v11.10.0-x86.msi

这让我想,也许它希望我在之后手动运行安装程序?

我的目标是从脚本中简单地在新的Windows机器上安装我需要的任何东西,而不必用GUI手动下载/安装它们。

EN

回答 2

Stack Overflow用户

发布于 2021-08-24 15:42:07

我能够复制这个,但也能解决这个问题。问题是使用node安装后,Install-Package可执行文件不在路径上。但是,这确实是有意义的,因为当前的PowerShell流程在重新启动之前不会对环境变量进行外部更改。

Chocolatey的refreshenv命令有时起作用,但并不总是起作用,在用Install-Package安装nodejs之后,refreshenv无法刷新PATH变量。所做的工作是启动一个新的PowerShell会话并运行node命令,该命令成功地运行了可执行文件:

代码语言:javascript
复制
> node

Welcome to Node.js v16.7.0.
Type ".help" for more information.
> 

choco.exe有时可以掩盖这一点,但通常巧克力不会为EXE或MSI安装程序放置的可执行文件生成shims (除非包维护人员强制创建它们)。

提示:如果您需要从安装包的同一进程调用二进制文件(例如,在chef-client运行过程中refreshenv不是选项),则使用可执行文件的完全限定路径来调用新安装的软件。

此外,不要在真正的自动化中使用巧克力般的OneGet提供商;它还不稳定,在编写本报告时看起来很像五年来没有看到任何开发活动。来自README.md

注意:寻找维护人员来帮助完成此提供程序。请查询问题清单或Gitter (见下面的聊天室)。谢谢!

在同一个README中列出了一个替代方案

注意:目前,您可能更感兴趣的是使用ChocolateyGet提供程序作为停止间隙解决方案,直到该提供程序准备就绪。详细信息请参见https://github.com/jianyunt/ChocolateyGet

我尝试过这样做,它似乎很有效,但我仍然建议使用正式的choco.exe二进制文件。安装起来很容易,使用它时你会得到最好的支持。这也说明配置管理解决方案(如主厨的chocolatey_package资源)继续使用二进制文件,并且通常会将安装客户端作为先决条件,尽管从技术上讲,PackageManagement模块可以作为本地解决方案使用。

票数 2
EN

Stack Overflow用户

发布于 2022-10-13 19:09:11

对我来说很管用:

代码语言:javascript
复制
winget install nodejs
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54739523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档