简体   繁体   中英

Windows 10 NSIS uninstaller to also remove notification icon

I'm working on a windows 10 app but I've noticed that when I uninstall it it's icon remains in the notification & actions window. what would I need to do or add to my uninstaller to allow it to remove this icon. This is what what uninstaller look like in my .nsi script

Section "Uninstall"

 Call un.XXXXXXXXX
 ExecWait '"$INSTDIR\f2p_ping.exe" --f2p' $0

 ; Remove registry keys
 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MyApp"
 DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "MyApp"
 DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "MyApp"
 DeleteRegKey HKLM "SOFTWARE\MyApp"
 DeleteRegKey HKCU "Software\MyApp\Overlay\ExcludedProcesses"
 DeleteRegKey HKCR "MyApp"

 RMDir /r "$INSTDIR"
 RMDir /r $PROGRAMFILES\MyApp
 RMDir /r "$APPDATA\MyApp\*.*"

 ; Remove shortcuts, if any
 SetShellVarContext current
 Delete "$SMPROGRAMS\MyApp\*.*"
 Delete "$SMPROGRAMS\Startup\MyApp.lnk"
 SetShellVarContext all
 Delete "$SMPROGRAMS\MyApp\*.*"
 Delete "$SMPROGRAMS\Startup\MyApp.lnk"
 Delete "$DESKTOP\MyApp.lnk"

 ; Remove directories used
 SetShellVarContext current
 RMDir "$SMPROGRAMS\MyApp"
 SetShellVarContext all
 RMDir "$SMPROGRAMS\MyApp"
 RMDir "$INSTDIR"

SectionEnd

The best solution is probably to have your application hide the notifications since it already contains notification code. Run something like ExecWait '"$InstDir\\MyApp.exe" /uninstall' at the start of your uninstaller.

It might be possible to use one of the IToast* interfaces with the System plugin but there is a lot of code needed and I don't know if Windows let's you pretend to be another application by using its Application Model Id. For example, MSDN has this to say about IToastNotificationHistory::Remove:

The app ID of the app that sent the specified toast notification. This app must be part of the same app package as the app making this remove request.

MSDN also has this to say about desktop apps:

Generally, sending a toast notification from a desktop app is the same as sending it from a Windows Store app. However, you should be aware of these differences and requirements:

  • For a desktop app to display a toast, the app must have a shortcut on the Start screen.
  • The shortcut must have an AppUserModelID.
  • Desktop apps cannot schedule a toast.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM