2

我为 Windows 10 创建了一个 C# 应用程序。它是通过使用 WIX 生成的 MSI 安装的。但是,当它为一台机器上的一个用户安装时,出于我自己的无意,它不会为同一台机器上的其他用户安装。

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

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

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

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

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

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

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

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

如果我知道列表是如何为一个用户而不是另一个用户提供的,我可能会弄清楚如何让我的应用程序导致这种情况发生。但是我不确定首先填充这两个程序列表的是什么,或者是什么使它们对不同的用户有所不同。

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

4

1 回答 1

1

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

于 2019-11-19T18:17:29.200 回答