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?)