WinShell plug-in: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
(20121005: Fixed a bug in the ANSI plugin) |
(System plug-in alternative) |
||
(One intermediate revision by the same user not shown) | |||
Line 24: | Line 24: | ||
Section Install | Section Install | ||
CreateShortcut "$SMPrograms\MyApp.lnk" "$Instdir\MyApp.exe" | |||
CreateShortcut "$SMPrograms | WinShell::SetLnkAUMI "$SMPrograms\MyApp.lnk" "${MyApp_AppUserModelId}" | ||
WinShell::SetLnkAUMI "$SMPrograms | |||
SectionEnd | SectionEnd | ||
Line 33: | Line 32: | ||
WinShell::UninstAppUserModelId "${MyApp_AppUserModelId}" | WinShell::UninstAppUserModelId "${MyApp_AppUserModelId}" | ||
WinShell::UninstShortcut "$SMPrograms\MyApp\MyApp.lnk" | WinShell::UninstShortcut "$SMPrograms\MyApp.lnk" | ||
Delete "$SMPrograms\MyApp.lnk" | |||
SectionEnd | |||
</highlight-nsis> | |||
== System plug-in alternative == | |||
<highlight-nsis> | |||
!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 | SectionEnd | ||
</highlight-nsis> | </highlight-nsis> |
Latest revision as of 22:01, 7 June 2021
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?)