WinShell plug-in
From NSIS Wiki
Jump to navigationJump to search
Author: Anders (talk, contrib) |
Plugin Info
- Version: 20121005
- Type: Runtime plugin
- Character encoding: Ansi & Unicode
- Minimum OS: Win95/NT4
- Minimum NSIS Version: 2.0
- License: Freeware
- Download: WinShell.zip (2 KB)
Information
SetLnkAUMI sets the PKEY_AppUserModel_ID property on a shortcut.
UninstAppUserModelId calls IApplicationDestinations::RemoveAllDestinations and ICustomDestinationList::DeleteList.
UninstShortcut calls IStartMenuPinnedList::RemoveFromList.
Usage Example
!define MyApp_AppUserModelId "MyCompany.MyApp.xyz" Section Install CreateShortcut "$SMPrograms\MyApp.lnk" "$Instdir\MyApp.exe" WinShell::SetLnkAUMI "$SMPrograms\MyApp.lnk" "${MyApp_AppUserModelId}" SectionEnd Section Uninstall WinShell::UninstAppUserModelId "${MyApp_AppUserModelId}" WinShell::UninstShortcut "$SMPrograms\MyApp.lnk" Delete "$SMPrograms\MyApp.lnk" SectionEnd
System plug-in alternative
!include "Win\COM.nsh" !include LogicLib.nsh Section Uninstall !insertmacro ComHlpr_CreateInProcInstance ${CLSID_DestinationList} ${IID_ICustomDestinationList} r1 "" ${If} $1 P<> 0 ${ICustomDestinationList::DeleteList} $1 '("${MyApp_AppUserModelId}")' ${IUnknown::Release} $1 "" ${EndIf} !insertmacro ComHlpr_CreateInProcInstance ${CLSID_ApplicationDestinations} ${IID_IApplicationDestinations} r1 "" ${If} $1 P<> 0 ${IApplicationDestinations::SetAppID} $1 '("${MyApp_AppUserModelId}")i.r0' ${If} $0 >= 0 ${IApplicationDestinations::RemoveAllDestinations} $1 '' ${EndIf} ${IUnknown::Release} $1 "" ${EndIf} !include Integration.nsh ${UnpinShortcut} "$SMPrograms\MyApp.lnk" Delete "$SMPrograms\MyApp.lnk" SectionEnd
Credits
Written by Anders (For fun and profit?)