设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 服务器 > 系统 > 正文

Wix:升级时有时会卸载Windows服务(2)

发布时间:2021-01-06 11:47 所属栏目:52 来源:网络整理
导读:晚REP:以上(空白GUID)似乎不是你想要的.您只是希望组件在主要升级时不卸载,在这种情况下,您通常会在InstallExecuteSequence中移动RemoveExistingProducts – 这需要您遵循所有组件规则到字母.这是非常复杂的运行时

晚REP:以上(空白GUID)似乎不是你想要的.您只是希望组件在主要升级时不卸载,在这种情况下,您通常会在InstallExecuteSequence中移动RemoveExistingProducts – 这需要您遵循所有组件规则到字母.这是非常复杂的运行时行为,但是一个简单的概念.基本上,您的新版本将作为补丁安装 – 覆盖文件而不先卸载它们 – 允许保留您的服务凭据,因为从不卸载托管服务的组件.

早期REP:只是为了记录,进行主要升级的常用方法是在InstallExecuteSequence的早期安排RemoveExistingProducts,这意味着卸载所有文件,然后重新安装.使用此方法是因为它允许草率组件引用.它用于清除许可证密钥,服务凭证等用户数据…

永久组件:另一种方法是将托管组件设置为永久性.然后它将永远不会在主要升级期间卸载(即使您使用早期REP),但也不会在常规卸载期间卸载,因此在系统上搁置有问题的文件(除非您添加自己的自定义清理功能 – 这可能非常容易出错).

自定义操作备份机制:其他人依靠自己的自定义操作(example)来备份在升级期间被清除的数据,然后在升级完成后重新应用它们.在我看来,这是一种非常容易出错的方法.

仅限服务MSI:您还可以将服务安装放在其自己的MSI中,以使其更新更易于控制 – 或者在主要设置无法满足组件规则的情况下.这也有点复杂,但比我视图中的自定义操作要好.

次要升级:如果您可以使用次要升级来安装升级,则可以避免此服务凭据问题.我将链接到另一个描述这个问题的答案:Restarting windows service during WIX upgrade.

(托管)服务帐户:您可以使用没有(about service accounts)凭据的常规服务帐户来运行服务 – 例如LocalService,LocalSystem或NetworkService(显然这对我来说是不可能的).或managed service accounts,group managed service accounts或虚拟账户step-by-step info的新概念(我不太了解的概念).

其他方法:毫无疑问,其他方法也是如此.我想您可以将服务配置保留在MSI之外并通过脚本应用它.我不推荐它.我知道有些人在使用服务和计划任务之间切换,具体取决于the nature of the task at hand(如果是task that runs only once in a while,则基本上切换到计划任务).虽然有风险,但我认为您可以将服务配置推迟到用户在安装后启动的高级EXE(显然用户必须是管理员),然后可以设置具有一定交互性的配置(错误和状态消息直接到用户 – 而不仅仅是隐藏在日志中)有时可以帮助人们前进.虽然不是我推荐的方法 – 提升动作是设置的目的.我喜欢在应用程序中执行的任何非提升配置.

常见的真实MSI问题:我曾经写过一些在MSI的实际应用中看到的常见问题,这里是:How do I avoid common design flaws in my WiX / MSI deployment solution?这不是很好.我对此并不是很满意 – 它缺乏多种方式 – 但它确实存在,以防它可以提供帮助.在可用的时间内尽力而为.请把它当作它的原因:一个未完成的实际问题转储,在这里和那里有几个指针,你可以尝试解决这个问题.

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读