所以我一直在尝试 OneGet 并想创建包。我遇到的最大问题是 OneGet 似乎并没有实际执行包中提供的卸载脚本。
这是 .nuspec 文件和我一直在测试的脚本文件:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>notepadplusplus</id>
<version>6.8.5</version>
<title>Notepad++</title>
<authors>Notepad ppl</authors>
<owners>King Kong</owners>
<projectUrl>https://notepad-plus-plus.org/</projectUrl>
<iconUrl>http://i1-win.softpedia-static.com/screenshots/icon-60/Notepad-plus-plus.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Notepad++ is a free (as in "free speech" and also as in "free beer") source code editor and Notepad replacement that supports several languages. Running in the MS Windows environment, its use is governed by GPL License.</description>
<summary>Notepad++</summary>
<tags>notepad notepad++ texteditor text editor</tags>
</metadata>
<files>
<file src="tools\chocolateyInstall.ps1" target="tools\chocolateyInstall.ps1" />
<file src="tools\chocolateyUninstall.ps1" target="tools\chocolateyUninstall.ps1" />
</files>
</package>
巧克力安装.ps1:
Install-ChocolateyPackage 'notepadplusplus' 'exe' '/S' 'https://notepad-plus-plus.org/repository/6.x/6.8.5/npp.6.8.5.Installer.exe'
巧克力云安装.ps1:
Get-WmiObject -Class Win32_Product | Select-Object -Property Name > C:\foo.txt
我使用卸载脚本只是为了测试脚本是否运行,但事实并非如此。当我对安装脚本执行相同操作时,我可以清楚地看到它命中了脚本并实际创建了文本文件。
所以我的问题是 Windows 10 中的 oneget 模块根本不使用脚本文件吗?如果提供的名称与注册表中的名称完全相同,则执行卸载包似乎会执行卸载文件。例如,执行该命令Uninstall-package notepad++
将卸载 notepad++,即使它是使用名称 notepadplusplus 安装的。