Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WIX exe快捷方式图标将exe添加两次_Wix_Windows Installer - Fatal编程技术网

WIX exe快捷方式图标将exe添加两次

WIX exe快捷方式图标将exe添加两次,wix,windows-installer,Wix,Windows Installer,我正在尝试根据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="M

我正在尝试根据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是3MB小于与图标参考


我如何设置exe的快捷方式图标,它将使用相同的exe,并且不会将其添加到MSI中两次?

我不是100%确定(在安装程序参考中找不到任何明确的内容),但我认为公布的快捷方式不能使用存储在exe中的图标。图标需要流式传输到图标表中,并缓存在安装程序缓存中。如果要保存3mb,则需要将其设置为非播发或从exe中删除图标,并将其单独存储在图标表中。添加该图标时,只需添加一个进入MSI文件图标表的图标即可。这与快捷方式的定义无关。所以我不确定你们想解决什么问题,尽管我能理解为什么你们会得到一个更大的MSI文件。你是说快捷方式丢失了,还是图标有误或是其他什么

您正在使用exe作为图标文件:

<Icon Id="my.exe"  SourceFile="$(var.Project.TargetPath)" />


如果要使用较小的文件,例如.ico文件,请更改图标/@SourceFile以引用它。但是,是的,您仍然需要@Id具有“与[快捷方式]指向的文件相同的扩展名”(.exe)。

这是当前的WiX行为。我已经提交了一份报告来改进这个故事。如果您想更改,请随时发表评论。否则我怀疑Rob会说设计的功能


作为一种解决方法,从EXE中提取图标,并在图标元素中使用它。

我只想避免将同一文件添加到msi两次(在本例中为EXE)。这就是我对智能计程车的理解——避免将同一个文件两次添加到msi中。智能计程车只会规范放置到计程车中的文件。它不会查看其他博客存储位置,如二进制表或图标表。不过,WiX从源路径提取资源,只将资源放在表中,而不是整个EXE中,这看起来确实像是一个功能请求/bug。尽管如此,Windows Installer图标表仍然显示图标可以是PE(EXE/DLL)格式。感谢您的解释,我是旧VS安装程序的WiX新手。在那里,它只是工作。。。我已经提取了图标并将其单独放置。好的,我将为该请求添加注释。感谢您指出,只有th Id必须具有扩展名!