【发布时间】:2023-03-24 01:58:01
【问题描述】:
我为 Windows 10 创建了一个 C# 应用程序。它是通过使用 WIX 生成的 MSI 安装的。但是,当它是为一台机器上的一个用户安装时,出于我自己的无意,它不会为同一台机器上的其他用户安装。
这种行为实际上很好(虽然是计划外的),但问题出现在卸载时。
如果两个用户安装它,并且只有用户 a 卸载它,它会为用户 a 完全卸载,并为用户 b 损坏。用户 b 仍会在设置应用程序的“应用程序和功能”中看到它,但“C:\Program Files (x86)”中的所有文件都将被删除,因此它根本不会运行。
我想要的解决方案是这样的。当用户 a 卸载它时,应该发生的所有事情(如果用户 b 也安装了它)应该从“应用程序和功能”下的“设置”应用程序以及“程序和功能”下的控制面板中删除列表。不应从“C:\Program Files (x86)”中删除任何文件。
这应该是可能的,因为当仅由一个用户首先安装时,“C:\Program Files (x86)”中的文件对两个用户都存在,但只有安装该应用程序的用户才能看到它列在“设置”或“控制面板”中。
我的问题是,如何仅从“设置”>“应用程序和功能”以及“控制面板”>“程序和功能”中为一位用户删除指向该应用程序的链接?
我发现有一些方法可以在不卸载应用程序的情况下删除两个用户的列表,例如更改/删除注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
...但这不是我的目标。我只想能够删除仅一个用户的列表,同时保留所有其他用户的列表。
如果我知道列表是如何为一个用户而不是另一个用户提供的,我可能会弄清楚如何让我的应用程序导致这种情况发生。但我不确定首先填充这两个程序列表的是什么,或者是什么使它们对不同的用户有所不同。
我希望这是有道理的!提前感谢您提供的任何帮助!
【问题讨论】:
标签: c# windows-10 wix uninstallation addremoveprograms