在 WiX Burn 自定义托管引导程序中将 WIC 添加为 .NET 4.0 之前的要求

2024-02-03

我在获取包含自定义托管引导程序应用程序的刻录包以在某些不附带 Windows 成像组件的平台上启动时遇到问题,而安装 .NET 4.0 需要使用该组件(Windows 2003 就是其中之一)。

我们使用标准方法来定义托管引导程序应用程序所需的内容:

<WixVariable Id="WixMbaPrereqPackageId" Value="Netfx4Full"/>

当此引导程序在新安装的 Windows 2003 R2 计算机上运行时,它会启动 .NET 的标准要求安装程序,然后该安装程序会失败并出现错误。

我们尝试通过执行以下操作来解决此问题(删除所有非必要的内容):

...
<!-- Define WIC packages -->
<PackageGroup Id="PG.WIC">      
  ...
  <ExePackage Id="EP.wic_x64_enu" Cache="no" Compressed="no"  PerMachine="yes" Permanent="yes" Vital="no"  
     DisplayName="Windows Imaging Component for Windows Server 2003 x64"
     Name="{4A85FFDB-5563-4FE9-9C0E-C780A271BCC7}\WIC\wic_x64_enu.exe"
     SourceFile="$(var.SetupPrereq_SRC)\WindowsImagingComponent\x64\wic_x64_enu.exe"
     DownloadUrl="http://download.microsoft.com/download/6/4/5/645fed5f-a6e7-44d9-9d10-fe83348796b0/wic_x64_enu.exe"
     InstallCondition="(VersionNT=v5.2 AND VersionNT64 AND NOT NETFRAMEWORK40FULL)"
     InstallCommand="/q /norestart">
  </ExePackage>
</PackageGroup>
...
<!-- Define our own .NET package, and set it to be after the WIC package -->
<PackageGroup Id="PG.NetFx40Full">
  <ExePackage Id="EP.NetFx40Full" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="yes" Protocol="netfx4" 
      DisplayName="Microsoft .NET Framework 4"
      Name="{4A85FFDB-5563-4FE9-9C0E-C780A271BCC7}\NetFx\dotNetFx40_Full_x86_x64.exe"
      SourceFile="$(var.SetupPrereq_SRC)\NetFx\dotNetFx40_Full_x86_x64.exe"
      DownloadUrl="http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe"
      DetectCondition="NETFRAMEWORK40FULL"
      InstallCommand="/q /norestart /ChainingPackage &quot;[WixBundleName]&quot; /log %TEMP%\PG.NetFx40Full.log"
      RepairCommand="/q /norestart /repair /ChainingPackage &quot;[WixBundleName]&quot;"        
      After="EP.wic_x64_enu"        >
  </ExePackage>
</PackageGroup>
...
<!-- Change wixmbaprereqpackageid to point to our own package-->
<WixVariable Id="WixMbaPrereqPackageId" Value="PG.Netfx4Full" Overridable="no"/>
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" />
...
<Chain>
  <!--Windows Imaging Component-->
  <PackageGroupRef Id="PG.WIC"/>

  <!--.Net Framework 4 -->      
  <!--Custom offline package.-->
  <PackageGroupRef Id="PG.NetFx40Full"/>
  ...
</Chain>
...

这是行不通的。 prereq 安装程序照常启动,但是当您单击按钮开始安装时,进度条会闪烁一秒钟,然后安装程序退出。如果再次启动捆绑包,先决条件安装程序将启动,但仅显示标题和徽标,但不显示任何按钮。我们还尝试将 After 条件放在 .NET 包组的 PackageGroupRef 上,得到了类似的结果。

所以,我的问题是:是否有一种方法可以使刻录安装多个软件包作为托管引导程序的先决条件,或者是否有其他方法可以解决此问题?


