Skip to content

Loading Lottie library causes the app to crash when it is installed from the Microsoft Store #526

Open
@atiyka

Description

@atiyka

I'm building a WPF application and using Lottie in an Xaml Islands custom component.

When packaging the desktop bridge project, I receive an App manifest validation error with the following content:

Validation error. error 80080204: App manifest validation error: Line 315, Column 27, Reason: The field "*[local-name()='Extensions']/*[local-name()='Extension']/*[local-name()='InProcessServer']/*[local-name()='ActivatableClass']" with value "Microsoft.Toolkit.Uwp.UI.Lottie.LottieVisualSource" must only be declared once. A duplicate exists on Line 64, Column 27.

The mentioned lines and the corresponding tag in the AppxManifest has the following content:

<Extension Category="windows.activatableClass.inProcessServer">
  <InProcessServer>
    <Path>UILibrary.dll</Path>
*64*    <ActivatableClass ActivatableClassId="Microsoft.Toolkit.Uwp.UI.Lottie.LottieVisualSource" ThreadingModel="both" />
    <ActivatableClass ActivatableClassId="Microsoft.UI.Xaml.Markup.ReflectionXamlMetadataProvider" ThreadingModel="both" />
  </InProcessServer>
</Extension>
...
<Extension Category="windows.activatableClass.inProcessServer">
  <InProcessServer>
    <Path>CLRHost.dll</Path>
*315*    <ActivatableClass ActivatableClassId="Microsoft.Toolkit.Uwp.UI.Lottie.LottieVisualSource" ThreadingModel="both" />
  </InProcessServer>
</Extension>

From this workaround, I added the following lines to the .wapproj file:

<Target Name="_RemoveWinMDFromAppxManifest" BeforeTargets="_GenerateCurrentProjectAppxManifest">
    <ItemGroup>
      <_AppxWinmdFilesToHarvest Remove="@(_AppxWinmdFilesToHarvest)" />
    </ItemGroup>
  </Target>

With this, I could achieve to not to duplicate these dependencies in the AppxManifest.xaml when creating the build, so the issue has gone and I could create the package for the Store submission.

I could upload to the store, it is published, but when I install it from the store, the app crashes when it should display a lottie animation with the following exception:

* When the Lottie is initalized from Xaml:
(0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.
   at Windows.UI.Xaml.UIElement.Measure(Size availableSize)
   at Microsoft.Toolkit.Uwp.UI.Controls.WrapPanel.MeasureOverride(Size availableSize)

* Exception, when it is initialized from the code behind:
Cannot create instance of type 'Microsoft.Toolkit.Uwp.UI.Lottie.LottieVisualSource' [Line: 0 Position: 0]

The interesting part is that the animation is played when I install the exact same build from the local package. So, seemingly the Store modifies the package during the publish procedure, but what can I do other way?

I'm using Lottie version 7.1.1

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions