问题标签 [wix3.11]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
380 浏览

wix - Wix 捆绑启动画面仅显示几分之一秒

我将启动画面添加到捆绑包中。在某些机器上,初始屏幕显示约 3 秒,但在少数机器上它只是闪烁(不到一秒)并启动欢迎屏幕。

我希望启动画面在所有机器上停留几秒钟,但它的行为方式不同。

0 投票
1 回答
286 浏览

c# - 提示容器来源:WixAttachedContainer 问题

今天是个好日子,

在使用 Wix 时,我很难解决以下错误消息:提示容器来源:WixAttachedContainer

场景:

  • 我们有一个带有默认 Wix 模板的安装项目,它充当多个包的捆绑包,称为 MyBundle.exe。
  • 我们有一个带有 WPF 和 C# 的托管引导程序应用程序 wix exe,它充当独立的安装程序,但这需要包含在上述捆绑包中,称为 MyApp.exe。
  • 安装 MyBundle.exe 时会正确安装 MyApp.exe。
  • 当卸载 MyBundle.exe 并具有 DetectCondition 来卸载 MyApp.exe。MyApp.exe 被正确删除。

问题:

  • 在某些情况下,MyBundle.exe 将被删除,但必须将 MyApp.exe 安装在后面。
  • 删除 MyBundle.exe 并尝试删除 MyApp.exe 后,我在日志中收到以下错误:提示容器来源:WixAttachedContainer,路径:“Path_To_EXE”

如果我将 MyApp.exe 作为独立安装并卸载它,一切正常。如果我在删除 MyBundle.exe 之前安装 MyBundle.exe(MyBundle.exe 中包含 MyApp.exe)并卸载 MyApp.exe,这也可以正常工作。

我已经阅读了出现错误的 MyApp.exe 的日志,我发现 MyApp.exe 正在尝试访问 MyBundle.exe 的缓存文件夹 提示容器来源:WixAttachedContainer,路径:C:\ProgramData\Package Cache\ {Bundle_GUID}\Dependencies\MyApp.exe 但此时,该文件夹已不在系统上。

MyBundle.exe中ExePackage的配置如下:

我尝试了几种标签Permanent,Cache的组合,但仍然没有效果。

我已经尝试按照如下说明连接到 MyApp.exe 上的 C# 代码中的 ResolveSource 方法: Managed Bootstrapper Application "Failed to resolve source for file"但没有成功。

你们中的任何人都可以指出我正确的方向吗?

更新:MyBundle.exe 和 MyApp.exe 以及包含的 msi 都是使用 signtool 签名的。

谢谢。

0 投票
1 回答
368 浏览

c# - 如何使用 WIX 复制第三方 DLL

我有一个使用 Serilog 的非常简单的 C# Windows 窗体应用程序。我想使用 WIX 为我的应用程序创建一个 MSI 安装程序,并且我想在其中包含一些 Serilog DLL。

到目前为止,我已成功配置 Product.WXS 以复制所有三个 Serilog 文件;但是,在此过程中会覆盖若干文件元数据,包括文件版本和产品版本。

这是有道理的(我认为?),因为这些文件作为我的产品的组件包含在内,所以它们就像我的 EXE 一样得到版本控制。

结果,当我运行我的应用程序时,我收到一个 File or Assembly Not Found 错误(因为我的应用程序正在寻找一个与 MSI 安装后版本不同的 Serilog DLL)。

我确定我在这里遗漏了一些非常简单的东西。

我期望的是所有三个 Serilog 文件都由 MSI 安装,并且它们具有正确的版本号和元数据。

基本上,我想做的是“复制”文件而不对它们进行版本控制。

就像我说的,我毫不怀疑这是可能的,而且可能是直截了当的,我只是 WIX 的新手。

0 投票
1 回答
81 浏览

wix - 将两个互斥的同名文件安装到同一个目录

