2017-03-15 19 views
1

나는 회사의 앱을 만들고 있는데, 앱이 작업 표시 줄에 고정되어있는 경우 앱을 제거 할 때 고정 해제해야한다고 요청했습니다. quicklaunch \ user pinned \ taskbar에서 아이콘을 삭제하면 작업 표시 줄에 빈 아이콘이 남습니다.nsis - 제거시 작업 표시 줄에서 고정 된 아이콘 제거

어떻게 든 실제로 고정 해제해야합니다. 내가 건너 한 유일한 것은 IStartMenuPinnedList 호출 다음 플러그인 (http://nsis.sourceforge.net/WinShell_plug-in를) winshell 설치되어 :: RemoveFromList (https://msdn.microsoft.com/en-us/library/windows/desktop/bb774817(v=vs.85).aspx)

을 내가 필요하지 않으면 차라리 플러그인을 설치하지 것입니다. 누구든지 어떤 제안이 있습니까?

답변

2

NSIS는이 인터페이스를 기본적으로 지원하지 않으므로 플러그인을 사용해야합니다. 제 3 자 플러그인 (제게 작성)을 피하려면 다음과 같이 시스템 플러그인을 대신 사용할 수 있습니다.

!include "LogicLib.nsh" 
!include "Win\COM.nsh" ; NSIS v3+ 

!macro UnpinShortcut lnkpath 
Push $0 
Push $1 
!insertmacro ComHlpr_CreateInProcInstance ${CLSID_StartMenuPin} ${IID_IStartMenuPinnedList} r0 "" 
${If} $0 P<> 0 
    System::Call 'SHELL32::SHCreateItemFromParsingName(ws, p0, g "${IID_IShellItem}", *p0r1)' "${lnkpath}" 
    ${If} $1 P<> 0 
     ${IStartMenuPinnedList::RemoveFromList} $0 '(r1)' 
     ${IUnknown::Release} $1 "" 
    ${EndIf} 
    ${IUnknown::Release} $0 "" 
${EndIf} 
Pop $1 
Pop $0 
!macroend 

Section Uninstall 
!insertmacro UnpinShortcut "$SMPrograms\MyApp.lnk" 
Delete "$SMPrograms\MyApp.lnk" 
SectionEnd