首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从服务运行msiexec (本地系统帐户)

从服务运行msiexec (本地系统帐户)
EN

Stack Overflow用户
提问于 2010-04-09 06:48:14
回答 4查看 10.9K关注 0票数 14

我们正在为我们的软件开发一个更新系统。更新程序应该作为服务在后台运行,当更新程序可用时,下载并安装它。我们需要该服务来安装更新,因为MSI需要提升才能运行,但我们的一些客户端将是受限用户。

微系统互连是WiX微系统互连,在运行时会进行重大升级。问题是,从我们的服务运行时,更新似乎不起作用。我可以看到msiexec运行,它成功返回,但似乎没有对系统进行任何更改。当从我的用户帐户运行时,同样的命令也可以正常工作。

从本地系统服务运行msiexec是否有一些注意事项?

我们只是在做:

代码语言:javascript
复制
string arguments = "/i /quiet /lv*x " + pathToLogFile;   
System.Diagnostics.Process.Start("msiexec.exe", arguments);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-09 06:56:48

如果您的服务是Windows服务,请执行以下步骤:

  1. 在服务控制台中打开服务的属性。
  2. 转到登录选项卡
  3. 设置一个有权更新系统的帐户(您的帐户或为此服务专门创建的帐户

在这种情况下,服务将以适当的权限运行,并且可以进行更新。

票数 5
EN

Stack Overflow用户

发布于 2011-03-11 02:15:10

如果其他人遇到这种情况,这就是我所发现的。

我从一个作为LocalSystem运行的服务中安装了一个程序。安装程序将立即返回,退出代码为0。然而,该程序似乎没有安装。文件未复制到位,也未创建快捷方式。查看日志文件很困难,因为它没有简单的成功或失败消息。当我以普通管理员帐户运行该服务时,它工作得很好。我终于注意到日志文件里写着

确定现有产品(此产品或使用补丁程序升级的产品)是按计算机安装的。

它没有在控制面板>程序中显示为已安装,但由于某种原因,Windows认为它已经安装。不幸的是,运行msiexec /x卸载该程序也没有效果。

我试着更改产品代码和升级代码,viola,它工作了。在我的例子中,我控制了安装产品代码和升级代码,所以我可以这样做。如果在其他人的情况下,您没有这样的访问权限,您可以尝试安装其他一些任意的软件(将具有不同的产品/升级代码),并查看是否有效,如果有效,至少您知道这是问题所在。

票数 3
EN

Stack Overflow用户

发布于 2010-06-26 03:24:54

我也有如上所述的相同任务,我发现如果为所有用户安装了程序,则运行msiexec将在SYSTEM帐户下运行的Service中运行。因此,要使此功能正常工作,您必须为所有用户安装。在我的例子中,我在第一次安装程序时指定了msxexec命令,如下所示。

代码语言:javascript
复制
msiexec /i setup.msi ALLUSERS="1"

完成此操作后,您可以从Service升级程序,而不会出现任何问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2603969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档