MSIX Dependencies

Iron Contributor

Hi,

I've tried to create an MSIX package which has a dependency for another MSIX package. As far as i know, if you manually deploy an MSIX package that has a dependency, the dependency must be manually installed before, because the main MSIX package does not know where the dependency is (makes sense).

So i started to make an .appinstaller file which contained the <Dependencies> element so that the installation could first install the dependency, and afterwards the main MSIX. Inside the element, the URI is set to an UNC path.

When i try to install the package via the .appinstaller file, the following error occurs:

1.png

Looking through the docs about this, i can see that my package name is declared correctly. However, my appinstaller file was missing the dependency ProcessorAchitecture, which was X64 (in some cases, i see that the AppInstaller is looking for the _native version by default).

After placing the ProcessorAchitecture to X64 in the .appinstaller, i tried the installation again, but this time with the following error:
2.png

I then went and manually tried to install the dependency first (from my local pc), and then the MSIX package (without the .appinstaller file).

The dependency is installed on the system, as the Get-AppxLog suggests:
09/11/20 - Mon 9:45:32 PM 613 Performance summary of Deployment Add operation on Package
Caphyon.SampleApplication_2.0.0.0_x64__4crez2cfzhms2:
Overall time: 5329 ms
Gap: 16 ms
Enqueue cost: 109 ms
Dequeue delay: 0 ms
Gap: 16 ms
Bundle processing cost: 0 ms
Indexing cost: 63 ms
Resolve dependency cost: 15 ms
Gap: 16 ms
Check approval cost: 297 ms
Evaluation cost: 2843 ms
Hardlinking evaluation cost: 2750 ms
Stage required cost: 79 ms
Flushing and closing files cost: 0 ms
Gap: 15 ms
Machine register cost: 63 ms
Stage user data cost: 0 ms
Gap: 31 ms
Registration cost: 359 ms
Gap: 16 ms
Repository commit transaction cost: 1328 ms
Gap: 31 ms
Data flush cost: 0 ms
Post DeStage repository commit transaction cost: 0 ms
Remaining cost: 32 ms

But when i try to install the main package it appears it doesn't detect the dependency:
3.png

The AppxManifest file seems to be ok according to the docs:
<Dependencies>
<TargetDeviceFamily MaxVersionTested="10.0.19041.0" MinVersion="10.0.17763.0" Name="Windows.Desktop"/>
<PackageDependency MinVersion="2.0.0.0" Name="Caphyon.SampleApplication" Publisher="CN=TestCert_2020-3-25_14-56-53"/>
</Dependencies>

The dependency has a publisher specified and it's signed, so it doesn't fall in the framework category, and the dependency version is equal to the minimum version specified here.

In the end, i managed to install the main MSIX and dependency in the following order:
1. Manually install the dependency first
2. Install the main app via the .appinstaller file from the URI share

Somehow, it then detects that the dependency is installed. If i try to uninstall the main MSIX package and leave the MSIX dependency on the system, and then try to reinstall the main MSIX manually from my PC, the same error code as mentioned earlier appears.

I couldn't find any additional error codes other than 0x80070057, which is specified here that:

 

"One or more arguments are not valid If you check the AppXDeployment-Server event log and see the following event; While installing the package, the system failed to register the windows.repositoryExtension extension due to the following error: The parameter is incorrect.
You may get this error if the manifest elements DisplayName or Description contain characters disallowed by Windows firewall; namely | and all , due to which Windows fails to create the AppContainer profile for the package. Please remove these characters from the manifest and try installing the package. "

Am i missing something here?

3 Replies

Hi @alexmarin89,

 

Would you please share your *.msix applications that are causing this error.

 

Thank you!

Hi @Roy_MacLachlan,

 

I've placed the msix packages and appinstaller file in a zip and uploaded it here.

 

Thank you

@alexmarin89 

 

The dependency field is similar to the appxmanifest and intended for framework packages.  Looking at the files it appears you are trying to leverage the dependency field to chain install multiple main msix packages, which is invalid for that field.

 

John Vintzel (@jvintzel)
PM Lead, MSIX