问题标签 [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.

0 投票
1 回答
484 浏览

powershell - 为什么 Uninstall-Package 不启动 Chocolatey 卸载脚本?

所以我一直在尝试 OneGet 并想创建包。我遇到的最大问题是 OneGet 似乎并没有实际执行包中提供的卸载脚本。

这是 .nuspec 文件和我一直在测试的脚本文件:

巧克力安装.ps1:

巧克力云安装.ps1:

我使用卸载脚本只是为了测试脚本是否运行,但事实并非如此。当我对安装脚本执行相同操作时,我可以清楚地看到它命中了脚本并实际创建了文本文件。

所以我的问题是 Windows 10 中的 oneget 模块根本不使用脚本文件吗?如果提供的名称与注册表中的名称完全相同,则执行卸载包似乎会执行卸载文件。例如,执行该命令Uninstall-package notepad++将卸载 notepad++,即使它是使用名称 notepadplusplus 安装的。

0 投票
1 回答
7772 浏览

powershell - 为 PowerShellGet 创建纯 powershell Nuget 模块

我想要的是

我想将许多 PowerShell 脚本发布为 Nuget 包,以在构建系统上使用。

我想使用PowerShellGet为我做安装工作和版本管理。

我不希望这些脚本成为任何 Visual Studio 解决方案的一部分,而是作为独立脚本。

使用场景

在任何系统上,配置了 Nuget 提供程序的用户执行:

从那一刻起,该模块的所有导出都对该用户永久可用。用户也可以再次调用该命令来更新这些脚本的版本。

我做了什么

你可以在这里找到包的当前状态:GitHub

  1. 我已将 Nuget 提供程序添加并配置到我们的本地 Nuget 服务器

    做这个电话Get-PackageProvider -Name NuGet -ForceBootstrapSet-PSRepository -Name My_Nuget_Repo -SourceLocation http://my-nuget/api -InstallationPolicy Trusted

  2. 创建了适当的模块,可以通过以下方式在本地导入Import-Module

  3. 使用该模块创建和发布 Nuget 包

问题

我可以通过 cmdlet 安装该软件包,稍后可以在列表Install-Module中看到它。Get-InstalledModule

但是,没有可用的功能。

另外,无论如何,但Install-Module不要从我的包中调用任何脚本:

  • 不是ScriptsToProcessMyModule.psd1
  • Install.ps1不从tools文件夹调用
  • Init.ps1不从tools文件夹调用
  • 模块导出的 Cmdlet 不可用且模块无法导入Import-Module

(从 Visual Studios 安装时,相同的包可以正常工作Install-Package MyModule,调用脚本,导入 PowerShell 模块)。

调查

由于PowerShellGet基于OneGet它,问题似乎出在Install-Packagecmdlet 中(在 cmdlet 内部调用Install-Module)。

当我Install-Package MyModule从 Visual Studio执行Install.ps1并被Init.ps1调用时。但是来自纯 PowerShell 的相同命令什么也没做。

0 投票
1 回答
1085 浏览

powershell - Update-Module 复制模块而不是更新

我正在使用PowerShellGet从我的本地 Nuget 源安装我自己的 PowerShell 模块(按此处打包和发布)。

我像这样安装一次:

然后我像这样更新它:

它按预期工作,但在每次版本更新后,我都会得到模块的副本而不是覆盖:

在最新版本中删除的函数仍然可用,并且 PowerShell ISE 自动完成显示每个函数的重复项:

powershell_ise 中的示例


更新

@CmdrTchort 提出了额外的调查检查,这里是结果。

检查模块的安装位置

正如预期的那样,PowerShellGet 将它们安装到%USERPROFILE%\Documents\WindowsPowerShell\Modules

我看到它$PSScriptRoot包含那条路径。

检查更新模块将做什么

检查,实际导入的是哪个版本:

  1. 启动新powershell控制台
  2. 运行Get-Module以确保 MyModule 根本没有导入
  3. 从 MyModule 运行任何 cmdlet
  4. Get-Module检查,通过再次执行只导入了一个最新版本的 MyModule

对我来说是:

结论

看来,这里没有问题,正如@CmdrTchort 所写,预计会Get-Module -ListAvailable显示安装的所有版本。

我认为 PowerShell 自动完成在 powershell 和 powershell_ise 中的行为有点令人困惑,因为如果可用的版本很少并且从最新版本中删除了功能,它会显示相同功能的重复,可能会很快改变或以某种方式配置。

0 投票
5 回答
12101 浏览

powershell - Register-PSRepository 上的无效 Web Uri 错误

在 Windows 11 月更新(PackageManagementPowerShellGet1.0.0.1 版本的模块)之后,我无法再将 HTTPS NuGet 服务器注册为 PSRepository:

它返回错误:

0 投票
1 回答
311 浏览

nuget - 如何在不同目录中填充具有相同名称的可执行文件?

我正在为内部团队使用创建一个 Chocolatey 包。(在这种情况下,该软件包适用于 Microsoft 的 Windows 调试器。)

Windows Debuggers 包含两个文件夹,一个用于 32 位 x86 可执行文件,一个用于 64 位可执行文件的 x64 文件夹。

可执行文件名称相同。

安装后,看起来 Chocolatey 创建的 shim 确实成功启动了其中一个 adplus 实例。但有时我需要 32 位版本,有时我需要 64 位版本。

所以这里有一个问题:当不同目录中有两个同名的可执行文件时,我如何告诉 Chocolately 为每个目录中的可执行文件创建不同的垫片?

0 投票
1 回答
1849 浏览

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 找到了包,但是当我尝试安装它时,我收到以下错误。

我该如何克服这个问题并安装软件包?

0 投票
1 回答
35 浏览

windows - 在 OneGet 中导入当前安装的程序

我想开始使用 OneGet 在 Windows 中安装程序。但是,我宁愿不必通过并卸载我当前的程序,以便我可以将它们与 OneGet 一起使用。

OneGet 是否会自动导入已安装的程序,如果没有,我可以使用任何工具来执行此操作吗?

0 投票
2 回答
6639 浏览

powershell - 如何修复 Powershell Register-PSRepository 的“无效 Web Uri”?

几周前,这个错误开始出现。

我不知道如何解决这个没有卸载 Powershell 的问题。StackOverflow 上有一个可用的解决方法,但它很笨重,不会长期为我工作。

坦率地说,我宁愿只找到 PSRepositories 的存储位置,并在需要时手动编辑文件。

0 投票
0 回答
221 浏览

powershell - 我可以使用 Install-Package 提供包参数吗?

我知道我可以在 Windows 包管理上安装包,例如:

但是有没有办法提供包参数?例如win32-openssh,当通过 Chocolatey 安装时,像这样的包有选项,我如何提供包参数使用Install-Package例如,类似:

PS。我知道我可以通过 Chocolatey 直接安装软件包——这不是我的问题。

0 投票
1 回答
90 浏览

powershell - 如何为 OneGet Install-Package 创建可执行包?

我了解如何为 NuGet 创建包。创建 NuGet 包或 PowerShell 包也没有什么特别困难的。

我知道在 .NET Core 中使用二进制 cmdlet 创建 PowerShell 包可能是不可能的,所以想知道是否可以使用生命周期钩子创建一个包。

比如说,在 中npm,您可以定义脚本package.json声明安装前/安装后/发布依赖项。

所以,问题是:

通过将我的包添加到系统后,如何执行自定义脚本Install-Package

例如,我想将可执行文件添加到 PATH(可能是非常常见的任务)