C# 应用程序在“中的可见性”;应用程序及;特色;及;计划及;特色;对于一个用户,而不是另一个用户

C# 应用程序在“中的可见性”;应用程序及;特色;及;计划及;特色;对于一个用户,而不是另一个用户,c#,windows-10,wix,uninstallation,addremoveprograms,C#,Windows 10,Wix,Uninstallation,Addremoveprograms,我已经为Windows 10创建了一个C#应用程序。它是通过WIX生成的MSI安装的。当它为一台机器上的一个用户安装时,尽管我无意为同一台机器上的其他用户安装它 这种行为实际上是正常的(尽管是非计划的),但问题出现在卸载时 如果有两个用户安装了它,并且只有用户a卸载了它,那么用户a将完全卸载它,而用户b将被破坏。User-b仍将看到它列在设置应用程序的“应用程序和功能”中,但“C:\Program files(x86)”中的所有文件都将被删除,因此它根本不会运行 我想要的解决方案是这样的。当us

我已经为Windows 10创建了一个C#应用程序。它是通过WIX生成的MSI安装的。当它为一台机器上的一个用户安装时,尽管我无意为同一台机器上的其他用户安装它

这种行为实际上是正常的(尽管是非计划的),但问题出现在卸载时

如果有两个用户安装了它,并且只有用户a卸载了它,那么用户a将完全卸载它,而用户b将被破坏。User-b仍将看到它列在设置应用程序的“应用程序和功能”中,但“C:\Program files(x86)”中的所有文件都将被删除,因此它根本不会运行

我想要的解决方案是这样的。当user-a卸载它时,所有应该发生的事情(如果user-b也安装了它)是,列表应该从“应用程序和功能”下的设置应用程序中删除,也应该从“程序和功能”下的控制面板中删除。不应从“C:\Program files(x86)”中删除任何文件

这应该是可能的,因为当一开始只有一个用户安装时,“C:\Program files(x86)”中的文件对于两个用户都存在,但只有安装了应用程序的用户才能在设置或控制面板中看到它

我的问题是,如何仅为一个用户从“设置”>“应用程序和功能”和“控制面板”>“程序和功能”中删除指向该应用程序的链接?

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

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
…但这不是我的目标。我只想能够删除一个用户的列表,同时保留所有其他用户的列表

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


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

设置
Package/@InstallScope=“perMachine”
。这样可以确保有一个副本,并且机器上的所有用户都可以共享该副本。

谢谢您的建议!不过,如果单个用户可以自行安装和卸载,这确实是一个理想的选择。如果我找不到实现目标的方法,我会考虑你的建议的!如果你想按用户安装,他们不能进入程序文件这样的共享位置。嗯。。。那就是WIX放它们的地方。如果他们不在那里,他们应该去哪里?我如何让WIX把他们放在他们应该去的地方?为什么WIX在默认情况下会将它们安装在共享文件夹中,而只在一个用户的设置中列出它们?最后,WIX是如何做到这一点的(因为这就是我最初的问题所在)?Windows Installer(WIX只是构建工具)支持每台机器和每用户的软件包。注册(包括P&F/ARP)与文件的去向不同。