如何创建 heat.exe 收集的文件的快捷方式?

2024-04-28

使用 WiX Toolset 3.10,并尝试创建已使用 WiX Toolset 收获的某些文件的快捷方式heat.exe效用,如:

"%WIX%\bin\heat.exe" dir SourceDir -nologo -platform x64 ^
-ke -gg -g1 -suid -srd -scom -sreg -dr INSTALLDIR ^
-cg ProjFiles -out ProjFiles.wxs

我的问题:

  1. 我现在知道我应该使用 XSLT 文件来转换项目文件.wxs (the -t选项中heat.exe)但是关于如何编写它的 WiX 特定文档是不存在的:有人可以提供一个添加了Shortcut在桌面上Id“Prog.exe”?

  2. 因为-g1标志,共享相同基本名称的文件(例如“SourceDir\dirA\file.txt”和“SourceDir\dirZ\file.txt”)将共享相同的Id(即“文件.txt”);为什么这不是冲突,看看 .MSI 是如何构建并运行正常的?


WiX 特定的信息已被记录,但学习足够的 XSL 是一个挑战。这应该可以帮助您开始。你可能必须适应你的名字、热论等等。

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

  <xsl:output
    encoding="utf-8"
    method="xml"
    version="1.0"
    indent="yes"    
    />

  <xsl:template match='wix:Component[contains(wix:File/@Source, "SourceDir\Prog.exe")]'> 
    <!-- assumes there is only one Prog.exe -->
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
      <xsl:comment> added shortcut under Component with File that has Source with Prog.exe </xsl:comment>
      <!-- Elsewhere, have an Icon element like: <Icon Id="Prog.exe" SourceFile="$(var.BUILDCACHE)Bin/Prog.exe" />  -->
      <Shortcut 
        Id="ProgExeShortcut" 
        Name="Prog Application" 
        Icon="Prog.exe" 
        Directory="ProgramMenuFolder_ProgVendor" 
        Advertise="yes">
        <xsl:attribute name="WorkingDirectory"><xsl:value-of select="@Directory"/></xsl:attribute>
      </Shortcut>
      <RemoveFolder 
        Id="ProgExeShortcut_ProgramMenuFolder_ProgVendor"  
        Directory="ProgramMenuFolder_ProgVendor" 
        On="uninstall" />
    </xsl:copy>
  </xsl:template>

    <!-- identity template -->
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match='/'>
    <xsl:comment>*** DO NOT EDIT: Generated by heat.exe; transformed by ProgComponentGroup.xsl</xsl:comment>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:template>

</xsl:stylesheet>

