应用程序在 "Apps & Features" 和 "Programs & Features" 中对一个用户可见,但对另一个用户不可见

App visibility in "Apps & Features" and "Programs & Features" for one user but not another

我已经为 Windows10 创建了一个 C# 应用程序。它是通过使用 WIX 生成的 MSI 安装的。但是,当它为一台机器上的一个用户安装时,并非我自己的意图,它不会为同一台机器上的其他用户安装。

这种行为实际上很好(虽然是计划外的),但问题出现在卸载时。

如果有两个用户安装它,只有用户 a 卸载它,则用户 a 会完全卸载它,用户 b 会损坏它。 User-b 仍会在“设置”应用的 "Apps & Features" 中看到它,但 "C:\Program Files (x86)" 中的所有文件都将被删除,因此根本不会 运行。

我要寻求的解决方案是这个。当 user-a 卸载它时,所有应该发生的事情(如果 user-b 也安装了它)是应该从 "Apps & Features" 下的设置应用程序以及 "Programs & Features" 下的控制面板中删除列表。不应从 "C:\Program Files (x86)".

中删除任何文件

这应该是可行的,因为,当最初仅由一个用户安装时,"C:\Program Files (x86)" 处的文件对两个用户都存在,但只有安装该应用程序的用户才能看到它列在设置或在控制面板中。

我的问题是,如何仅从“设置”> "Apps & Features" 以及“控制面板”> "Programs & Features" 中为一个用户删除指向该应用程序的链接?

我看到有一些方法可以在不卸载应用程序的情况下为两个用户删除列表,例如 altering/deleting 注册表项位于:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

...但这不是我的目标。我只想能够删除 仅一个用户 的列表,同时保留所有其他用户的列表。

如果我知道列表是如何为一个用户而不是另一个用户提供的,我可能会想出如何让我的应用程序实现这一点。但我不确定首先填充这两个程序列表的是什么,或者是什么使它们对不同的用户有所不同。

我希望这是有道理的!提前感谢您提供的任何帮助!

设置Package/@InstallScope="perMachine"。这样可以确保只有一份副本,并且由机器上的所有用户共享。