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 文件中升级未版本控制的文件的主要内容,如果未能解决你的问题,请参考以下文章