代码之家  ›  专栏  ›  技术社区  ›  Paul L

AppSearch的序列号是50-对吧?

  •  2
  • Paul L  · 技术社区  · 6 年前

    这个问题问得不好,但请耐心听我说。

    Remember Pattern 要保存CMD行输入属性值,并且遇到了一个问题,需要计划25+个自定义操作以在AppSearch之前保存CMD行提供的属性,因为记住模式依赖于AppSearch之前保存的CMD提供的属性值。我收到的错误消息如下所示:

    错误LGHT0179:InstallUISequence表包含操作 “SaveCmdLine\u SERV ICE\u ACCOUNT”不能具有唯一序列 编号,因为它是在操作“AppSearch”之前或之后安排的。 唯一序列号。请安排一项行动 以使它处于一个更有序的位置 范围为1-32767(含)的整数。

    this SO quesion ,AppSearch的序列应为400。我使用的解决方法是在使用Orca检查generate MSI时将AppSearch移到一个更大的序列号。看起来还可以。

    但是50是一个很低的数字,为什么它被设置为50而不是400?它是由Windows安装程序API或Wix控制的吗?

    在将AppSearch更新到sequence 400之后,我遇到了一个问题,即使用下面的代码使用bootstrap来要求.NET4.5将失败。

      <Chain>
      <PackageGroupRef Id="NetFx451Redist" />
      <MsiPackage Name="$(var.OutputName).msi" SourceFile="MyInstaller.msi" DisplayInternalUI="yes" />
    </Chain>
    

    经检查,看来我得安排时间了 LaunchConditions 从序列号100到序列号600,这样在 AppSearch ,使check.Net framework预请求仍在工作。我想这可能是原因之一 应用程序搜索 WiX安排得这么早。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Stein Åsmul    6 年前

    WiX默认标准操作序列号 :我怀疑WiX使用了以下XML文件,但无法确定( actions.xml https://github.com/wixtoolset/wix3/blob/develop/src/tools/wix/Data/actions.xml (这是存储在 github.com

    提取

    <actions xmlns="http://schemas.microsoft.com/wix/2003/04/actions">
      <..>
        <action name="AppSearch" sequence="50" InstallExecuteSequence="yes" InstallUISequence="yes" />
      <..>
    </actions>
    

    回答 :所以我认为答案是WiX定义了这个源文件中大多数标准操作的顺序( ). 这个命令与MSIAPI完全没有任何关系,但只有少数其他配置是合理的或允许的。因此,MSIAPI施加了适用的限制。这些标准的行动必须以标准的顺序相互关联——有一定的回旋余地。

    例外情况 RemoveExistingProducts 可以移动到几个不同的位置-作为一个例子的“余地”。上面提到的标准动作是不存在的( 操作.xml light.exe ).

    你自己滚? :我相信用不同的标准操作序列号默认方案编译自己的WiX二进制文件并非不可能,但编译WiX不是一项小任务。

    :请注意,在WiX 4中,相应的源文件似乎位于: https://github.com/wixtoolset/wix4/blob/develop/src/libs/WixToolset.Data/Data/actions.xml


    从MSI SDK

    下面的链接中描述了对标准操作顺序的限制。看来 AppSearch 排序不受限制-下面的第三个链接):