WIX:在单独的 cab 文件中升级未版本控制的文件

Posted

技术标签:

【中文标题】WIX:在单独的 cab 文件中升级未版本控制的文件【英文标题】:WIX: Upgrading unversioned files in separate cab file 【发布时间】:2012-03-14 14:31:59 【问题描述】:

我有一个 WIX 安装程序,它可以从外部 CAB 文件安装一些未版本控制的文件。

我的问题是,有人告诉我在 InstallInitialize 之前需要 RemoveExistingProducts 才能正确升级未版本控制的文件。但是,它似乎被外部 cab 文件吓坏了,并且一直给我一个错误,即该文件不在 CAB 文件中(即使它是)。

如果 RemoveExistingProducts 在 InstallExecute 之后,它会在第一次正确安装 CAB 文件,但不会在升级过程中升级文件

下面是一些sn-ps:

<Media Id="2" Cabinet="Videos.cab" EmbedCab="no" CompressionLevel="none" />

...

<Component Id="Video01" Guid="FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF" DiskId="2" >
    <File Id="Video01.wmv"  DiskId="2" Vital="no" Source="BLAH.wmv" Name="Video01.wmv"/>
</Component>

...

<InstallExecuteSequence>
    <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWERPRODUCTFOUND</Custom>
    <!--<RemoveExistingProducts  After="InstallExecute" />-->
    <RemoveExistingProducts  Before="InstallInitialize" />
</InstallExecuteSequence>

【问题讨论】:

【参考方案1】:

尝试为文件设置 DefaultVersion 属性并在 InstallExecute 之后添加 RemoveExisingProducts。如 MSDN 中所述:

Versioned Files Win—A versioned file gets installed over a nonversioned file.

【讨论】:

以上是关于WIX:在单独的 cab 文件中升级未版本控制的文件的主要内容,如果未能解决你的问题,请参考以下文章

Wix 重大升级,无论文件版本较新,都替换文件

从 Visual Studio 过渡到 Wix 安装程序

无需卸载的 Wix 安装程序升级

在 Visual Studio 2008 中将目录添加到 CAB 项目

wix toolset将 cab 打包进msi

WiX 刻录包安装程序 - 升级安装时未更新 ExePackage