修复 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 修复?的主要内容,如果未能解决你的问题,请参考以下文章

Wix 安装然后立即尝试修复

加载 gdata 包时如何修复 Perl 警告消息?

WiX - 如何防止引导程序自行安装;只安装链式包

创建新的 R 包时如何修复“没有可见的全局函数定义”

修复在 WiX 3.8 中创建的设置时出错

如何修复 AWS Elastic Beanstalk 部署的 Rails 5.2 应用程序捆绑程序问题