我的程序使用我选择作为功能公开的配置选项进行部署。此选项可以是两个值之一。

每个配置都会更改一组设置文件。它们有不同的输入文件名(为了举例,我们称之为option1-config20-lv80.xml),但应该作为config20-lv80.xml安装到配置目录。每个选项都有一个前缀,应该像这样去掉,这也意味着一次只能选择其中一个选项进行安装。但是,即使在选择另一个功能时阻止安装一个功能的条件下,我的输出还是乱七八糟:

如何让我的用户在这些配置选项之间进行选择,并在没有任何负面影响的情况下解决我的 ICE30 问题?

我看到回答了一个类似的问题,但我不是 100% 确定如何在 wix# 中实现它,或者是否有其他方法可以在不禁用 ICE30 验证或创建 2 个安装程序的情况下实现我的目标。

0 投票
0 回答
163 浏览

.net-4.0 - WiX 3.11.2 和 .NET 4.7.2 COM+ 应用程序

我正在尝试使用 WiX 3.11.2 安装 .NET Framework 4.7.2 开发的 COM+ 组件。

它失败了,日志中出现以下错误:

行动 14:38:48:RegisterComPlusAssemblies。注册 COM+ 组件

RegisterComPlusAssemblies: DLL: C:\Program Files (x86)\WiXTestingComPlusApplication\NET472ServicedComponent.dll

ComPlusInstallExecute: ExceptionInfo: Code='0', Source='System.EnterpriseServices', Description='未能加载程序集'c:\program files (x86)\wixtestingcomplusapplication\net472servicedcomponent.dll'.', HelpFile='', HelpContext ='0'

ComPlusInstallExecute:错误 0x80020009:无法调用 RegistrationHelper.InstallAssembly() 方法

ComPlusInstallExecute:错误 0x80020009:无法注册 .NET 程序集

ComPlusInstallExecute:错误 0x80020009:无法注册程序集,键:ComPlusAssembly_NET472ServicedComponent

ComPlusInstallExecute:错误 0x80020009:无法注册程序集 CustomAction ComPlusInstallExecute 返回实际错误代码 1603(请注意,如果翻译发生在沙箱内,这可能不是 100% 准确)

在绑定日志中,我可以看到有人尝试使用 .NET 2.0 运行时加载基于 .NET 4.7.2 的 COM+ 组件程序集:

装配活页夹日志条目(11/15/2019 @ 2:38:49 PM)

操作失败。

绑定结果:hr = 0x8013101b。没有可用的描述。

程序集管理器加载自:C:\Windows\Microsoft.NET\Framework\ v2.0.50727 \mscorwks.dll

在可执行文件 C:\Windows\syswow64\MsiExec.exe 下运行

--- 详细的错误日志如下。

=== 预绑定状态信息 ===

日志:用户 = NT AUTHORITY\SYSTEM 日志:where-ref 绑定。位置 = c:\程序文件 (x86)\wixtestingcomplusapplication\net472servicedcomponent.dll

日志:Appbase = file:///C:/Windows/syswow64/

日志:初始 PrivatePath = NULL

日志:动态基础 = NULL

日志:缓存基础 = NULL

日志:AppName = NULL

调用程序集:(未知)。

===

LOG:此绑定在 LoadFrom 加载上下文中开始。

警告:将不会在 LoadFrom 上下文中探测本机图像。本机映像只会在默认加载上下文中进行探测,例如使用 Assembly.Load()。

LOG:未找到应用程序配置文件。

日志:使用 C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config 中的机器配置文件。

日志:正在尝试下载新的 URL 文件:///c:/program files (x86)/wixtestingcomplusapplication/net472servicedcomponent.dll。

LOG:程序集下载成功。尝试设置文件:c:\program files (x86)\wixtestingcomplusapplication\net472servicedcomponent.dll

LOG:进入从源代码运行设置阶段。ERR:从文件中提取清单导入时出错(hr = 0x8013101b)。

