问题标签 [wix3.10]

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 回答
433 浏览

wix - 为什么在检测 FilesInUse 时 Bootstrapper 会挂起?

我正在使用 WiX 工具集 v3.10.0.1726

我有一个捆绑在引导程序中的 .msi 文件。

微星定义:

如果直接执行 .msi 文件,FilesInUse如果应用程序正在运行,对话框会正确显示。一切正常。

现在我已将 .msi 文件集成到引导程序中:

我需要DisplayInternalUI,因为我在 .msi 文件中有一些额外的对话框,这些对话框对于设置是必需的。

如果应用程序未在升级方案中运行,则一切正常,而升级时正在运行的应用程序会使引导程序和 .msi 文件进入无响应状态。

日志的输出:

[2A34:28F0][2015-07-21T16:38:40]i001:刻录 v3.10.0.1726,Windows v6.1(Build 7601:Service Pack 1),路径:W:\work\SETUP.exe
.. .
[2A34:28F0][2015-07-21T16:38:40]i009:命​​令行:'-burn.unelevated BurnPipe。{571E9E94-4908-45EE-A6AC-05F923FAFDCF} {F7B2FBA0-BAEB-42C7-B1D5-B8704F153049 } 10904 /log log.txt'
...
[2A34:28F0][2015-07-21T16:38:41]i300:应用开始
...
[2A98:054C][2015-07-21T16:38:42] i301:应用执行包:设置,操作:安装,路径:C:\ProgramData\Package Cache{99D06386-9447-4D7B-8307-E53C12BB09B5}v2.0.19.28124\FOOAPPLICATION,参数:' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL= "7" INSTALLFOLDER="C:\FOOFOLDER" TRANSFORMS=":1031"'

以及 msi-log 的输出(至少是最后的相关行):

...
MSI (s) (24:D4) [16:38:42:826]:执行操作:InstallValidate
MSI (s) (24:D4) [16:38:42:827]:属性更改:删除 MsiRestartManagerSessionKey财产。它的当前值为'053651647df31e46971d3237c9eb6a06'。
MSI (s) (24:D4) [16:38:42:827]:转换表对话框。
...
MSI (s) (24:D4) [16:38:42:828]: 注意:1: 2205 2: 3: BindImage
MSI (s) (24:D4) [16:38:42:828] : 注意: 1: 2205 2: 3: ProgId
MSI (s) (24:D4) [16:38:42:828]: 注意: 1: 2205 2: 3: PublishComponent
MSI (s) (24:D4) [ 16:38:42:828]:注:1:2205 2:3:SelfReg
MSI (s) (24:D4) [16:38:42:828]:注:1:2205 2:3:扩展
MSI ( s) (24:D4) [16:38:42:828]:注:1:2205 2:3:字体
MSI (s) (24:D4) [16:38:42:828]:注:1:2205 2:3:
MSI (s) (24:D4) [16:38:42:828]:注: 1: 2205 2: 3: TypeLib
MSI (s) (24:D4) [16:38:42:829]: 注意: 1: 2205 2: 3: _RemoveFilePath
MSI (s) (24:D4) [16:38 :42:993]: 注意: 1: 1402 2: HKEY_CLASSES_ROOT.NET 3: 2
MSI (s) (24:D4) [16:38:43:127]: 注意: 1: 1402 2: HKEY_CLASSES_ROOT.NET 3: 2
MSI (s) (24:D4) [16:38:43:221]:属性更改:修改 CostingComplete 属性。它的当前值为“0”。它的新值:'1'。
MSI (s) (24:D4) [16:38:43:222]: 注意: 1: 2205 2: 3: BindImage
MSI (s) (24:D4) [16:38:43:222]: 注意: 1: 2205 2: 3: ProgId
MSI (s) (24:D4) [16:38:43:222]: 注意: 1: 2205 2: 3: PublishComponent
MSI (s) (24:D4) [16:38:43:222]: 注意: 1: 2205 2: 3: SelfReg
MSI (s) (24:D4) [16:38:43:222]: 注意: 1: 2205 2: 3: 扩展
MSI (s) (24:D4) [16:38:43:222]: 注意: 1: 2205 2: 3: 字体
MSI (s) (24:D4) [16:38 :43:222]: 注意: 1: 2205 2: 3: 类
MSI (s) (24:D4) [16:38:43:222]: 注意: 1: 2205 2: 3: TypeLib
MSI (s) ( 24:D4) [16:38:43:222]: 注意: 1: 2727 2:
MSI (s) (24:D4) [16:38:43:314]: 转换表错误。

MSI (s) (24:D4) [16:38:43:314]:转换表错误。

MSI (c) (98:4C) [16:38:43:326]:重新启动管理器:会话已打开。

那么,为什么引导场景中的 msi 挂起(并导致引导程序挂起),我该如何解决这个问题?

0 投票
1 回答
1473 浏览

wix - 无法加载 Wix 托管主机

我制作了一个超级简单的 wix 引导程序并在 Visual Studio 2015 中安装项目(并在 2013 年尝试过,结果相同)。引导程序将发布一个消息框并退出,但我收到错误消息“加载必备引导程序应用程序,因为无法加载托管主机,错误:0x80070490。” 而且我不知道那个错误代码是什么意思。

它直接尝试安装已经存在的.Net 4.5,然后退出。

我确实有指向正确类的程序集的 BootstrapperApplicationAttribute。引导程序应用程序是一个 .Net 4.5 WPF 用户控件库。

这是完整的日志编辑:带有最近更改的最新日志

