繁体   English   中英

Windows 10 NSIS卸载程序也将删除通知图标

[英]Windows 10 NSIS uninstaller to also remove notification icon

我正在使用Windows 10应用程序,但是我注意到当我卸载它时,它的图标仍保留在“通知和操作”窗口中。 我需要做什么或添加到我的卸载程序中才能允许它删除此图标。 这就是我的.nsi脚本中的卸载程序的外观

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

最好的解决方案可能是让您的应用程序隐藏通知,因为它已经包含了通知代码。 ExecWait '"$InstDir\\MyApp.exe" /uninstall'的开头运行ExecWait '"$InstDir\\MyApp.exe" /uninstall'之类的内容。

可能可以将IToast *接口之一与System插件一起使用,但是需要大量代码,而且我不知道Windows是否允许您通过使用其应用程序模型ID假装为另一个应用程序。 例如,MSDN关于IToastNotificationHistory :: Remove的说法是:

发送指定的Toast通知的应用程序的应用程序ID。 此应用程序必须与发出此删除请求的应用程序属于同一应用程序包。

MSDN也有关于桌面应用程序的说法:

通常,从桌面应用程序发送祝酒通知与从Windows Store应用程序发送祝酒通知相同。 但是,您应该了解这些差异和要求:

  • 要使桌面应用程序显示吐司,该应用程序必须在“开始”屏幕上具有快捷方式。
  • 快捷方式必须具有AppUserModelID。
  • 桌面应用无法安排祝酒活动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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