【问题标题】:Windows 10 NSIS uninstaller to also remove notification iconWindows 10 NSIS 卸载程序也可以删除通知图标
【发布时间】:2015-12-12 04:30:03
【问题描述】:

我正在开发一个 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

【问题讨论】:

  • 这是桌面还是 WinRT 应用程序?

标签: nsis windows-10 uninstallation


【解决方案1】:

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

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

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

MSDN 对桌面应用程序也有这样的说法:

通常,从桌面应用发送 toast 通知与从 Windows 应用商店应用发送通知相同。但是,您应该了解这些差异和要求:

  • 要让桌面应用程序显示 toast,该应用程序必须在“开始”屏幕上有一个快捷方式。
  • 快捷方式必须有 AppUserModelID。
  • 桌面应用无法安排 toast。

【讨论】:

    猜你喜欢
    • 2014-09-27
    • 2013-02-10
    • 2014-09-13
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 2017-08-06
    相关资源
    最近更新 更多