修复 WiX 捆绑包时如何防止 .NET 修复?
Posted
技术标签:
【中文标题】修复 WiX 捆绑包时如何防止 .NET 修复?【英文标题】:How do I prevent .NET from repairing when repairing a WiX bundle? 【发布时间】:2013-12-04 19:01:00 【问题描述】:我有一个使用 burn 创建的包安装程序,第一步安装 .NET:
<Chain>
<!-- Applications depend on .NET 4.0 Client Profile -->
<PackageGroupRef Id="NetFx40ClientWeb"/>
<MsiPackage SourceFile="$(var.Installer1)" Visible="yes" />
<MsiPackage SourceFile="$(var.Installer2)" Visible="yes" />
<MsiPackage SourceFile="$(var.Installer3)" Visible="yes" />
...
当用户在“添加/删除程序”中修复捆绑包时,修复过程也会修复 .NET 框架,这非常耗时,有时需要重新启动 PC。我们安装的问题不太可能与 .NET 框架本身有关,所以我想改变这种行为。我找不到NetFx40ClientWeb PackageGroup
的实际定义,但我认为它被标记为permanent="true
",因为它没有与捆绑包的其余部分一起卸载。那么为什么要用它来修复它?
【问题讨论】:
您是否使用自定义托管引导程序应用程序? 不,目前我们使用的是 WiX 标准 BA。 【参考方案1】:获取 WiX 源并制作 .NET 4 安装 wsx 文件的副本并在您的项目中使用该文件,然后编辑 NetFx40ClientWeb 以删除 ExePackage/@Repair 元素。
【讨论】:
谢谢!我需要一个答案,所以我订阅了 WiX 邮件列表也在那里提问。这与开发人员提供的解决方案类似,而且似乎工作正常。 它会生成一个警告:警告 CNDL1136:当 ExePackage/@Protocol 属性设置为 'netfx4' 时,ExePackage/@RepairCommand 属性值 '' 应该包含 '/q' @Alex:见this issue。只需压制 1136。 wix 源代码可以在这里找到 - https://github.com/wixtoolset/wix3/releases/latest。解压下载的 .zip 或 .tar.gz 文件并在 "\src\ext\NetFxExtension\wixlib\" 目录中查找 wxs 文件。以上是关于修复 WiX 捆绑包时如何防止 .NET 修复?的主要内容,如果未能解决你的问题,请参考以下文章