我们正在为我们的软件开发一个更新系统。更新程序应该作为服务在后台运行,当更新程序可用时,下载并安装它。我们需要该服务来安装更新,因为MSI需要提升才能运行,但我们的一些客户端将是受限用户。
微系统互连是WiX微系统互连,在运行时会进行重大升级。问题是,从我们的服务运行时,更新似乎不起作用。我可以看到msiexec运行,它成功返回,但似乎没有对系统进行任何更改。当从我的用户帐户运行时,同样的命令也可以正常工作。
从本地系统服务运行msiexec是否有一些注意事项?
我们只是在做:
string arguments = "/i /quiet /lv*x " + pathToLogFile;
System.Diagnostics.Process.Start("msiexec.exe", arguments);发布于 2010-04-09 06:56:48
如果您的服务是Windows服务,请执行以下步骤:
在这种情况下,服务将以适当的权限运行,并且可以进行更新。
发布于 2011-03-11 02:15:10
如果其他人遇到这种情况,这就是我所发现的。
我从一个作为LocalSystem运行的服务中安装了一个程序。安装程序将立即返回,退出代码为0。然而,该程序似乎没有安装。文件未复制到位,也未创建快捷方式。查看日志文件很困难,因为它没有简单的成功或失败消息。当我以普通管理员帐户运行该服务时,它工作得很好。我终于注意到日志文件里写着
确定现有产品(此产品或使用补丁程序升级的产品)是按计算机安装的。
它没有在控制面板>程序中显示为已安装,但由于某种原因,Windows认为它已经安装。不幸的是,运行msiexec /x卸载该程序也没有效果。
我试着更改产品代码和升级代码,viola,它工作了。在我的例子中,我控制了安装产品代码和升级代码,所以我可以这样做。如果在其他人的情况下,您没有这样的访问权限,您可以尝试安装其他一些任意的软件(将具有不同的产品/升级代码),并查看是否有效,如果有效,至少您知道这是问题所在。
发布于 2010-06-26 03:24:54
我也有如上所述的相同任务,我发现如果为所有用户安装了程序,则运行msiexec将在SYSTEM帐户下运行的Service中运行。因此,要使此功能正常工作,您必须为所有用户安装。在我的例子中,我在第一次安装程序时指定了msxexec命令,如下所示。
msiexec /i setup.msi ALLUSERS="1"完成此操作后,您可以从Service升级程序,而不会出现任何问题。
https://stackoverflow.com/questions/2603969
复制相似问题