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

时间:2016-12-14 10:17:23

标签: xslt wix heat

使用WiX Toolset 3.10,尝试创建使用 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文件来转换 ProjFiles.wxs heat.exe -t选项>)但是关于如何编写它的WiX特定文档是不存在的:有人可以提供一个示例,在桌面上为Shortcut“Prog.exe”添加Id吗?

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

2 个答案:

答案 0 :(得分:4)

记录了特定于WiX的信息,但学习足够的XSL是一个挑战。这应该让你开始。你可能必须适应你的名字,热量论据等。

STDOUT

更具体和更早的模板在更普遍或更晚的模板之前匹配。因此,基础是复制每个元素,属性,文本和注释,除了您想要更改的元素,属性,文本和注释。对于您想要更改的内容,您可以重建所有内容 - 在这种情况下,通过复制Component元素具有的所有内容,然后添加Shortcut和RemoveFolder元素。

答案 1 :(得分:0)

这应该让它在桌面上创建一个快捷方式。您将收到ICE警告,因为该快捷方式与Prog.exe文件的组件不在同一组件中,但可以安全地忽略(如果您将警告视为错误,请添加ICE到Suppress特定的ICE验证列表。(wixproj中的wixproj属性工具设置。在wixproj中的<SuppressIces>标签。或者,-sice:cmd行中的ICE ##)

在目录定义中定义DesktopFolder

<Directory Id="TARGETDIR" Name="SourceDir">
    ...
    <Directory Id="DesktopFolder"/>
    ...
</Directory>

然后有一个组件

<Component Id="ProgDesktopShortcut">
    <Shortcut
        Id="ProgDesktopShortcut"
        Directory="DesktopFolder"
        Target="[#Prog.exe]" 
        Name="Prog Shortcut"
        WorkingDirectory="INSTALLDIR" >
    </Shortcut>
    <RegistryValue  
        Id="ProgDesktopRegShortcut" 
        Root="HKCU" 
        Key="SOFTWARE\Prog\" 
        Name="ProgInstall" 
        Type="integer" 
        Value="1" 
        KeyPath="yes"/>    
</Component>