Wix Burn DetectRelatedMsiPackage во время обновления не срабатывает, когда установка выполняется системой

Я использую Burn v3.11.0.1701. При установке пакета в Windows 10 и Windows Server 2016, созданного с помощью Burn как пользователь, связанные MSI-пакеты успешно обнаруживаются с помощью обратного вызова DetectRelatedMsiPackage. Когда пакет устанавливается из системной учетной записи, часть записи C++ не может полностью обнаружить связанный пакет msi и поэтому не вызывает событие DetectRelatedMsiPackage. В результате управляемый загрузчик не может обнаружить ранее установленные функции.

Когда я запускаю его как системную учетную запись, я получаю следующие строки в журнале:

i000: Bootstrapper is ran by NT AUTHORITY\SYSTEM
i000: Bootstrapper is running is Authenticated = True
i000: Bootstrapper is running as Anonymous = False
i000: Bootstrapper is running as Guest = False
i000: Bootstrapper is running as System = True
i000: Bootstrapper is running as an Administrator = True
i000: Bootstrapper is running Elevated = 1
i100: Detect begin, 1 packages
i102: Detected related bundle: {291900bb-7cdb-486a-8ddb-372aa1df1fe4}, type: Upgrade, scope: PerMachine, version: 1.0.1.3, operation: None
e152: Detected related package: {FAB36CB5-330A-48F0-96D5-741B2544367B}, but failed to read language: , error: 0x6ff5a4
i000: onDetectMsiFeature - [ServerUpdateMsi] [Feature1] [Local]
i000: onDetectMsiFeature - [ServerUpdateMsi] [CompleteFeature] [Local]
i000: onDetectMsiFeature - [ServerUpdateMsi] [Feature2] [Local]

Когда я запускаю его как пользователь, я получаю следующие строки в журнале:

i000: Bootstrapper is ran by ABC\KHenderson
i000: Bootstrapper is running is Authenticated = True
i000: Bootstrapper is running as Anonymous = False
i000: Bootstrapper is running as Guest = False
i000: Bootstrapper is running as System = False
i000: Bootstrapper is running as an Administrator = True
i000: Bootstrapper is running Elevated = 1
i100: Detect begin, 1 packages
i102: Detected related bundle: {291900bb-7cdb-486a-8ddb-372aa1df1fe4}, type: Upgrade, scope: PerMachine, version: 1.0.1.3, operation: MajorUpgrade
i103: Detected related package: {FAB36CB5-330A-48F0-96D5-741B2544367B}, scope: PerMachine, version: 1.0.1.3, language: 1033 operation: MajorUpgrade
i000: Detected existing related package ServerUpdateMsi (product: {FAB36CB5-330A-48F0-96D5-741B2544367B}) at version 1.0.1.3, which will be MajorUpgrade
i000: Migrating features for MajorUpgrade of Package ServerUpdateMsi
i000: Migrating feature Feature1 of Package ServerUpdateMsi - marking as Present
i000: Migrating feature CompleteFeature of Package ServerUpdateMsi - marking as Present
i000: Migrating feature Feature2 of Package ServerUpdateMsi - marking as Present
i000: onDetectMsiFeature - [ServerUpdateMsi] [Feature1] [Absent]
i000: onDetectMsiFeature - [ServerUpdateMsi] [CompleteFeature] [Absent]
i000: onDetectMsiFeature - [ServerUpdateMsi] [Feature2] [Absent]

Я ожидаю, что обнаружение связанных MSI-пакетов будет вести себя одинаково независимо от того, какой пользователь запускает установку.

Я связал урезанную версию моего решения. Я подтвердил, что в цепочке может быть один пакет MSI, и проблема все еще проявляется. https://1drv.ms/u/s!AiNxIEp_pbmayH3qyadKtSNtqqRN