编辑:这是 BootstrapperApplicationRef 部分。我已经尝试过使用和不使用 BootstrapperCore.dll 和 Microsoft.Deployment.WindowsInstaller.dll。除了标准 .Net 库之外,引导程序应用程序没有其他依赖项

和 VerySimpleBurnApp.BootstrapperCore.config 编辑:更新到当前

0 投票
0 回答
302 浏览

wix - 创建 Wix Bundle UI

我已经设法使用 Wix Bundle 来捆绑我所有的先决条件并将它们折叠成一个单独的安装程序 exe。(我有4个先决条件和一个主要软件)这个单一的安装程序exe使用工具集提供的基本UI,通过指定获得

但是,现在我试图在安装此捆绑包时获得良好的用户体验。

理想情况下,在单击单个安装程序 exe 时,

你们能告诉我如何实现这一切吗?

0 投票
1 回答
2565 浏览

wix - 使用 Wix Burn 检测以前的捆绑包版本

我正在尝试检测以前安装的捆绑包的版本号是什么。但是,burn 似乎没有找到它,尽管它适当地检测到它将进行重大升级。

这就是我的 bundle xml 的相关部分的样子:

想法是 ProductSearch 应该使用升级代码检测任何产品并将版本号放在变量中PreviousVersion以供以后使用。但是,burn 似乎没有检测到具有此升级代码的任何现有产品,而是始终将版本设置为“ 0.0.0.0”。以下是日志文件的相关部分(为清楚起见进行了一些编辑):

如果我使用升级代码“手动”查询产品,MsiEnumRelatedProducts我也找不到它,而从 msi 包中查询升级代码会正确返回 msi 产品。

我的期望落空了吗?在这种情况下,我可以不用查询 msi 升级代码,因为那个版本对我来说总是一样的。我更感兴趣的是为什么这不能像我想象的那样工作。

0 投票
1 回答
328 浏览

wix - Wix 获取自定义托管 BA 中软件包的安装状态

我创建了一个包含 3 个包的包。

这三个包中的每一个都将根据我在 wxs 文件中定义的“InstallCondition”进行安装。

现在,在自定义 MBA(我已经开始创建)中,我需要显示我的包将安装的所有包的列表以及每个包的已安装状态。我需要在 UI 对话框中显示它。

现在这应该在 DetectComplete 回调中完成。但我很困惑,因为里面没有足够的信息。

任何帮助将不胜感激。

0 投票
1 回答
1130 浏览

wix - 刻录引导程序 / wix 中有意义的错误/失败消息

如果在使用刻录引导程序安装时出现任何故障,我正在尝试提供自定义/有意义的错误消息。

关于安装程序的简短介绍。我正在使用具有链 msipackages(3) 的烧录引导程序。MSI 包在 c# 中有自定义操作。我正在使用本地化 wxl。下面是失败部分,请参阅突出显示的custommessage

我可以将此自定义消息作为刻录变量访问并使用 msiproperty 传递给 msi

我也可以使用 session["CustomMessage"] 在自定义操作中访问这个 customMessage

问题:当我从自定义操作更改此会话 [“CustomMessage”] 时,它没有反映回刻录变量并返回到 wxl 中的 CustomMessage?谁可以帮我这个事。

来自自定义操作

0 投票
1 回答
1212 浏览

user-interface - Wix,以前版本存在时的自定义对话框

我正在使用 WiX 工具集为我的应用程序进行安装。如果找到以前的版本,我想显示自定义对话框。

现在我不知道如何检查是否有以前的版本并仅在这种情况下显示此对话框?这是我的代码。

CustomDialogUI.wxs:

有了这个,我根据需要创建了我的对话框并插入到原始的对话框链中。

在我的 Project.wxs

有了这个,我每次都会得到我的 OldVERsionDlg,而且我不知道如何让他只在以前的版本存在时才显示。

我已添加到 Project.wxs

并尝试:

没有运气。

0 投票
1 回答
1385 浏览

msbuild - 错误 CNDL0005:产品元素包含意外的子元素“对话框”

我正在尝试使用https://www.firegiant.com/wix/tutorial/user-interface-revisited/a-single-dialog/上提供的说明制作 MSI 安装程序。

我尝试将 Dialog 标签放在 Product 标签/ Wix 标签内,但在这两个位置都出现以下错误:

error CNDL0005 : The Product element contains an unexpected child element 'Dialog'.

请帮我解决这个问题。
谢谢!

0 投票
1 回答
31 浏览

wix - WIX 服务安装程序 CA 对 RegistryKey 组件的写入权限

我有一个 CA 在 PublishProduct 之后在 InstallExecuteSequence 中延迟运行而无需模拟。

此 CA 使用 Windows 模拟将上下文更改为本地管理用户,在该用户中使用对话框查询凭据以供用户输入。满足了提升的要求,更改了上下文并执行了其他任务,但是当我尝试打开安装程序在 HKLM\SYSTEM\CurrentControlSet\Services\NameOfService\MySubKey 中创建的子项以进行写访问时,我得到一个与访问权限不足。但是我可以打开阅读吗?

此时服务已安装,密钥已创建,其他值已写入。我用来修改它的上下文是本地管理员组的成员,并且会话根据其他任务的要求被提升?

这是 Windows 安装程序环境的警告吗?

0 投票
2 回答
483 浏览

wix - 如何在 WiX 中为 ComponentGroupRef 指定文件位置

我是 WiX 的新手。我使用 Heat 工具根据文件夹生成 wxs 文件。现在如何在 product.wxs 中使用 wxs 文件而不实际将生成的文件包含到解决方案中。仅供参考,我知道我可以使用“ComponentGroupRef Id”引用生成的文件,但是如何指定 ComponentGroupRef 的文件路径?