【发布时间】:2013-06-21 21:31:48
【问题描述】:
我们正在为我们的软件开发更新系统。更新程序应作为服务在后台运行,当有可用更新时,下载并安装它。我们需要该服务来安装更新,因为MSI 需要提升才能运行,但我们的一些客户将是受限用户。
MSI 是WiX MSI,在运行时会进行重大升级。问题是,从我们的服务运行更新似乎不起作用。我可以看到 msiexec 运行,它成功返回,但似乎对系统没有任何更改。从我的用户帐户运行时,相同的命令按预期工作。
从本地系统服务运行 msiexec 是否有一些注意事项?
我们只是在做:
string arguments = "/i /quiet /lv*x " + pathToLogFile;
System.Diagnostics.Process.Start("msiexec.exe", arguments);
【问题讨论】:
-
你传递了什么参数?您确定您传递了正确的参数以进行静默安装吗?你的安装人员是做什么的?
-
我更新了问题以显示我们的论点。安装程序可能会做很多事情(取决于选择的功能),包括向 HKLM 和 HKCR 添加注册表项、安装驱动程序、注册 COM 对象,当然还有复制文件。不幸的是,管理员访问是不可避免的。
-
您是否尝试过添加 /qn 开关(msiexec /? 将显示所有可用选项)?日志文件是否产生有关错误或跳过步骤的任何信息?您可以将日志与成功安装的日志进行比较吗?
-
根据 MSDN,/qn 和 /quiet 是等价的。我浏览了日志,当它在本地系统下执行时,没有错误,最后“安装成功”,但它没有升级。正如 Andrew 在下面建议的那样,在另一个用户下运行它似乎可以工作,所以我想我们会走那条路。谢谢。
标签: c# service windows-services wix windows-installer