wix 快捷方式 xsl 文件

Posted

技术标签:

【中文标题】wix 快捷方式 xsl 文件【英文标题】:wix shortcut xsl file 【发布时间】:2013-06-13 22:10:33 【问题描述】:

我正在使用 heat.exe 为我的调试和发布目录生成 .wxs 文件。 通常我使用这个 .xsl 文件来生成我的快捷方式。

但是在我的应用程序中,我需要有一个发布版本的快捷方式 另一个用于调试版本。 (因为这是作为 SDK 用于开发的)

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:wix="http://schemas.microsoft.com/wix/2006/wi">

  <xsl:output omit-xml-declaration="yes" indent="yes" encoding="utf-8"/>
  <xsl:strip-space  elements="*"/>


  <xsl:template match="@*|*">
    <xsl:copy>
      <xsl:apply-templates select="@*" />
      <xsl:apply-templates select="*" />
    </xsl:copy>
  </xsl:template>

  <xsl:output method="xml" indent="yes" />

  <xsl:template match="wix:File[@Id='APP.exe']">
    <xsl:copy-of select="."/>
    <Shortcut Id="desktopAPP"
      Advertise="yes"
      Directory="DesktopFolder"
      Name="APP"
      Icon="APP_GUI.ico"
      WorkingDirectory="BIN"
      xmlns="http://schemas.microsoft.com/wix/2006/wi" />

    <Shortcut Id="startmenuAPP"
      Advertise="yes"
      Directory="ProgramMenuFolder"
      Name="APP"
      Icon="APP_GUI.ico"
      WorkingDirectory="BIN"
      xmlns="http://schemas.microsoft.com/wix/2006/wi" />
  </xsl:template>

</xsl:stylesheet>

所以基本上这就是我得到的:

   <Component Id="APP.exe" Directory="Debug.amd64" Guid="*">
            <File Id="APP.exe" KeyPath="yes" Source="$(var.BinSourcePath)\Debug.amd64\APP.exe" />
            <Shortcut Id="desktopAPP" Advertise="yes" Directory="DesktopFolder" Name="APP" Icon="APP_GUI.ico" WorkingDirectory="BIN" xmlns:wix="http://schemas.microsoft.com/wix/2006/wi" />
            <Shortcut Id="startmenuAPP" Advertise="yes" Directory="ProgramMenuFolder" Name="APP" Icon="APP_GUI.ico" WorkingDirectory="BIN" xmlns:wix="http://schemas.microsoft.com/wix/2006/wi" />
        </Component>

我想将我的 xsl 文件更改为创建 APP.debug 快捷方式和 APP.Release 快捷方式 我可以看到我需要更改 xsl 以注意是否 Component 而不是 File 属性指向 Release 或 Debug 的目录。 并相应地更改名称。

你能帮我解决这个 xsl 吗?

【问题讨论】:

【参考方案1】:

这样的事情应该可以工作:

<xsl:template match="wix:File[@Id='APP.exe' and contains(../@Directory,'Debug')]">
    <xsl:copy-of select="."/>
    <wix:Shortcut Id="startmenuAPP"
        Advertise="yes"
        Directory="ProgramMenuFolder"
        Name="APP (Debug)"
        Icon="APP_GUI.ico"
        WorkingDirectory="BIN"
    />

为您想要的每个快捷方式使用类似的模板。我还没有测试过,可能已经切换了你想要的 Debug 快捷方式。

【讨论】:

以上是关于wix 快捷方式 xsl 文件的主要内容,如果未能解决你的问题,请参考以下文章

Wix 为所有用户/每台机器创建非广告快捷方式

Wix卸载快捷方式无法正常工作

Wix 无法创建快捷方式

使用 WiX 创建桌面快捷方式

如何在 WIX 中为所有用户创建桌面快捷方式

在 WIX 中运行时为快捷方式动态分配名称