Windows 服务通过 msiexec 安装应用程序。该应用程序已安装,但未在 'uninstall a program' 列表中列出。为什么?

Windows Service installs app via msiexec. The app is installed, but it is not listed in 'uninstall a program' list. Why?

我有 Windows 服务 运行ning 作为 LocalSystem 帐户。该服务使用以下参数调用 msiexec:

string commandLineArguments = "/package C:\install.msi /quiet /norestart ";
start.Arguments = (commandLineArguments);

msiexec returns 成功并将文件移动到 "C:\Program Files",但该应用程序未列在 "uninstall a program" 列表中,因此,当我 运行 手动安装程序时,没有修复或删除的选项,只能重新安装软件。为什么?

我理解这可能是因为服务 运行s 在系统上下文而不是用户上下文中。如何指示 MSI 为当前用户执行安装?

如何卸载服务安装的软件?

当作为本地系统运行的Windows服务安装软件时,它被安装在系统上下文中,正如评论中提到的montonero。 如果要安装的 MSI 文件将 属性 InstallScope 设置为 perUser 或者它根本没有设置 InstallScope 属性 (那么默认是 perUser),安装的软件将不会在卸载中可见列表(谢谢Damien_The_Unbeliever)。

我通过为服务提供两个 MSI 文件来对此进行测试。一个将 InstallScope 设置为 perUser,另一个设置为 perMachine。在卸载列表中只能看到 perMachine 安装。

将 ALLUSERS 和 MSIINSTALLPERUSER 属性传递给 MSIEXEC 不会覆盖 MSI 文件中设置的属性。