更具体和更早的模板先于更一般或更晚的模板匹配。因此,基础是按原样复制每个元素、属性、文本和注释,除了您想要更改的元素、属性、文本和注释。对于您想要更改的内容,您可以重建所有内容 - 在本例中,通过复制 Component 元素拥有的所有内容,然后添加 Shortcut 和 RemoveFolder 元素。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建 heat.exe 收集的文件的快捷方式? 的相关文章

  • 使用 SAXON for Java 将存储在字符串中的 XML 片段解析为 XSLT 中的节点

    在我的 XSLT 中 我有一个包含字符串的变量 该字符串包含 XML 片段 这是以编程方式输入的 但它相当于
  • 使用 XSLT 的 XML 到 XML,根据值省略特定元素

    我正在尝试生成一个与初始文件几乎相同的 xml 文件 但我需要我的 xsl 表将其转换为仅包含 为 公寓 或 单元 且具有值的文件 中超过 1 个我完全迷失了 任何帮助将不胜感激 我最初的 xml 表如下
  • 使用 XSLT 转换 XML 并保留 Unicode 字符

    我的 XSLT 转换已经成功了几个月 直到我遇到带有 Unicode 字符 很可能是表情符号 的 XML 文件 我需要保留 Unicode 但 XSLT 正在将其转换为 HTML 实体 我认为将编码设置为 UTF 8 可以解决我的问题 但我
  • 如何在 wix .wxs 文件中指定

    我想在 Wix 安装程序的 wix wxs 文件中将属性指定为受限属性
  • 使用版本控制时处理多台计算机上的 web.config 差异

    我确信每个人都必须处理这些情况 我们检查我们的源代码控制解决方案 每台开发机器都有自己的资源用于调试 构建和测试 最常见的是 网络服务器 IIS 数据库 SQL Web服务器很容易处理 每个开发机器都会有自己的proj user文件来指定不
  • Xalan XSLT 多个输出文件?

    我只是想知道 是否可以使用 Xalan 将单个输入 XML 文件的处理输出到多个其他文件 我不一定必须这样做 我知道我可以使用其他工具来做到这一点 如 Saxon 和 或我可以处理不同的文件以获得不同的输出 我只是想知道我必须使用哪些选项来
  • 在 lxml 中定义默认命名空间(无前缀)

    当使用 lxml 渲染 XHTML 时 一切都很好 除非您碰巧使用 Firefox 它似乎无法处理以名称空间为前缀的 XHTML 元素和 javascript 虽然 Opera 能够很好地执行 javascript 这适用于 jQuery
  • WiX - 根据环境将编译后的 web.config 复制到网站根目录

    作为 WiX 安装的一部分 我将所有转换 编译的 web config 文件复制到安装目录 编译后的 web config 的名称格式为 web ENV config 在我的安装 UI 中 我创建了一个自定义对话框 在其中解析 ENV 并填
  • 带有 xml 样式表的 XslTransform

    好像大家都说如果使用XslTransform 会先调用Load加载样式表 然后调用Transform进行转换 但是我有以下 XML 文件 我是否应该先加载xml 找到样式表节点 然后调用Load来加载样式表 或者还有其他方法吗 是处理指令
  • 使用 元素通过 Wix 运行 SQL 脚本文件

    我是 Wix 安装程序的新手 我有一个要求 必须提供 SQL Server 登录凭据并从特定路径运行脚本 我不明白出了什么问题 项目已成功构建并创建了 msi 运行后我收到以下错误 错误26204 错误 2147217900 无法执行SQL
  • XSLT 2.0 中的简洁正则表达式提取功能

    我可以从 XSLT 2 0 文档中看到最好的结果 或者至少从我在这些地方读到的内容中看到 Saxon 分析字符串函数 http www saxonica com html documentation xsl elements analyze
  • XPath 节点到字符串

    如何选择以下节点的字符串内容 span class url word b class test b span span class url word b class test2 b more words span 我尝试过一些事情 span
  • 使用 XSLT(即 XML Transformer)时防止 DTD 下载

    我必须在 Java 中处理具有 DTD 和 XSLT 的 XML 文件 DTD 确实是必要的 因为它包含我使用的实体的定义 旁白 是的 将实体用于可以使用 unicode 的东西是一个坏主意 当我运行转换时 它每次都会从外部源下载 DTD
  • Firefox 不再解释 XSLT-1.0

    我使用 XSLT 将大量数据保存在 XML 文件中 以便在 Firefox 中正确显示内容 但从今天开始 Firefox 不再解释 XSLT 并显示白色页面或块中的数据 我当前的 Firefox 版本是 68 0 64 位 新版本中的 XS
  • XSLT 分组/合并子项(使用密钥)

    我试图了解如何使用我已经编写的代码推导出解决方案 为了简化起见 我将首先解释我想要做什么以及到目前为止我得到了什么 假设我在 XSLT 中有一个 XML 变量 其中包含几个具有相同标题属性的节点 Using Dimitre Novatche
  • XPath - 测试是否至少有一个节点具有给定值

    给定以下 XML
  • 用于配置编辑的 wix 自定义对话框

    你好 我正在尝试使用 wix v3 为我的应用程序设置 msi 我对这项任务有疑问 我需要一个用户输入 该输入将存储在我的应用程序的配置文件中 例如 我需要一个用于 sql 连接字符串的对话框 并且用户输入将写入应用程序配置文件中 我尝试用
  • 如何在 WIX 中引用用户的主目录

    我正在为 SDK 创建一个安装程序 其中包括由最终用户编译的源代码 我希望我的 Wix 安装程序默认将其放入用户的主目录中 但我找不到要使用的正确属性名称 您还可以参考HOMEPATH环境变量与 HOMEPATH 有关用于属性的语法的更多详
  • 如何使用 XSLT 从平面 XML 列表构建树?

    我使用极简 MVC 框架 其中PHP控制器手上的DOM模型 to the XSLT 视图 c f okapi http okapi liip ch 为了构建导航树 我在 MYSQL 中使用了嵌套集 这样 我最终得到一个如下所示的模型 XML
  • 将构建参数传递给 .wxs 文件以动态构建 wix 安装程序

    我是一名学生开发人员 我已经为我现在工作的公司构建了几个安装程序 所以我对WIX还是比较熟悉的 我们最近决定拥有一个构建服务器来自动构建我们的解决方案 它构建调试和发布以及混淆 和非混淆 项目 你真的不需要理解这些 您需要了解的是 我有相同

