gpt4 book ai didi

windows - 使用 WiX 安装时启动外部服务

转载 作者:可可西里 更新时间:2023-11-01 09:27:27 28 4
gpt4 key购买 nike

我有一个服务(安装和工作没有问题),但需要“智能卡”服务在安装时运行才能正常运行。有没有办法配置 WiX 安装程序(通过 BURN Bootstrap 或主 MSI)以在安装时启动此服务(如果它未运行)?

我曾尝试使用服务控制元素,但我担心“删除”属性会导致智能卡服务在应用程序被卸载时被卸载!

我不清楚简单地删除此属性是否可以解决问题并且不会在卸载时删除服务。我只想在服务未运行时启动该服务,并在卸载时让它继续运行。

<Component Id="SmartCardServiceStarter" Directory="INSTALLFOLDER" 
Guid="A-GUID" KeyPath="yes">
<ServiceControl Id="SmartCardServiceStarter"
Start="install"
Stop="uninstall"
Remove="???"
Name="SCardSvr"
Wait="yes" />
<Condition><![CDATA[STARTSERVICEONINSTALL <> "false"]]></Condition>
</Component>

最佳答案

Optional Attributes:您可以省略Remove attribute,也可以将服务设置为停止并仅在安装时启动,即使您卸载了服务也会继续运行(这可能很好,因为您不知道其他应用程序是否依赖于该服务 - 您可以花哨并检测您最初是否必须启动该服务,但是这可能不是必需的):

<Component Id="SmartCardServiceStarter" Directory="INSTALLFOLDER" Guid="PUT-GUID-HERE" KeyPath="yes">
<ServiceControl Id="SmartCardServiceStarter"
Start="install"
Stop="install"
Name="SCardSvr"
Wait="yes" />
<!-- <Condition><![CDATA[STARTSERVICEONINSTALL <> "false"]]></Condition> -->
</Component>

ServiceControl Table :您可以在 ServiceControl element 中看到不同属性组合的结果。 (WiX 源)通过使用 Orca or an equivalent tool 查看编译的 MSI (在底部,更喜欢 Orca 而不是 SuperOrca,我看到后者意外地持续变化)并检查 ServiceControl Table (完成微星)。更改将显示在 “事件”列 中。根据 MSI SDK 文档匹配位标志值。

内置系统服务:鉴于这是一项系统服务,我想您可以将其设置为仅启动并保持打开状态,而不是在以下位置添加任何停止全部,但您可能需要在主要升级期间停止它以替换您自己的文件?我不知道情节。请彻底测试 - 并为这样的东西使用虚拟。很明显,我知道。主要升级方案可能会指示您希望停止安装、获取更新并防止锁定要替换的文件。

条件:您应该能够使用该条件来控制是否要运行服务操作。实际上,条件控制是否安装托管这些服务操作的组件,从而确定服务操作是否会运行(以及)。

关于windows - 使用 WiX 安装时启动外部服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55396478/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com