我已经开始使用我们的自动构建了相当奇怪的行为。我有一个非常简单的Windows服务.msi(内置在Visual Studio 2010中),它在我们的中央构建/ repo服务器上编译,上传到我们的开发服务器,然后从构建/ repo服务器远程安装(命令行)在开发服务器上通过ssh使用plink)。
直到最近,自动构建开始失败的时间很长。 msi的详细安装日志表明“已安装此产品的较新版本”。我远程进入开发服务器,检查了msi,并且没问题自己在服务器上手动安装它(通过命令行和GUI)。然后,我从“程序和功能”窗口中卸载了该服务,验证了文件和条目已被删除,再次尝试从构建服务器远程安装它,并再次得到完全相同的错误。该服务不会远程安装,因为它认为仍然安装了较新的服务(即使我已经卸载它),但我可以自己手动完成。
修改
添加一些日志文本。
Action start 15:47:16: AppSearch.
MSI (s) (B8:F0) [15:47:16:265]: Doing action: FindRelatedProducts
Action ended 15:47:16: AppSearch. Return value 1.
MSI (s) (B8:F0) [15:47:16:267]: Using cached product context: User non-assigned for product: BA4139E4B48F8264ABFF918A7B583A0B
MSI (s) (B8:F0) [15:47:16:267]: Using cached product context: User non-assigned for product: BA4139E4B48F8264ABFF918A7B583A0B
MSI (s) (B8:F0) [15:47:16:267]: Using cached product context: User non-assigned for product: BA4139E4B48F8264ABFF918A7B583A0B
MSI (s) (B8:F0) [15:47:16:267]: Using cached product context: User non-assigned for product: BA4139E4B48F8264ABFF918A7B583A0B
MSI (s) (B8:F0) [15:47:16:267]: Using cached product context: User non-assigned for product: BA4139E4B48F8264ABFF918A7B583A0B
MSI (s) (B8:F0) [15:47:16:267]: Using cached product context: User non-assigned for product: BA4139E4B48F8264ABFF918A7B583A0B
Action start 15:47:16: FindRelatedProducts.
MSI (s) (B8:F0) [15:47:16:267]: PROPERTY CHANGE: Adding NEWERPRODUCTFOUND property. Its value is '{4E9314AB-F84B-4628-BAFF-19A8B785A3B0}'.
MSI (s) (B8:F0) [15:47:16:268]: Doing action: ERRCA_CANCELNEWERVERSION
Action ended 15:47:16: FindRelatedProducts. Return value 1.
MSI (s) (B8:F0) [15:47:16:269]: Note: 1: 2235 2: 3: ExtendedType 4: SELECT `Action`,`Type`,`Source`,`Target`, NULL, `ExtendedType` FROM `CustomAction` WHERE `Action` = 'ERRCA_CANCELNEWERVERSION'
Action start 15:47:16: ERRCA_CANCELNEWERVERSION.
MSI (s) (B8:F0) [15:47:16:269]: Product: Product.Services -- Unable to install because a newer version of this product is already installed.
Unable to install because a newer version of this product is already installed.
Action ended 15:47:16: ERRCA_CANCELNEWERVERSION. Return value 3.
Action ended 15:47:16: INSTALL. Return value 3.
答案 0 :(得分:6)
我收到了与@Tom相同的错误:" - 已经安装了较新的版本"
我可以按照以下确切步骤进行修复: 1.运行MSI并启用详细日志记录
msiexec /i "{Path to msi}.msi" /L*V "c:\myLog.log"
2。打开从上面的命令生成的日志文件,并复制行
中显示的GUIDFindRelatedProducts: Found application: {FB0B54D2-9C47-4196-BF0E-B6EEBF754E22}
使用复制的GUID,运行以下命令
msiExec / x {FB0B54D2-9C47-4196-BF0E-B6EEBF754E22}
此时,旧服务已卸载,然后我继续使用MSI安装服务,没有任何问题。希望这可以帮助。
答案 1 :(得分:4)
MSI(B8:F0)[15:47:16:267]:物业变更:添加NEWERPRODUCTFOUND属性。它的值是'{4E9314AB-F84B-4628-BAFF-19A8B785A3B0}'。
听起来在某个地方的机器上安装了旧版本,即使它可能不会出现在程序和功能中。我会尝试以下方法来查看它是否解决了您的问题:
尝试通过命令行msiexec /x {4E9314AB-F84B-4628-BAFF-19A8B785A3B0}
在注册表中搜索产品代码{4E9314AB-F84B-4628-BAFF-19A8B785A3B0}
,以查看是否存在先前安装的残余内容。如果您找到该产品代码,可以尝试手动删除这些条目(由您自己承担风险)以查看是否能解决您的问题。
答案 2 :(得分:1)
另一个对我有用的解决方案是:
请记住,以前的安装将保留在Windows注册表中,您应该将其卸载。这是因为由于错误而导致不同VS设置具有相同的GUID(例如使用设置模板)
答案 3 :(得分:1)
如果在解决方案资源管理器中选择安装文件,然后按 F4 ,则将获得安装文件的属性。 将属性“ DetectNewerVersion” 设置为false并重新安装
好运