问题标签 [oneget]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
powershell - 为什么 Uninstall-Package 不启动 Chocolatey 卸载脚本?
所以我一直在尝试 OneGet 并想创建包。我遇到的最大问题是 OneGet 似乎并没有实际执行包中提供的卸载脚本。
这是 .nuspec 文件和我一直在测试的脚本文件:
巧克力安装.ps1:
巧克力云安装.ps1:
我使用卸载脚本只是为了测试脚本是否运行,但事实并非如此。当我对安装脚本执行相同操作时,我可以清楚地看到它命中了脚本并实际创建了文本文件。
所以我的问题是 Windows 10 中的 oneget 模块根本不使用脚本文件吗?如果提供的名称与注册表中的名称完全相同,则执行卸载包似乎会执行卸载文件。例如,执行该命令Uninstall-package notepad++
将卸载 notepad++,即使它是使用名称 notepadplusplus 安装的。
powershell - 为 PowerShellGet 创建纯 powershell Nuget 模块
我想要的是
我想将许多 PowerShell 脚本发布为 Nuget 包,以在构建系统上使用。
我想使用PowerShellGet为我做安装工作和版本管理。
我不希望这些脚本成为任何 Visual Studio 解决方案的一部分,而是作为独立脚本。
使用场景
在任何系统上,配置了 Nuget 提供程序的用户执行:
从那一刻起,该模块的所有导出都对该用户永久可用。用户也可以再次调用该命令来更新这些脚本的版本。
我做了什么
你可以在这里找到包的当前状态:GitHub
我已将 Nuget 提供程序添加并配置到我们的本地 Nuget 服务器
做这个电话
Get-PackageProvider -Name NuGet -ForceBootstrap
和Set-PSRepository -Name My_Nuget_Repo -SourceLocation http://my-nuget/api -InstallationPolicy Trusted
创建了适当的模块,可以通过以下方式在本地导入
Import-Module
使用该模块创建和发布 Nuget 包
问题
我可以通过 cmdlet 安装该软件包,稍后可以在列表Install-Module
中看到它。Get-InstalledModule
但是,没有可用的功能。
另外,无论如何,但Install-Module
不要从我的包中调用任何脚本:
- 不是
ScriptsToProcess
从MyModule.psd1
Install.ps1
不从tools
文件夹调用Init.ps1
不从tools
文件夹调用- 模块导出的 Cmdlet 不可用且模块无法导入
Import-Module
(从 Visual Studios 安装时,相同的包可以正常工作Install-Package MyModule
,调用脚本,导入 PowerShell 模块)。
调查
由于PowerShellGet
基于OneGet
它,问题似乎出在Install-Package
cmdlet 中(在 cmdlet 内部调用Install-Module
)。
当我Install-Package MyModule
从 Visual Studio执行Install.ps1
并被Init.ps1
调用时。但是来自纯 PowerShell 的相同命令什么也没做。
powershell - Update-Module 复制模块而不是更新
我正在使用PowerShellGet从我的本地 Nuget 源安装我自己的 PowerShell 模块(按此处打包和发布)。
我像这样安装一次:
然后我像这样更新它:
它按预期工作,但在每次版本更新后,我都会得到模块的副本而不是覆盖:
在最新版本中删除的函数仍然可用,并且 PowerShell ISE 自动完成显示每个函数的重复项:
更新
@CmdrTchort 提出了额外的调查检查,这里是结果。
检查模块的安装位置
正如预期的那样,PowerShellGet 将它们安装到%USERPROFILE%\Documents\WindowsPowerShell\Modules
:
我看到它$PSScriptRoot
包含那条路径。
检查更新模块将做什么
检查,实际导入的是哪个版本:
- 启动新
powershell
控制台 - 运行
Get-Module
以确保 MyModule 根本没有导入 - 从 MyModule 运行任何 cmdlet
Get-Module
检查,通过再次执行只导入了一个最新版本的 MyModule
对我来说是:
结论
看来,这里没有问题,正如@CmdrTchort 所写,预计会Get-Module -ListAvailable
显示安装的所有版本。
我认为 PowerShell 自动完成在 powershell 和 powershell_ise 中的行为有点令人困惑,因为如果可用的版本很少并且从最新版本中删除了功能,它会显示相同功能的重复,可能会很快改变或以某种方式配置。
powershell - Register-PSRepository 上的无效 Web Uri 错误
在 Windows 11 月更新(PackageManagement
和PowerShellGet
1.0.0.1 版本的模块)之后,我无法再将 HTTPS NuGet 服务器注册为 PSRepository:
它返回错误:
nuget - 如何在不同目录中填充具有相同名称的可执行文件?
我正在为内部团队使用创建一个 Chocolatey 包。(在这种情况下,该软件包适用于 Microsoft 的 Windows 调试器。)
Windows Debuggers 包含两个文件夹,一个用于 32 位 x86 可执行文件,一个用于 64 位可执行文件的 x64 文件夹。
可执行文件名称相同。
安装后,看起来 Chocolatey 创建的 shim 确实成功启动了其中一个 adplus 实例。但有时我需要 32 位版本,有时我需要 64 位版本。
所以这里有一个问题:当不同目录中有两个同名的可执行文件时,我如何告诉 Chocolately 为每个目录中的可执行文件创建不同的垫片?
powershell - 如何使用来自 nuget.org 的 OneGet / install-package 安装包
我正在尝试从此处安装 Microsoft.Experimental.IO 库:https ://www.nuget.org/packages/Microsoft.Experimental.IO/1.0.0 on Windows 10 using Powershell - Install-Package。
我添加了 nuget.org 存储库,当我使用命令“find-package -contains experimental ”时,Powershell 找到了包,但是当我尝试安装它时,我收到以下错误。
我该如何克服这个问题并安装软件包?
windows - 在 OneGet 中导入当前安装的程序
我想开始使用 OneGet 在 Windows 中安装程序。但是,我宁愿不必通过并卸载我当前的程序,以便我可以将它们与 OneGet 一起使用。
OneGet 是否会自动导入已安装的程序,如果没有,我可以使用任何工具来执行此操作吗?
powershell - 如何修复 Powershell Register-PSRepository 的“无效 Web Uri”?
几周前,这个错误开始出现。
我不知道如何解决这个没有卸载 Powershell 的问题。StackOverflow 上有一个可用的解决方法,但它很笨重,不会长期为我工作。
坦率地说,我宁愿只找到 PSRepositories 的存储位置,并在需要时手动编辑文件。
powershell - 我可以使用 Install-Package 提供包参数吗?
我知道我可以在 Windows 包管理上安装包,例如:
但是有没有办法提供包参数?例如win32-openssh
,当通过 Chocolatey 安装时,像这样的包有选项,我如何提供包参数使用Install-Package
?例如,类似:
PS。我知道我可以通过 Chocolatey 直接安装软件包——这不是我的问题。
powershell - 如何为 OneGet Install-Package 创建可执行包?
我了解如何为 NuGet 创建包。创建 NuGet 包或 PowerShell 包也没有什么特别困难的。
我知道在 .NET Core 中使用二进制 cmdlet 创建 PowerShell 包可能是不可能的,所以想知道是否可以使用生命周期钩子创建一个包。
比如说,在 中npm
,您可以定义脚本来package.json
声明安装前/安装后/发布依赖项。
所以,问题是:
通过将我的包添加到系统后,如何执行自定义脚本Install-Package
?
例如,我想将可执行文件添加到 PATH(可能是非常常见的任务)