【问题标题】:WIX shortcut icon to exe adds exe twiceexe的WIX快捷方式图标将exe添加两次
【发布时间】:2014-03-04 10:50:19
【问题描述】:

我正在尝试根据我在 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 中?

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您指出,只有 Id 必须有扩展名!
    【解决方案2】:

    我不是 100% 确定(在安装程序参考中找不到任何确定的内容),但我认为广告快捷方式不能使用存储在 exe 中的图标。图标需要流式传输到图标表中并缓存在安装程序缓存中。如果要保存 3mb,则需要将其设为非广告或从 exe 中删除图标并将其单独存储在图标表中

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 好的,我将对该请求添加评论。
      【解决方案4】:

      添加该图标时,您只是添加了一个进入 MSI 文件图标表的图标。这与该快捷方式定义无关。因此,我不确定您要解决什么问题,尽管我可以理解为什么您会获得更大的 MSI 文件。您是说缺少快捷方式,还是图标错误或其他?

      【讨论】:

      • 我只是想避免将同一个文件添加到 msi 两次(在本例中为 exe)。这就是我对智能布线的理解——避免将同一个文件两次添加到 msi。
      • 智能 cabbing 仅对放入 cab 的文件进行规范化。它不查看其他博客存储位置,例如二进制表或图标表。尽管如此,WiX 从源路径中提取资源并仅将资源放在表中而不是整个 EXE 中似乎确实是一个功能请求/错误。不过,Windows 安装程序图标表确实表明图标可以是 PE(EXE/DLL)格式。
      • 感谢您的解释,我是来自 Old VS Setup 的 WiX 新手。它就在那里工作了......我已经提取了图标并将其分开放置。
      猜你喜欢
      • 1970-01-01
      • 2020-10-04
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多