随机推荐

  • 错误:样式父级的资源类型“attr”无效

    将我的 Android 项目升级到 Studio 3 0 1 和 Gradle 3 0 后 我在构建过程中遇到了一个问题 MAFLogonUI 3 15 6 aar 46f903e9d58266c453b893b9caa03deb res
  • 如何转换该对象数组?

    我有个问题 我有该对象数组 const iHaveThis question What s your name answer dda form filled key 15 question What s your e mail answer
  • 查找每个 pandas 数据帧行中前 n 个最高值列的名称

    我有以下数据框 id p1 p2 p3 p4 1 0 9 1 4 2 0 2 3 4 3 1 3 10 7 4 1 5 3 1 5 2 3 7 10 我需要以一种方式重塑数据框 对于每个 id 来说 它将具有具有最高值的前 3 列 结果会是
  • 有条件跳过 TestNG 测试

    我对 TestNG 注释没有太多经验 但是我正在尝试使用 TestNG 框架和 POM 设计模式为零售网站构建测试套件 我计划使用数据驱动的方法 我的计划是通过 Excel 驱动我的测试场景 而不是使用 testng xml 例如 我将拥有
  • 本地计算机的 Onenote API

    这是我在 Stackoverflow 上的第一篇文章 我正在寻找有关 OneNote API 的指导 我期待开发一个主要用于 自己使用 的解决方案 在我的本地计算机上创建 打开和关闭 OneNote 部分 不使用云等 请指导是否可以 我希望
  • 如何获取真实的屏幕高度和宽度?

    DisplayMetrics metrics new DisplayMetrics this getWindowManager getDefaultDisplay getMetrics metrics screenWidth metrics
  • 如何以 OO 风格打开管道?

    我用新风格重写了旧代码 如下所示 old style open FD file new style fh IO File gt new file r 文件没问题 但我不知道如何打开管道 read from pipes open PIPE s
  • dotnet 技术中的类库和安全性

    假设我已经开发了类库 并且我希望我只能在我的项目中使用这个库 但是如果有人尝试复制 dll 文件并想在他的项目中使用它 那么他将无法这样做 所以我只是想知道如何在 dll 文件中嵌入这种类型的安全性 请告诉我所有方法 谢谢 您可以在程序集中
  • Hibernate NoCacheRegionFactoryAvailableException

    我遇到了一个奇怪的 Hibernate 异常 我无法解释 它告诉我我正在使用二级缓存 但没有在哪里hibernate cfg xml我是否指定二级缓存 这是例外情况 org hibernate cache NoCacheRegionFact
  • Redux Toolkit RTK Query 发送查询参数

    如何使用 Redux Toolkit RTK 查询将查询参数传递到 api import createApi fetchBaseQuery from reduxjs toolkit query react const baseUrl xxx
  • 仅对 Visual Studio 团队服务强制执行拉取请求

    有一种方法可以强制某些人只能通过拉取请求为一个分支做出贡献 我希望他们能够接受拉取请求 但不能直接推送更改 这将很有用 因为我们有一些分支策略 对于接受拉取请求的人来说 例如构建必须通过 问题是 如果我们允许某人接受拉取请求 我们将允许他们
  • Enterprise Java Bean 到底是什么?

    Tomcat FAQ 上说 Tomcat 不是 EJB 服务器 Tomcat 不是完整的 J2EE 服务器 但如果我 使用 Spring 提供应用程序上下文 使用 JPA 注释我的实体 注释 并使用 Hibernate 作为 JPA 提供商
  • 在 SSIS 中插入新记录之前如何清空目标表?

    我使用 SSIS 生成和转换新数据 以便以后在新系统中使用 每次运行 SSIS 包时我都会遇到问题 它不断将新记录插入到我的目标表中 如何先清空目标表 OLE DB Destination 然后插入新生成的记录 目前此问题的解决方法是执行d
  • 访问Firebase规则中的电子邮件地址[重复]

    这个问题在这里已经有答案了 我正在使用 Firebase 3 编写 firebase 规则时 auth 对象仅包含 uid 和提供程序 有什么方法可以增强此功能以提供电子邮件地址吗 我试图解决的问题是 我正在处理的网站的所有者希望根据用户的
  • HTML 语义:将链接(锚元素)放在标题中是个好主意吗?

    以这种方式建立新闻列表是错误的吗 h1 a href article 1 html That happened a h1 div class short Just like planned div 我应该更喜欢这个吗 h1 That hap
  • 现代 CNN(卷积神经网络)作为 DetectNet 旋转不变吗?

    众所周知 用于目标检测的 nVidia DetectNet CNN 卷积神经网络 基于 Yolo DenseBox 的方法 https devblogs nvidia com parallelforall deep learning obj
  • MSTest 命令行设置

    我们需要能够将服务器地址传递到 MSTest 命令行中 以便由 TeamCity 持续集成 CI 软件调用我们的测试套件 之前我们在 C 单元测试中创建了 if 常量 这在 MSBuild 中进行了更改 有没有更好的办法 这种方式看起来很h
  • Azure WebApp - 无法自动检测应用程序的运行时堆栈

    我正在尝试创建只有静态 HTML 的 Web 应用程序 我正在关注这个链接https learn microsoft com en us azure app service app service web get started html
  • Flutter firebase_message 插件设置错误

    我想在我的 Flutter 应用程序中尝试云消息传递 但我总是遇到错误 而且我还没有找到解决方案 我按照此处所述的步骤进行操作 firebase 消息传递 https github com FirebaseExtended flutterf
  • 如何创建 heat.exe 收集的文件的快捷方式?

    使用 WiX Toolset 3 10 并尝试创建已使用 WiX Toolset 收获的某些文件的快捷方式heat exe效用 如 WIX bin heat exe dir SourceDir nologo platform x64 ke