【问题标题】:App visibility in "Apps & Features" and "Programs & Features" for one user but not another一个用户而不是另一个用户在“应用程序和功能”和“程序和功能”中的应用程序可见性
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 感谢您的建议!如果个人用户可以自己安装和卸载,这确实是理想的。如果我找不到实现目标的方法,我会考虑你的建议!
    • 如果您希望按用户安装,他们不能转到像 Program Files 这样的共享位置。
    • 嗯...这就是 WIX 放置它们的地方。如果不在那里,他们应该去哪里?
    • 我将如何让 WIX 将它们放在应有的位置?为什么 WIX(显然默认情况下)将它们安装在共享文件夹中,但只在一个用户的“设置”中列出它们?最后,WIX 是如何做到的(因为这正是我最初的问题所在)?
    • Windows Installer(WiX 只是构建工具)支持每台机器和每用户包。注册(包括 P&F/ARP)与文件的去向不同。
    猜你喜欢
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 2011-03-30
    相关资源
    最近更新 更多