Wix:单个MSI替代msi + cab

182

我的Wix项目创建了install.msi和cab1.cab文件。如何将它们打包到msi文件中?我可能会使用7-zip SFX来解决这个问题,但我也看到其他应用程序只有一个单独的msi文件。

4个回答

275
您没有发布任何源代码,但我假设您的wxs文件有一个Media元素。只需在MediaTemplate中将EmbedCab属性设置为“yes”即可。
<MediaTemplate EmbedCab="yes" />

8
我之前有一个空的 MediaTemplate 元素,但我现在用这个来替换它:<Media Id="1" Cabinet="Cab1.cab" EmbedCab="yes" /> 谢谢! - wtjones
134
请在 MediaTemplate 元素中添加 EmbedCab="yes" 以实现此功能。 - Jeff Yates
10
直到 WiX 3.6 版本才提供了 MediaTemplate 功能。wtjones 没有提到他使用的是哪个版本的 WiX,因此我提到了适用于更多人的方法。 - Christopher Painter

74

设置EmbedCab="yes"

自WIX 3.8以来:

<MediaTemplate EmbedCab="yes" />

在 WIX 3.8 之前:

<Media Id="1" Cabinet="cab1.cab" EmbedCab="yes" />

26

使用方法如下:

<Media Id="1" Cabinet="CabFileName.cab" EmbedCab="yes" />

此外,这篇文章还介绍了其他的方法。


7

使用 WiX 工具集 v4,您只需要在 Package 元素内添加以下 MediaTemplate 元素:

<MediaTemplate EmbedCab="yes" />

我正在做这个,而且我正在使用Wix v4,但它仍然没有将cab文件打包到msi中。我不明白为什么默认行为会是将它留在安装程序文件之外。但如果必须这样,我想我可以接受。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接