对于 WiX v3.9 及更高版本,添加bal:PrereqSupportPackage="yes"(在 v4.x 中是bal:PrereqPackage) 到您希望先决条件 BA 安装的包(它遵循 InstallCondition)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 WiX Burn 自定义托管引导程序中将 WIC 添加为 .NET 4.0 之前的要求 的相关文章

  • 使用 xsd.exe 工具从具有多个命名空间的 XML 文件生成 XSD 文件

    我想做的事 我正在尝试为现有 XML 文件生成 XSD 文件 我正在使用xsd exe工具 随 Visual Studio 一起提供 XML 文件中的某些元素是命名空间限定的 在某些情况下 本地名称是相同的 如下所示
  • 数组中的不同类型,从数组中取出它们时如何知道将它们转换为什么?

    假设有一个通用的List类型的Packet 持有自定义类扩展Packet 例如登录包 or 聊天包 假设我把这些放在一个列表中 当我把它们拿出来时 最 具体 的类型是Packet 我想将它们转换成更具体的类型 回到原来的类型登录包 or 聊
  • 如何制作可修补/可更新的应用程序?

    我已经完成了一个学生项目 该项目从互联网上的 xml 文件中提取数据并将其保存到数据库并显示 我以几种不同的方式使用这些数据 例如在主页上显示在另一个选项卡中作为表格 并创建一些图表 我通过制作 5 个不同的类来完成这一切 每个类提取不同类
  • Portable 和 win-x64 在部署时有什么区别?

    我将代码部署到 Windows Server 2016 上的 IIS 我试图了解选择之间的有效区别Portable vs win x64在发布 设置 目标运行时下拉列表中 由于 JIT 需要将代码编译到特定的体系结构 站点在 Portabl
  • 如何在 C# 中知道 PID 和 VID 来发现虚拟 COM 端口名称

    如果我知道 PID 和 VID 我会尝试找到查找 COM 端口名称的正确方法 到目前为止 我写了解决方法 但我不相信没有更优雅和正确的方法 顺便说一句 我知道我可以使用 REGEX 编写此代码只是为了测试解决方法 我知道还有很大的改进空间
  • 本机线程异常会毫无例外地导致 .Net 应用程序崩溃

    我发现了一种情况 我的 Net 应用程序会意外崩溃 而不会引发任何异常 我希望 至少 AppDomain UnhandledException在这种情况下工作 以便至少使我能够记录错误并向用户提供一些信息 在这种情况下 我有一个 Net 程
  • 从类外部调用某些异步方法时出现异常

    假设我有一个名为 x 和 y 的类 如下所示 class x public x p private async p await q private async p some logic is there 在 test aspx cs 文件中
  • 如果图像包含特定颜色则

    是否有一种简单的方法来检查图像是否包含特定的 RGB 颜色 例如 Dim img As Image Image FromFile C image png If img contains color red toRGB then 我认为检查这
  • 试图使用加密来混淆我的项目打破了它

    我试图尝试不同的混淆选项 为了做到这一点 我首先尝试了加密货币 以下是我遵循的步骤 打开加密向导并选择一些选项 选择我的解决方案文件 完成向导后 我看到有些 Dll 被很好地混淆了 但我的项目现在无法构建 我注意到的两件事是 我的文件夹中有
  • 将 System.Array 从 .Net 编组到 vb6

    我有一个 Net 组件 它有一个 COM 可见类 该类具有返回 System Array 的方法 它实际上返回一个字符串数组 但返回类型声明为 System Array 不要问我 为什么 我知道我可以将返回类型声明为 string 这样就可
  • 将 GUID 转换为整数并返回

    所以我有一个必须与之交互的第三方应用程序 该应用程序需要我的用户表中的用户ID 问题是我将我的 userID 存储为 GUID 而第 3 方应用程序仅接受整数 所以我想 如果有一种方法可以将 GUID 转换为整数 然后能够将其转换回来 当我
  • 在模块 CommonLanguageRuntimeLibrary 中找不到类型 System.ApplicationException

    我通过 CodenameOne 版本的 IKVM 运行了第 3 方 Android 库 并成功导入了输出 dll 作为对 Visual Studio 中的 UWP 应用程序的引用 在尝试编译该项目时 我收到一个构建错误 从错误列表窗口 在模
  • 从 iPhone 上传图像/音频到服务器无法发送大图像

    我不知道这是我的iPhone代码还是服务器的问题 我正在使用 NSURLConnection 将图像 音频从 iPhone 上传到服务器 如果图像和音频的大小小于 60KB 则可以正常上传 如果超过 60KB 我会从服务器收到 400 Ba
  • 如何从一堆图像生成视频?

    谁能告诉我从一堆图像 位图 生成视频的方法 可能是开放格式的avi文件或开源库 我使用了 Splicer 但它在生产使用中存在一些错误 字节数图像转视频 SDK http bytescout com products developer i
  • 使用返回哈希数组的外部 PHP SOAP Web 服务的 C# .NET 客户端存在问题

    我正在编写一个需要调用外部 Web 服务的 NET Web 应用程序 我提供的文档包括 PHP 代码示例 我可以使用提供给我的 WSDL 地址在 VS2010 中成功创建 Web 引用 并且使用 fiddler 我可以看到正在发送和接收预期
  • 了解多个 configureawait(false) 在单个异步方法中执行的操作

    考虑这段代码 public async Task SomeMethodAsync 1 code here executes on the original context for simplicity sake this doesn t c
  • 最好的 NHibernate 二级缓存提供程序是什么?

    我见过有很多这样的 NCache Velocity 等等 但我还没有找到比较它们的表格 考虑以下标准什么是最好的 容易明白 最近正在维护中 是免费的或者有足够好的免费版本 Works 我无法说出什么是最好的或最差的 但我会分享我使用 NCa
  • WPF 自定义控件构造、触发器和事件

    我想构建一个新的自定义控件 我发现很少有教程可以给我一些如何实现这一目标的线索 据我了解 创建新的自定义控件总是通过扩展当前控件来完成 甚至可以扩展 例如 从层次结构的非常基本的级别进行控制 您甚至可以扩展 用户界面元素 框架元素 Cont
  • C# 委托实例化与仅传递方法引用 [重复]

    这个问题在这里已经有答案了 我有一个简单的问题 与仅传递函数引用相比 实例化 C 委托有什么优势 我的意思是 Why do Thread t new Thread new ThreadStart SomeObject SomeMethod
  • 为什么泛型 IList<> 不继承非泛型 IList

    IList

