Наткнулся на плагин:
InvokeShellVerb Plugin for NSIS
Этот плагин вызывает командную оболочку Shell: правой клавишей мышью - контектстное меню файлов и папок
и вызывает выбранный пункт меню на исполнение
Но напрямую использовать плагин совершенно неудобно, даже сказал бы - невозможно без определенных знаний.
Поэтому написал хедер для удобного использования плагина:
InvokeShellVerb.nsh
Код:
!ifndef INVOKESHELLVERB_INCLUDED
!define INVOKESHELLVERB_INCLUDED
!macro __DefineTaskbar Def ID
!define ${Def}Taskbar "!insertmacro Shellverb ${ID}"
!macroend
!insertmacro __DefineTaskbar "PinTo" "5386"
!insertmacro __DefineTaskbar "UnPin" "5387"
!macro __DefinePusk Def ID
!define ${Def}Pusk "!insertmacro Shellverb ${ID}"
!macroend
!insertmacro __DefinePusk "PinTo" "5381"
!insertmacro __DefinePusk "UnPin" "5382"
!macro __DefineAdmin Def ID
!define ${Def}Admin "!insertmacro Shellverb ${ID}"
!macroend
!insertmacro __DefineAdmin "Run" "8505"
!macro Shellverb ID filename
Push `${ID}`
Push `${filename}`
System::Store SR0R1
IfFileExists `$R0` 0 +5
System::Call "shlwapi::PathRemoveFileSpecW(wR0R3)"
System::Call "shlwapi::PathStripPathW(wR0R2)"
InvokeShellVerb::DoIt "$R3" "$R2" "$R1"
Pop $R0
System::Store L
!macroend
!endif
Сохраняем файл
InvokeShellVerb.nsh (для юникодной NSIS - в любом юникоде) рядом со скриптом или в папке
NSIS\Include
Скачиваем плагин, копируем
InvokeShellVerb.dll (для юникодной NSIS файл берем из папки
Unicode архива) в
NSIS\Plugins
Далее подключаем хедер к телу скрипта:
Код:
!include "InvokeShellVerb.nsh"