WiX MajorUpgrade的Windows服务,保留.config并避免重新启动
我正在努力使MajorUpgrade,ServiceControl,.config文件一起工作.
After my other question,我现在有一个相反的问题了.
之前,文件没有被覆盖,因为AssemblyFileVersions是静态的,所以我修正了. 1)即使现在的文件修改日期与文件创建日期不同,它被设置为KeyPath,即使使用Schedule =“afterInstallExecute”,我的KeyPath =’yes’.config文件仍被覆盖.我目前不得不覆盖.config文件,并在安装后重新启动服务. 2)即使我解决了这个问题,我仍然有一个避免重启的问题.如果我说Schedule =“afterInstallInitialize”,那么我相信.config文件一定会随着服务一起被删除.如果我说Schedule =“afterInstallExecute”,那么服务不会停止,安装后需要重启. (没错,对吗?)在安装之前手动停止服务让我避免重启.添加一个net stop自定义动作可以用来替换ServiceControl我猜,但获得所有条件正确似乎很复杂. 3)作为奖金,我希望在升级过程中根本不会删除该服务.我可以停止服务,更换二进制文件,并重新启动服务?这将避免重新输入升级的服务帐户凭据.但是,当然,它仍然需要安装在第一次安装和卸载功能删除. 这是它的肉(后来也捆绑在一起,以防某种方式): <MajorUpgrade DowngradeErrorMessage="A newer version is already installed." Schedule="afterInstallExecute" /> <ComponentGroup Id="ServiceCG"> <Component Id="Service" Guid='*' Win64='yes' Directory='INSTALLDIR'> <File Id='ServiceEXE' Source='$(var.root)Service.exe' /> <ServiceInstall Id="ServiceInstall" Name="MyService" DisplayName="My Server" Type="ownProcess" Start="auto" ErrorControl="normal" Description="My Server Service" Interactive="no" Account="[...]" Password="[...]" /> <ServiceControl Id="StopService" Name="MyService" Start="install" Stop="uninstall" Wait="yes" Remove="both" /> <util:User Id="UpdateServiceAccountLogonAsService" UpdateIfExists="yes" CreateUser="no" Name="[SERVICEACCOUNTFULL]" LogonAsService="yes"/> </Component> <Component Id="ServiceConfig" Guid='*' Win64='yes' Directory='INSTALLDIR'> <File Id='FileServiceConfig' KeyPath='yes' Source='$(var.root)Service.exe.config' /> </Component> </ComponentGroup> 相关但未答复: > Prevent service removal/install during WiX major upgrade – service not stopping WiX版本3.8.1128.0
编辑:似乎这个同样的问题的解释,至少在同一个话题上,可能会更容易理解:
Msiexec: automatic rollback to previous version on installation failure
你在这里碰到几个核心的MSI使用问题. >文件版本控制:在安装过程中,默认文件覆盖模式(由REINSTALLMODE property定义)将不会替换默认版本相同的文件.这可以通过设置REINSTALLMODE =“emus”来更改.这将替换版本文件的版本相同的文件.未修改的文件将被保留,如果修改和创建日期不同. 组件引用:指的是分配给MSI组件的GUID以及它们必须匹配一个,并且在所有升级时始终只有一个(绝对)路径.看到更好的讨论,这里有几个例子:Change my component GUID in wix? 我没有提到将安装服务的MSI组件设置为永久性的选项,以防止在卸载时删除它们,原因很简单,这完全不是很好的做法.然后文件和注册将保持最终卸载,您需要自定义操作来清理.非常糟糕的做法,必然会造成大量额外的工作和悬挂组件引用的问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-server-2003 – 如何识别Windows 2003服务器的用户
- 如何在Windows上使用JPL(双向Java / Prolog接口)?
- microsoft-dynamics – Dynamics Nav(Navision)webservice
- dll – regsvr32不会在注册表中创建任何条目
- 将DLL注入的代码从Delphi 7转换为Delphi XE2
- 如何在Windows上使用ImageMagick命令行?
- windows-server-2008-r2 – 处理器关联掩码(IIS)的公式
- 我们如何远程管理我们的Windows 7笔记本电脑“车队”?
- windows – 当一个Excel文件被锁定在网络共享上时,它如何知
- 从命令行在Windows上查找CPU时间
- windows-server-2008 – Windows 2008中的远程桌
- Windows10系统运行bat文件 一闪而过 解决
- windows-server-2008-r2 – 使用Windows更新更新
- IIS管理器 – 无法使用某些用户帐户进行连接
- Microsoft Visio professional 2013、Project pr
- .net – 什么时候需要Windows SDK for MSBuild?
- windows ping命令
- windows7+docker搭建nginx和php-fpm环境(官方镜
- 如何使用Windows批处理脚本将空ASCII码(nul)写入
- windows – Chef – Powershell输出