在构建或安装时在Wix中动态设置程序集图标

本文关键字:动态 设置 程序集 图标 Wix 构建 安装 | 更新日期: 2023-09-27 18:08:28

在我的Wix项目中,我配置了多个区域性。其中一个区域性需要两个程序集(主可执行程序和一个dll)的唯一图标。

首先,我是一个Wix新手。对于如何解决这个问题,我有两个想法。在这两种情况下,我将使用Einar Egilsson的InsertIcons工具,在他的博客文章中有描述。在Visual Studio中,我会配置这些程序集的项目文件来指定默认图标。也就是没有图标。

那么,第一个想法是在Wix构建时使用InsertIcons来设置程序集的图标。因此,在处理程序集之前,我将执行InsertIcons.exe,为正在构建的区域性指定适当的图标。即使只有一种文化需要独特的图标,我也必须始终为每个程序集设置图标,因为程序集将在没有图标的情况下构建。这种方法的问题:我不确定如何在Wix构建过程中启动独立的可执行文件,甚至不知道是否可以这样做。

第二个想法是在安装时使用自定义操作来完成这项工作。我的理解是,我可以打包InsertIcons.exe,以及必要的。ico文件,作为进入MSI的二进制文件。然后,在将程序集复制到目标文件夹之后,我的自定义操作将启动InsertIcons来设置程序集的图标。这种方法的问题:我认为我必须首先将InsertIcons和. ico文件从MSI中复制到临时文件夹中。此外,我认为如果我以这种方式修改程序集,它们将无法在卸载场景中正确删除。

我的想法是正确的吗,还是有更好的方法来做这项工作?似乎您可以在Wix中做任何事情,但唯一的问题是找出如何实际做到这一点!

在构建或安装时在Wix中动态设置程序集图标

我的解决方案是使用构建后事件将程序集的副本复制到区域性文件夹(bin'Release'xx-XX)。然后,InsertIcons用于设置这些副本的区域性特定图标。为了让InsertIcons设置程序集中的第0个图标(如果已经有第0个图标,则不会这样做),将程序集项目更改为指定默认图标(即没有图标)。

然后,在Wix中,当构建有问题的区域性时,将从区域性文件夹(bin'Release'xx-XX)而不是通常的源文件夹(bin'Release)中提取程序集。