そこで、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>
Chocolateyinstall.ps1:
Install-ChocolateyPackage 'notepadplusplus' 'exe' '/S' 'https://notepad-plus-plus.org/repository/6.x/6.8.5/npp.6.8.5.Installer.exe'
Chocolateyuninstall.ps1:
Get-WmiObject -Class Win32_Product | Select-Object -Property Name > C:\foo.txt
スクリプトが実行されるかどうかをテストするためだけにアンインストール スクリプトを使用しますが、実行されません。インストール スクリプトに対して同じことを行うと、スクリプトがヒットし、実際にテキスト ファイルが作成されることがはっきりとわかります。
私の質問は、Windows 10 の oneget モジュールはスクリプト ファイルをまったく使用しないのですか? アンインストールパッケージを実行すると、提供された名前がレジストリとまったく同じ場合、アンインストールファイルが実行されるようです。たとえば、このコマンドUninstall-package notepad++を実行すると、notepadplusplus という名前でインストールされていても、notepad++ がアンインストールされます。