在构建或安装时在Wix中即时设置组装图标

时间:2014-06-12 21:50:08

标签: c# .net wix

在我的Wix项目中,我配置了多种文化。其中一种文化需要两个程序集(主可执行文件和一个DLL)的唯一图标。

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

然后,第一个想法是使用InsertIcons设置程序集'在Wix构建时间期间的图标。因此,在处理程序集之前,我执行InsertIcons.exe,为正在构建的区域性指定适当的图标。即使只有一种文化需要独特的图标,我也必须始终为每个组件设置图标,因为组件将在没有图标的情况下构建。这种方法的问题:我不确定如何在Wix构建过程中启动独立的可执行文件,或者即使可以完成它。

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

我是否正确地选择了这些想法,还是有更好的方法来完成这项工作?看来你可以在Wix中做任何事情,但唯一的问题是找出如何实际做到这一点!

1 个答案:

答案 0 :(得分:0)

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

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