gpt4 book ai didi

xslt - WiX 3.5 从 Heat 安装服务,需要自定义操作?

转载 作者:行者123 更新时间:2023-12-04 13:43:24 25 4
gpt4 key购买 nike

我有一个带有主 .wxs 文件和一个空 .wxs 文件的 VS2010 WiX 项目。空的 .wxs 在项目的预构建事件中被覆盖,使用 heat.exe 从控制台 exe 中获取所有内容。该 exe 具有 InstallUtil Hook ,并且在 VS 安装项目的日子里,该 exe 被安装为服务。

我尝试使用 <ServiceInstall>位在 WiX 中,但是当我指定可执行文件和其他元素来安装服务时,light 提示主 .wxs 中的 .exe 和热生成的 .wxs 中的 .exe 之间存在冲突。

我认为自定义操作不是进行服务安装的最佳方式,因此我正在尝试 XSL 转换以获取我不想要的文件(它是 100 个文件中的单个文件)。

我的 XSL 一定有问题,因为它没有匹配/过滤。这里是:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl"
xmlns:Wix="http://schemas.microsoft.com/wix/2006/wi">

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>

<xsl:template match="
Component[File/@Source='$(var.bindir)\servicehost.exe']"/
</xsl:stylesheet>

我需要撕掉的 .wxs 部分如下所示:
    ....
<Component Id="cmpD64BE1790BFAF0F05DA37558F5D72572" Guid="{6C70DDC8-349B-4B66-A415-DE08E302C2A8}">
<File Id="fil24DFDFCA765C9A8BBB8854CE66AED0E8" KeyPath="yes" Source="$(var.bindir)\servicehost.exe" />
</Component>
....
<ComponentRef Id="cmpD64BE1790BFAF0F05DA37558F5D72572" />
....

完成这项工作的最佳方法是什么?

谢谢。

最佳答案

Wix XML 元素位于命名空间中,因此您需要在 match 中指定命名空间值(value)。

我通过使用 XSL 添加 ServiceInstall 解决了同样的问题和 ServiceControl heat 生成的片段的元素:

<!-- Add the service install/control entries to mybinary.exe -->
<xsl:template match="wix:Component[contains(wix:File/@Source,'mybinary.exe')]">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
<wix:ServiceInstall Id="MyServiceInstall" DisplayName="[SERVICE_NAME]" Description="[SERVICE_DESC]" Name="MyService" Arguments="" ErrorControl="normal" Start="auto" Type="ownProcess" Vital="yes" Account="LocalSystem" />
<wix:ServiceControl Id="MyServiceControl" Name="MyService" Start="install" Stop="uninstall" Remove="uninstall" />
</xsl:copy>
</xsl:template>

关于xslt - WiX 3.5 从 Heat 安装服务,需要自定义操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7020694/

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