这不是一个好问题,但是请耐心等待一段时间。
从角度来看,我正在使用Remember Pattern保存CMD行输入属性值,并遇到了一个问题,即计划我的25个以上自定义操作以在AppSearch之前保存CMD行提供的属性,因为Remember Pattern依赖在CMD上提供的属性值保存在AppSearch之前。我收到的错误消息如下:
错误LGHT0179:InstallUISequence表包含一个操作 “ SaveCmdLine_SERV ICE_ACCOUNT”不能具有唯一的序列 数字,因为它是在操作“ AppSearch”之前或之后安排的。 在此操作之前或之后,没有足够的空间来分配 唯一的序列号。请安排其中一项行动 不同的,以便它会处于更多顺序的位置 可用数字。请注意,序列号必须为 整数,范围为1-32767(含)。
在检查使用Orca编译的MSI时,AppSearch的Sequence为50。很难找到关于MSI Sequence表的文档(如果有的话),但是根据this SO quesion的链接,AppSearch的Sequence应该为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
之后发生,以便check .Net框架的预先请求仍然有效。我猜这可能是AppSearch
被WiX这么早计划的原因之一。
答案 0 :(得分:2)
WiX默认标准操作序列号 :我怀疑-不能确定地确认-WiX使用了以下XML文件( {{1 }} )以定义默认的标准操作序列编号):https://github.com/wixtoolset/wix3/blob/develop/src/tools/wix/Data/actions.xml(这是存储在github.com上的WiX源)。
提取 :内联您明确要求的内容:
actions.xml
答案 :所以我认为答案是WiX定义了此源文件中大多数标准操作的顺序( <actions xmlns="http://schemas.microsoft.com/wix/2003/04/actions">
<..>
<action name="AppSearch" sequence="50" InstallExecuteSequence="yes" InstallUISequence="yes" />
<..>
</actions>
)。该命令与MSI API完全没有关系-但是只有少数其他配置才有意义或被允许。因此,MSI API施加了适用的限制。这些标准动作必须以标准顺序相互关联-有一定的余地。
例外 :标准动作RemoveExistingProducts
可以移到几个不同的位置-以“回旋”为例。上述( actions.xml
)文件缺少该特定的标准操作-可能是由于这个原因:它没有固定的默认位置。它至少有3个可配置的。我认为它是在链接器代码( actions.xml
)中动态处理的。
让自己滚动吗? :我相信用不同的标准操作序列号默认方案编译您自己的WiX二进制文件不是没有可能,但是编译WiX并不小任务。
WiX 4 :请注意,在WiX 4中,相应的源文件似乎位于:https://github.com/wixtoolset/wix4/blob/develop/src/libs/WixToolset.Data/Data/actions.xml
从MSI SDK :
在下面的链接中描述了对标准动作序列的限制。似乎AppSearch的排序是不受限制的-下面的第三个链接):