Wix安装程序在升级过程中出错安装程序必须更新系统运行时无法更新的文件或服务
我在卸载产品或卸载阶段(当产品服务运行时)的主要更新时遇到警告消息: 安装程序必须更新系统运行时无法更新的文件或服务。如果选择“继续”,则需要重新启动才能完成安装 故事从这里开始Wix安装程序在升级过程中出错安装程序必须更新系统运行时无法更新的文件或服务,wix,installation,upgrade,Wix,Installation,Upgrade,我在卸载产品或卸载阶段(当产品服务运行时)的主要更新时遇到警告消息: 安装程序必须更新系统运行时无法更新的文件或服务。如果选择“继续”,则需要重新启动才能完成安装 故事从这里开始 <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeErrorMessage)" /> <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeErrorMessage)"
<MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeErrorMessage)" />
<MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeErrorMessage)"
AllowDowngrades="no"
AllowSameVersionUpgrades="yes"
RemoveFeatures="ALL"
Schedule="afterInstallInitialize"/>
我已经开发了windows服务
,并使用Wix
创建了安装程序
[msi],然后分发给用户。它正在按预期工作
现在,是时候交付带有服务增强功能的新构建了。因此,我创建了一个新的msi
。我希望新的msi
的执行将升级现有的应用程序
但我得到了下面的错误
安装程序必须更新系统运行时无法更新的文件或服务
为了支持MSI升级,我做了以下更改
产品部分的现有代码
<?define UpgradeCode = "{3D197FE4-86DF-31FD-A0CD-21B5D3B97ABC}" ?>
<Product Id="$(var.ProductCode)"
Name="!(loc.ProductName_$(var.Platform)) $(var.ProductVersion)"
Language="!(loc.Language)"
Version="$(var.BuildVersion)"
Manufacturer="!(loc.Company)"
UpgradeCode="$(var.UpgradeCode)">
请注意,升级代码
未从旧版本更改为新版本
升级的现有代码
<MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeErrorMessage)" />
<MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeErrorMessage)"
AllowDowngrades="no"
AllowSameVersionUpgrades="yes"
RemoveFeatures="ALL"
Schedule="afterInstallInitialize"/>
我有以下代码在出现故障时重新启动服务。你认为这会引起问题吗
<util:ServiceConfig xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
FirstFailureActionType="restart"
SecondFailureActionType="restart"
ThirdFailureActionType="restart" />
问题根本原因
<MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeErrorMessage)" />
<MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeErrorMessage)"
AllowDowngrades="no"
AllowSameVersionUpgrades="yes"
RemoveFeatures="ALL"
Schedule="afterInstallInitialize"/>
我发现旧版本在升级过程中没有被删除。因此在此处创建了一个新问题问题已解决。罪魁祸首不符合规定
<util:ServiceConfig xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
FirstFailureActionType="restart"
SecondFailureActionType="restart"
ThirdFailureActionType="restart" />
感谢那些认为有必要重新启动restartservicedelayinsectonds
的人。在ServiceConfig
实用程序开发过程中的伟大思考解决了这个问题。罪魁祸首不符合规定
<util:ServiceConfig xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
FirstFailureActionType="restart"
SecondFailureActionType="restart"
ThirdFailureActionType="restart" />
感谢那些认为有必要重新启动restartservicedelayinsectonds
的人。在ServiceConfig
实用程序开发过程中,您有过很棒的想法吗?安装时正在使用哪些文件?如果您在尝试覆盖之前未停止服务,则服务通常会导致此错误,但看起来您已正确停止了服务。从服务控制小程序手动停止服务时,需要多长时间才能停止服务?您是否有其他二进制文件或安装的任何其他文件可能被锁定?当我手动尝试时,服务需要4-5秒才能停止。我已经上传了我的安装顺序的截图。没有其他文件被锁定。只有一个与服务相关的EXE被锁定。您是否在安装时设置了重新安装模式=“amus”
?您是否包括任何合并模块或运行时?也许可以快速检查一下:-您是否降级了文件?不,我没有设置REINSTALLMODE=“amus”。我没有包括任何合并模块。我在控制面板中看到,在升级过程中,已经有旧版本的“服务”未卸载。我认为这导致服务无法删除。我们如何确保升级时删除旧版本?我卸载了旧版本,然后在没有任何提示的情况下卸载了新版本。您有吗?安装时正在使用哪些文件?如果您在尝试覆盖之前未停止服务,则服务通常会导致此错误,但看起来您已正确停止了服务。从服务控制小程序手动停止服务时,需要多长时间才能停止服务?您是否有其他二进制文件或安装的任何其他文件可能被锁定?当我手动尝试时,服务需要4-5秒才能停止。我已经上传了我的安装顺序的截图。没有其他文件被锁定。只有一个与服务相关的EXE被锁定。您是否在安装时设置了重新安装模式=“amus”
?您是否包括任何合并模块或运行时?也许可以快速检查一下:-您是否降级了文件?不,我没有设置REINSTALLMODE=“amus”。我没有包括任何合并模块。我在控制面板中看到,在升级过程中,已经有旧版本的“服务”未卸载。我认为这导致服务无法删除。我们如何确保升级时删除旧版本?我卸载了旧版本,然后在没有任何提示的情况下卸载了新版本。这是否表示您的服务没有正常关闭?有人会认为这需要关闭,这样服务管理器就不会认为应该重新启动服务了?我不确定。我的意思是:可能服务在关闭时报告了一个错误,这就是为什么服务管理器尝试重新启动它?因为wix在升级期间尝试关闭,服务管理器认为这是一个故障,因此它尝试重新启动。我如何与服务经理沟通这是一次计划的关机而不是崩溃。是的,我想知道启动的关机是否会设置标志并返回有效的退出代码,以通知服务经理计划关机。我不确定这是怎么回事,可能以后再看。我曾经有过这样一个服务——在UAT期间它有间歇性崩溃,我们使用了重启功能——我仍然设法让MSI可靠地部署它,正如我所记得的。这是否表明您的服务没有正常关闭?有人会认为这需要关闭,这样服务管理器就不会认为应该重新启动服务了?我不确定。我的意思是:可能服务在关闭时报告了一个错误,这就是为什么服务管理器尝试重新启动它?因为wix在升级期间尝试关闭,服务管理器认为这是一个故障,因此它尝试重新启动。我如何与服务经理沟通这是一次计划的关机而不是崩溃。是的,我想知道启动的关机是否会设置标志并返回有效的退出代码,以通知服务经理计划关机。我不确定这是怎么回事,可能以后再看。我曾经有过这样的服务——在UAT期间它会间歇性崩溃,我们使用了重启功能——我仍然能够让MSI可靠地部署它。