Моя связка выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

  <?ifndef BuildVersion ?>
  <?define BuildVersion="1.0.0.0"?>
  <?endif?>
  <?ifndef ProductManufacturer?>
  <?define ProductManufacturer="Acme Bricks"?>
  <?endif?>

  <?define BuildVersionLong="$(var.BuildVersion)"?>
  <?define CustomBootstrapSourceDirectory="..\CustomBootstrap"?>

  <Bundle Name="Install Tester Bootstrapper"
          Version="$(var.BuildVersion)"
          Manufacturer="$(var.ProductManufacturer)"
          UpgradeCode="B1964223-90D9-4DD9-AF29-88FC026D59E6">

    <WixVariable Id="WixMbaPrereqPackageId" Value="..." />
    <WixVariable Id="WixMbaPrereqLicenseUrl" Value="..." />

    <Variable Name="OVERRIDECODE" Type="string" Value="OVERRIDECODE" bal:Overridable="yes" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"/>
    <Variable Name="PackageVersion" Type="string" Value="(Not set yet)"/>

    <BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost">
      <Payload SourceFile="$(var.CustomBootstrapSourceDirectory)\BootstrapperCore.config" />
      <Payload SourceFile="$(var.CustomBootstrapSourceDirectory)\bin\x64\Release\CustomBootstrap.dll"/>
      <Payload SourceFile="$(var.CustomBootstrapSourceDirectory)\bin\x64\Release\Microsoft.Deployment.WindowsInstaller.dll" />
      <Payload SourceFile="$(var.CustomBootstrapSourceDirectory)\bin\x64\Release\BootstrapperCore.dll" />
    </BootstrapperApplicationRef>

    <Chain>
      <MsiPackage Id="ServerUpdateMsi" SourceFile="..\WixPlay_11\bin\Release\WixPlay_11.msi" EnableFeatureSelection ="yes" Permanent="no"  Vital="yes" Compressed="yes"     DisplayInternalUI="no" Visible="no">
        <MsiProperty Name="OVERRIDECODE" Value="[OVERRIDECODE]"/>
      </MsiPackage>
    </Chain>
  </Bundle>
</Wix>

Мое определение MSI выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

  <?ifndef BuildVersion ?>
    <?define BuildVersion="1.0.0.0"?>
  <?endif?>

  <Product Id="*"
           Name="Install Tester MSI"
           Language="1033"
           Version="$(var.BuildVersion)"
           Manufacturer="Acme Bricks"
           UpgradeCode="cc6fae0c-f4bd-4ca6-8726-44e801ab7719">

    <Package InstallerVersion="300" Compressed="yes" InstallScope="perMachine" Platform="x64" />

    <Media Id="1" Cabinet="Acme.Wixplay3.cab" EmbedCab="yes" />

    <Upgrade Id="cc6fae0c-f4bd-4ca6-8726-44e801ab7719">
      <UpgradeVersion Minimum="$(var.BuildVersion)"
                      IncludeMinimum="no"
                      OnlyDetect="yes"
                      Language="1033"
                      Property="NEWPRODUCTFOUND"
      />
      <UpgradeVersion Minimum="0.0.0.0"
                      IncludeMinimum="yes"
                      Maximum="$(var.BuildVersion)"
                      IncludeMaximum="no"
                      Language="1033"
                      Property="UPGRADEFOUND"
                      MigrateFeatures="yes"
      />
    </Upgrade>

    <Property Id="OVERRIDECODE" Value="(None)" />

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFiles64Folder">
        <Directory Id="CompanyFilesFolder" Name="ACME">
          <Directory Id="INSTALLLOCATION" Name="WixPlay3">
            <Component Id="PlaceHolderComponent" Guid="A24BAAB6-ABD7-4F3E-9EBE-1E45BD14BDAE">
              <File Id="PlaceHolderFile" Name="PlaceHolder.txt" Source="TextFile1.txt" KeyPath="yes"/>
            </Component>
            <Component Id="PlaceHolderComponent1" Guid="BEC6F1C4-4561-451C-ACDC-C692239738B4">
              <File Id="PlaceHolderFile1" Name="Feature1.txt" Source="TextFile1.txt" KeyPath="yes"/>
            </Component>
            <Component Id="PlaceHolderComponent2" Guid="1CE33163-41B8-4C0F-926F-EE0677E29598">
              <File Id="PlaceHolderFile2" Name="Feature2.txt" Source="TextFile1.txt" KeyPath="yes"/>
            </Component>
          </Directory>
        </Directory>
      </Directory>
    </Directory>

    <Feature Id="CompleteFeature" Title="Acme Complete Feature" Level="1" Display="expand" AllowAdvertise="no">
      <ComponentRef Id="PlaceHolderComponent"/>
      <Feature Id="Feature1" Title="Feature1" Level="1" AllowAdvertise="no">
        <ComponentRef Id="PlaceHolderComponent1"/>
      </Feature>
      <Feature Id="Feature2" Title="Feature2" Level="1" AllowAdvertise="no">
        <ComponentRef Id="PlaceHolderComponent2"/>
      </Feature>
    </Feature>

    <CustomAction Id="PreventDowngrading" Error="Newer version already installed." />


    <InstallExecuteSequence>
      <RemoveExistingProducts After="InstallExecute" />
      <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
    </InstallExecuteSequence>

    <InstallUISequence>
      <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
    </InstallUISequence>

  </Product>
</Wix>

Я надеюсь, что что-то простое - это все, что нужно сделать, и просто нужны люди с большим опытом, чтобы указать мне на эту проблему.

Заранее благодарим за любую помощь, которую вы можете предоставить.

0 ответов

Другие вопросы по тегам