ERR:无法完成程序集的设置(hr = 0x8013101b)。探测终止。

错误代码表示COR_E_NEWER_RUNTIME

WiX 工具集扩展的自定义操作使用本地 DLL 自定义操作来注册 COM+ 应用程序。

看起来它没有使用最新版本的 .NET Framework。有什么办法可以控制吗?

当然,如果 ServicedComponent 使用的是 .NET Framework 2.0,它也可以正常工作。

我在这里为这个问题创建了一个小演示。

更新 - 添加了 WiX wxs 文件内容

0 投票
0 回答
244 浏览

wix - 如何使用 Wix Burn 安装根证书?

我在完全离线的环境中安装我的应用程序。在生产场景中,我们的机器将完全无法连接到互联网。

我正在编写一个 WiX Burn 自定义引导程序,部分原因是安装 .NET 4.7.2 所需的 Microsoft 根证书,以便在 8.1 之前的 Windows 版本上正确安装。我最初的计划是使用 .NET 证书命名空间来执行此操作,但除了弹出的警告说不要,我意识到 Burn 在当前用户的海拔级别运行,这意味着它可能无法安装证书没有首先获得提升的特权。

根据有关为 Visual Studio 安装证书的 Microsoft 文档,执行此操作的首选方法是将 certmgr.exe 的副本与您的程序捆绑在一起,并调用它以将证书添加到根存储。

ExePackage使用元素来做到这一点是最佳实践,甚至可能吗?如,将元素设置为调用 certmgr,设置InstallCommand/add MicRooCerAut2011_2011_03_22.cer /s /r localMachine root, PerMachinetoTrue并让它撕裂?还是ExePackage有某种特殊行为?

0 投票
0 回答
56 浏览

sql - wix 自定义操作数据库传输超时

Wix 安装程序自定义操作运行 SQL 脚本以将数据从旧数据库传输到新数据库。但是脚本会在更大的数据库上超时。在 Management Studio 上手动运行时不会超时。有没有办法将超时时间延长到 20 分钟?

如果没有,我的备用计划是将脚本分解成更小的块。

0 投票
1 回答
48 浏览

excel - 在使用 c# 和 Excel Dna 开发的 excel 中部署用户定义的函数,它有可能培养特定文件和其他 dll 以及 xll 文件

我开发了一个项目来使用 c# 和 Excel Dna 在 excel 中创建用户定义的函数,它有很多特定于文化的文件和其他 dll 以及 xll 文件。我以前从未这样做过,我正在使用 WIX3.1 进行打包,但到目前为止还没有成功,任何人都可以帮助我一步一步地进行打包,以便我可以打包这个,以便在整个组织中使用这些功能

0 投票
0 回答
216 浏览

azure - 仅在构建管道中出现 WIX ICE 验证错误?

我仅在构建管道上面临 ICE 验证错误 ICE 1 到 7。当我抑制 ICE 错误时,构建通过而没有任何错误。我也有服务器机器的管理员权限。但仍然看到以下错误。针对以下错误的任何建议或解决方案。需要更多权限吗?提前致谢。

在此处输入图像描述

0 投票
1 回答
451 浏览

wix - Wix 自定义操作仅在安装期间执行,而不是在升级和删除时执行?

我有一个自定义操作,只能在安装期间执行,而不是在次要版本升级和删除期间执行?我尝试了不同的条件,但 CA 在次要版本期间执行。

1) (未安装)或未安装(REMOVE="ALL" AND UPGRADINGPRODUCTCODE)

2)(未安装)

3)(未安装)或未安装(已安装 AND REMOVE="ALL" AND UPGRADINGPRODUCTCODE)

但没有什么对我有用。我的 CA 执行了两次可能是因为在升级期间安装程序正在卸载和安装。任何关于如何仅在安装期间而不是在升级期间执行 CA 的建议。