![](/img/trans.png)
[英]MSI installer automatically starting after application already installed when using "Everyone" option?
[英]MSI installer runs again after already having installed using msiexec
我正在运行Windows服务,该服务会更新另一个Windows服务。 它通过卸载currentversion然后安装较新的版本来实现。 我们使用原始的msi安装程序和带有Process.Start()的msiexec进行此操作。
Process msiexec = new Process();
msiexec.StartInfo.FileName = "msiexec";
msiexec.StartInfo.Arguments = "/quiet /i \"" + msiFileName + "\" /l*v \"" + msilogfile + "\"";
if (!msiexec.Start())
....etc... error handling code and such...
卸载可以,所以没问题。 安装,似乎也很好。 我输出msi安装日志。 并且在日志中,它表示已成功安装。
然后,我重新启动计算机,并在启动时Windows本身再次运行安装程序? 然后它抱怨该服务当然已经存在,并且一切都中断了...
Windows决定在启动时运行安装程序的原因可能是什么?
在此处需要注意的重要事项:如果我手动安装新版本,则该版本可以运行,并且Windows不会在启动时尝试安装它。 因此,这可能与msiexec有关? 一些许可的东西?
这可能是修复。 检查应用程序事件日志中是否有提及缺少组件的MsiInstaller条目。 如果Windows认为安装的产品已损坏,则会发生这种情况。
我怀疑您看到有关已安装服务的错误的原因是,您正在使用Installer类自定义操作来安装服务,并且它将在修复时再次运行,并为您提供有关已安装的错误。 如果右键单击MSI并选择修复,或者从Programs&Features进行修复,则会看到相同的“已安装”错误。
为防止这种情况,请在安装服务的安装自定义操作中添加“未安装”条件,然后它将仅在安装时运行,而不在修复时运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.