Chocolatey и powershell: закрепление и открепление программ из панели задач и файловых ассоциаций

Я хотел бы закрепить и открепить программы из панели задач, используя Chocolatey. Я знаю, что могу использовать вспомогательную функцию Install-ChocolateyPinnedTaskBarItem закрепить программы.

НапримерInstall-ChocolateyPinnedTaskBarItem "${env:ProgramFiles(x86)}\Mozilla Thunderbird\thunderbird.exe"Я получаю эти сообщения

TaskBar verb not found for System.__ComObject. It may have already been pinned 'C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe' has been pinned to the task bar on your desktop however thunderbird is not pinned and there is no icon on the desktop.

Я изменил исходный код Install-ChocolateyPinnedTaskBarItem, чтобы напечатать все операции, и это вывод

Split-path C:\Program Files\Mozilla Firefox
Folder System.__ComObject
Item System.__ComObject
ItemVerb
TaskBar verb not found for System.__ComObject. It may have already been pinned
'C:\Program Files\Mozilla Firefox\firefox.exe' has been pinned to the task bar on your desktop
Split-path C:\Program Files (x86)\Mozilla Thunderbird
Folder System.__ComObject
Item System.__ComObject
ItemVerb
TaskBar verb not found for System.__ComObject.
'C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe' has been pinned to the task bar on your desktop`

Я делаю ошибку при вызове функции?

Кроме того, я хотел бы также открепить программы. Кажется, что у шоколада нет никакой функции, чтобы сделать это. Я нашел из этой темы Как открепить папку "Библиотека" из панели задач с помощью Powershell? эта функция дополняет предыдущую функцию вывода.

function Uninstall-ChocolateyPinnedTaskBarItem {
<# .SYNOPSIS
Removes an item from the task bar linking to the provided path.
.PARAMETER TargetFilePath
The path to the application that should be launched when clicking on the task bar icon.

.EXAMPLE
Uninstall-ChocolateyPinnedTaskBarItem "${env:ProgramFiles(x86)}\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

This will remove the Visual Studio task bar icon.
#>
param(
  [string] $targetFilePath 
)

Write-Debug "Running 'Uninstall-ChocolateyPinnedTaskBarItem' with targetFilePath:`'$targetFilePath`'";

if (test-path($targetFilePath)) {
  $verb = "Unpin from Taskbar"
  $path= split-path $targetFilePath 
  $shell=new-object -com "Shell.Application"  
  $folder=$shell.Namespace($path)    
  $item = $folder.Parsename((split-path $targetFilePath -leaf)) 
  $itemVerb = $item.Verbs() | ? {$_.Name.Replace("&","") -eq $verb} 
  if($itemVerb -eq $null){ 
    Write-Host "TaskBar verb not found for $item. It may have already been unpinned"
  } else { 
      $itemVerb.DoIt() 
  } 
  Write-Host "`'$targetFilePath`' has been unpinned from the task bar on your desktop"
} else {
  $errorMessage = "`'$targetFilePath`' does not exist, not able to unpin from task bar"
}
if($errorMessage){
  Write-Error $errorMessage
  throw $errorMessage
}

Точно так же это не работает. Я знаю, что могу использовать другие решения, такие как это https://gallery.technet.microsoft.com/ScriptCenter/b66434f1-4b3f-4a94-8dc3-e406eb30b750/. Тем не менее, я предпочитаю использовать все вещи из шоколада. У вас есть какие-нибудь предложения?

Изменить: В Windows 7 и 10 даже некоторые ассоциации файлов не работает. Следующее работает с Windows 7, но не работает на Windows 10

Install-ChocolateyFileAssociation ".html" "$ProgramsPath\Mozilla Firefox\firefox.exe"Следующее работает только на Windows 7 и только для расширения файла.ps1

Install-ChocolateyFileAssociation ".txt" "${env:ProgramFiles(x86)}\Notepad++\notepad++.exe" Install-ChocolateyFileAssociation ".ps1" "${env:ProgramFiles(x86)}\Notepad++\notepad++.exe"

Следующие работы как для Windows 7 и Windows 10

Install-ChocolateyFileAssociation ".rar" "$ProgramsPath\7-Zip\7zFM.exe" Install-ChocolateyFileAssociation ".zip" "$ProgramsPath\7-Zip\7zFM.exe" Install-ChocolateyFileAssociation ".7z" "$ProgramsPath\7-Zip\7zFM.exe"

1 ответ

Похоже, что во многом это необходимо для разрешения проблем на https://github.com/chocolatey/choco/issues - похоже, вы обнаружили пару ошибок и имеете функцию добавления поддержки открепления панели задач.

Не могли бы вы создать все эти проблемы в проекте, чтобы их можно было обрабатывать и обрабатывать? Спасибо!

Другие вопросы по тегам