我正在尝试在Visual Studio中使用的wix 3.8中基于exe文件向快捷方式添加图标:
<Component Id="my.exe" Guid="MY-GUID">
<File Id="my.exe" Source="$(var.Project.TargetPath)" KeyPath="yes">
<Shortcut Id="MyShortcut" Directory="ApplicationMenuFolder" Name="My App" WorkingDirectory="ApplicationRootFolder" Icon="my.exe" IconIndex="0" Advertise="yes">
<Icon Id="my.exe" SourceFile="$(var.Project.TargetPath)" />
</Shortcut>
</File>
</Component>
问题是文件$(var.Project.TargetPath)
被添加两次到MSI。我可以通过删除图标引用来证明它。如果我删除MSI比使用Icon参考小3MB。
如何设置快捷图标到exe,这将使用相同的exe并且不要将它两次添加到MSI?
答案 0 :(得分:3)
我不是100%肯定(在安装程序参考中找不到任何确定的内容)但我认为广告快捷方式不能使用存储在exe中的图标。该图标需要流式传输到图标表中,并缓存在安装程序缓存中。如果你想保存3mb,你需要让它无广告或从exe中删除图标并将其单独存储在图标表中
答案 1 :(得分:3)
您正在使用exe作为图标文件:
<Icon Id="my.exe" SourceFile="$(var.Project.TargetPath)" />
如果要使用较小的文件,例如.ico文件,请更改Icon / @ SourceFile以引用它。但是,是的,您仍然需要@Id具有与[快捷方式]指向的文件(.exe)相同的扩展名。
答案 2 :(得分:2)
这是当前的WiX行为。我提交了feature request来改进这个故事。如果您想要更改,请随时发表评论。否则我怀疑Rob会按设计说出功能。
作为解决方法,从您的EXE中提取您的图标,然后在Icon元素中使用它。
答案 3 :(得分:0)
当您添加该图标时,您只需添加一个进入MSI文件的Icon表的图标。这与快捷方式定义无关。所以我不确定你要解决什么问题,虽然我可以看到为什么你得到一个更大的MSI文件。你是说缺少快捷方式,或者是否有错误的图标或其他内容?