【发布时间】:2018-08-30 05:22:57
【问题描述】:
这不是一个好问题,但请稍等片刻。
为了正确看待它,我使用Remember Pattern 来保存 CMD 行输入属性值,并且在安排我的 25 多个自定义操作以在 AppSearch 之前保存 CMD 行提供的属性时遇到了问题,因为记住模式依赖于 CMD提供的属性值在 AppSearch 之前保存。我收到的错误消息如下所示:
错误 LGHT0179:InstallUISequence 表包含一个操作 'SaveCmdLine_SERV ICE_ACCOUNT' 不能有唯一的序列 编号,因为它安排在操作“AppSearch”之前或之后。 在此操作之前或之后没有足够的空间来分配 唯一的序列号。请安排其中一项操作 以不同的方式,使其处于具有更多序列的位置 可用的号码。请注意,序列号必须是 1 - 32767(含)范围内的整数。
在检查使用 Orca 编译的 MSI 时,AppSearch 的序列为 50。很难找到有关 MSI 序列表的文档(如果有的话),但根据来自this SO quesion 的链接,AppSearch 的序列应该为 400。解决方法我正在使用的是在使用 Orca 检查生成的 MSI 时将 AppSearch 转移到更大的序列号。看起来不错。
但是 50 是一个很低的数字,为什么设置为 50 而不是 400?它是由 Windows Installer API 还是 Wix 控制的?
更新: 将 AppSearch 更新到序列 400 后,我遇到了一个问题,即使用以下代码使用引导程序要求 .Net 4.5 将失败。
<Chain>
<PackageGroupRef Id="NetFx451Redist" />
<MsiPackage Name="$(var.OutputName).msi" SourceFile="MyInstaller.msi" DisplayInternalUI="yes" />
</Chain>
经过检查,看起来我必须将 LaunchConditions 从序列号 100 安排到序列号 600,以便它仍然在 AppSearch 之后发生,因此检查 .Net 框架预请求仍然有效。我想这可能是 WiX 这么早安排AppSearch 的原因之一。
【问题讨论】:
-
序列号的实际值无关紧要,它必须大于零,当然顺序很重要(值-4..0有特殊含义)。 See the docs。所以我觉得 WiX 的“数量不足”有点奇怪。
-
@zett42,我保存 CMD 行属性值的方式依赖于计划在 AppSearch 之前保存每个属性的自定义操作(因为之后属性值可能会被为该属性保存的注册表值覆盖。因此,
AppSearch序列为 50,“FindRelatedProducts”为 25,只剩下 24 个可用的插槽。 -
您是否尝试在
InstallExecuteSequence中插入<AppSearch Sequence="n"/>?确保将“n”设置为仅与下一个标准动作的序列索引减 1 一样高。 -
@zett42,谢谢你,我不知道你可以这么容易地自己定义序列号。它比我目前的解决方案更好。
-
我还提出了另一个相关问题,但不幸的是,我正在寻找的解决方案可能不容易定义为其他 SO 问题。但同样,我真正要寻找的只是指示或解释。对于任何有兴趣回答的人。 stackoverflow.com/questions/52105942/…
标签: wix windows-installer