随机推荐

  • 有一些常见的方法来写入和读取配置文件吗?

    我需要我的程序创建和编辑一个配置文件 其中包含有关对象集的信息 然后在每次执行时读取它 是否有某种我可以使用的配置样式指南 我在 Windows 上使用 C 我建议查看提升 属性树 http www boost org doc libs 1
  • 我应该如何处理 kvo 中的 NSIndexSet 来更新表视图?

    我开始使用键值观察 并且我正在观察的可变数组在更改字典中为我提供了 NSIndexSets 有序可变对多 据我所知 问题是表视图希望我给它充满索引的 NSArrays 我考虑过实现一种自定义方法来将一个方法转换为另一个方法 但这似乎很慢 而
  • 减少 begin() 迭代器,然后再次增加

    这些陈述按照标准有效吗 std string str 123 auto it str begin it it Does it point to character 1 now 我在 g 4 7 2 和 clang 3 5 上尝试过这个 it
  • 是否可以在 Pydantic 中将未知字段更改为驼峰命名法?

    我定义了一个 Pydantic 模式 它接受未知字段 如下所示 from stringcase import camelcase from pydantic import BaseModel as pydanticBaseModel cla
  • Lightgbm 中“is_unbalance”参数的使用

    I am trying to use the is unbalance parameter in my model training for a binary classification problem where the positiv
  • 需要java API来解析SQL语句[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要一个java API来解析SQL语句 例如 我有一个 SQL 查询 SELECT PRODUCTS PROD ID PRODUCTS
  • 在SQL Server中创建用户后无法登录

    我的问题是创建用户后无法登录 SQL Server 用户创建成功 因为新用户列在安全 登录下 怎么解决这个问题 用户 sims 登录失败 该用户未与某个关联 受信任的 SQL Server 连接 微软 SQL Server 错误 18452
  • 如何创建动态路径组件并结合重试直到

    我有一个用例 我需要首先调用 API 来获取 ID 列表 从该响应中选择一个随机 ID 接下来 我调用第二个 API 它使用随机 ID 作为路径中的组件 第二个 API 调用可能会返回空响 应 因此我想利用retry until但在每次重试
  • 使用另一个 pandas DataFrame 更新存储在 Pytable 中的 pandas DataFrame

    我正在尝试创建一个函数 用 pandas DataFrame 中的新数据更新我存储在 PyTable 中的 pandas DataFrame 我想检查 PyTable 中是否缺少特定 DatetimeIndexes 的某些数据 值为 NaN
  • 用户警告:无法导入 lzma 模块。你安装的Python不完整

    安装 Google Cloud Bigquery 模块后 如果我将该模块导入 python 代码 我看到这条警告消息 在 python 3 7 3 Virtualenv 中发生在我身上 尝试重新安装 GCP bigquery 模块 如果我们
  • 使用imageview显示google play游戏服务玩家图像

    我正在使用 Google Play 游戏服务 并使用此代码来获取玩家详细信息 if gamesClient null Games Leaderboards loadCurrentPlayerLeaderboardScore gamesCli
  • 在 IntelliJ 和 Eclipse 开发人员都在工作的项目中使用 @NotNull

    IntelliJ IDEA 的一位同事 从事另一个项目 向我展示了令人惊叹的 NotNull 注释 我在这里读过有关如何开始在各处添加 NotNull 的消息 节省了大量时间和麻烦 IntelliJ 10 甚至可以在检测到该情况时自动将 N
  • 如何创建通用 JsonDeserializer

    我需要创建一个通用解串器 换句话说 我不知道反序列化的目标类是什么 我在互联网上看到过一些例子 他们创建了一个反序列化器 例如JsonDeserializer
  • 如何使用 Django 创建三重联接表

    使用 Django 的内置模型 如何在三个模型之间创建三重连接 例如 用户 角色和事件是模型 用户有很多角色 角色有很多用户 多对多 事件有许多用户 用户也有许多事件 多对多 但对于任何给定的事件 任何用户可能只有一个角色 如何在模型中表示
  • 必需的字段验证在 JQuery Popup MVC 4 中不起作用

    我有 JQuery 弹出窗口 我想在其上放置必需的字段验证 为此 我在模型中设置了必需的属性 并在视图中为它们设置了验证消息 但所需的字段验证不适用于弹出窗口 必需的字段验证在 JQuery 弹出窗口以外的表单上运行良好 请指导我应该如何解
  • Google 计算引擎 (GCE) 电子邮件传送解决方案?

    我刚刚在 Google Compute Engine 上设置了几个实例 但由于 GCE 阻止了端口 25 465 和 587 上的出站连接 因此电子邮件发送系统出现了问题 GCE 提 供详细解决方案 https developers goo
  • 如何从 C++ 更改 Windows 闪烁光标形状?

    如何将 Windows 闪烁光标形状从默认的垂直 更改为水平 如 dos 中使用的 有没有一些好的功能可以解决这个问题 OS win7 这实际上被称为caret 而不是一个cursor 这可能就是混乱的根源 也是为什么寻找解决方案没有产生太
  • 如何添加与夏令时时区相关的每周时间增量

    我想向本地化日期时间对象添加或减去周 或天 月或年 问题是 由于夏令时时区 这种天真的方法会导致 1 小时轮班 2014 03 27 12 00 就在冬令时转夏令时之前 例如 如果我向欧洲 柏林时区本地化的日期添加一周的时间增量 结果将是
  • 自动夹具奇怪的错误

    我收到这个错误 Ploeh AutoFixture Kernel IllegalRequestException 对 IntPtr 的请求是 检测到 这是不安全的资源 如果使用的话 进程会崩溃 所以请求被拒绝 普通的 IntPtr请求的来源
  • 在 WiX Burn 自定义托管引导程序中将 WIC 添加为 .NET 4.0 之前的要求

    我在获取包含自定义托管引导程序应用程序的刻录包以在某些不附带 Windows 成像组件的平台上启动时遇到问题 而安装 NET 4 0 需要使用该组件 Windows 2003 就是其中之一 我们使用标准方法来定义托管引导程序应用程序所需的内