[英]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.