2


我正在使用 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 以注意组件而不是文件属性是否指向发布或调试的目录。并相应地更改名称。

你能帮我解决这个 xsl 吗?

4

1 回答 1

2

像这样的东西应该工作:

<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"
    />

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

于 2013-06-14T00:18:01.423 回答