AppSearch的序列号为50-对吗?

时间:2018-08-30 05:22:57

标签: wix windows-installer

这不是一个好问题,但是请耐心等待一段时间。

从角度来看,我正在使用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这么早计划的原因之一。

1 个答案:

答案 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的排序是不受限制的-下面的第三个链接):