winget-cli icon indicating copy to clipboard operation
winget-cli copied to clipboard

Failure to install 1.4GB appxbundle

Open Jaifroid opened this issue 2 years ago • 34 comments

Brief description of your issue

When I try to install the latest 1.4GB "WikiMed by Kiwix" package (winget install kiwix.wikimed), the install fails silently on both Windows 10 and Windows 11. Previously, with a smaller 1.3GB bundle, the install works fine. Is there a size limit for appxbundle packages? If I download the archive from the exact same link that is shown by running winget show kiwix.wikimed, I can install the app successfully by launching the downloaded file.

Steps to reproduce

Run winget show kiwix.wikimed to check that version 1.9.2 will be installed. Then run winget install kiwix.wikimed.

Expected behavior

WikiMed should be installed. Winget should output these messages:

Successfully verified installer hash
Starting package install...
  ██████████████████████████████  100%
Successfully installed

Actual behavior

Winget fails silently. It shows:

Found WikiMed by Kiwix [Kiwix.WikiMed] Version 1.9.2.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
PS C:\Users\jaifroid>

Environment

Windows Package Manager (Preview) v1.2.3411-preview
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.22000.527
Package: Microsoft.DesktopAppInstaller v1.17.3411.0

Jaifroid avatar Mar 01 '22 14:03 Jaifroid

Can you post the log file from the attempt? Maybe there's an exception happening that isn't showing up on the console for some reason.

(winget --info to see where your logs are)

jedieaston avatar Mar 01 '22 14:03 jedieaston

Here's the log. I can't see any error in it...

WinGet-2022-03-01-14-10-37.203.log

Jaifroid avatar Mar 01 '22 15:03 Jaifroid

I ran it with --verbose-logs, the relevant last lines:

2022-03-01 10:58:21.223 [CLI ] Installer hash verified
2022-03-01 10:58:21.432 [CORE] Starting StagePackageAsync operation #1: https://github.com/kiwix/kiwix-js-windows/releases/download/v1.9.2-WikiMed/KiwixWebAppWikiMed_1.9.2.0_AnyCPU.appxbundle
2022-03-01 10:58:21.433 [CORE] Begin waiting for operation #1
2022-03-01 10:58:21.433 [CORE] Begin blocking for operation #1
2022-03-01 10:58:21.436 [CORE] Deployment operation #1: Deployment operation failed.
2022-03-01 10:58:21.436 [FAIL] D:\a\_work\1\s\external\pkg\src\AppInstallerCommonCore\Deployment.cpp(54)\WindowsPackageManager.dll!00007FFCFEC3FD5A: (caller: 00007FFCFEC40ACF) Exception(1) tid(19a0) 80070002 The system cannot find the file specified.

    Msg:[Operation failed: Deployment operation failed.] 

2022-03-01 10:58:21.436 [CORE] Starting RemovePackage operation #2: Kiwix.WikiMed_1.9.2.0_neutral_~_qwjmsdmcnwx12
2022-03-01 10:58:21.439 [CORE] Begin waiting for operation #2
2022-03-01 10:58:21.440 [CORE] Begin blocking for operation #2
2022-03-01 10:58:21.458 [CORE] Deployment operation #2: Windows cannot remove Kiwix.WikiMed_1.9.2.0_neutral_~_qwjmsdmcnwx12 because the current user does not have that package installed. Use Get-AppxPackage to see the list of packages installed.
2022-03-01 10:58:21.458 [FAIL] D:\a\_work\1\s\external\pkg\src\AppInstallerCommonCore\Deployment.cpp(54)\WindowsPackageManager.dll!00007FFCFEC3FD5A: (caller: 00007FFCFEC41146) Exception(2) tid(19a0) 80073CF1 Package was not found.

    Msg:[Operation failed: Windows cannot remove Kiwix.WikiMed_1.9.2.0_neutral_~_qwjmsdmcnwx12 because the current user does not have that package installed. Use Get-AppxPackage to see the list of packages installed.] 

2022-03-01 10:58:21.458 [FAIL] D:\a\_work\1\s\external\pkg\src\AppInstallerCommonCore\Deployment.cpp(124)\WindowsPackageManager.dll!00007FFCFED9B8FE: (caller: 00007FFCFEC411E3) LogHr(1) tid(19a0) 80073CF1 Package was not found.

    Msg:[D:\a\_work\1\s\external\pkg\src\AppInstallerCommonCore\Deployment.cpp(54)\WindowsPackageManager.dll!00007FFCFEC3FD5A: (caller: 00007FFCFEC41146) Exception(2) tid(19a0) 80073CF1 Package was not found.

    Msg:[Operation failed: Windows cannot remove Kiwix.WikiMed_1.9.2.0_neutral_~_qwjmsdmcnwx12 because the current user does not have that package installed. Use Get-AppxPackage to see the list of packages installed.] 
] 

2022-03-01 10:58:21.596 [CLI ] MSIX installer failed: 2147942402
2022-03-01 10:58:21.596 [CLI ] Terminating context: 0x80070002 at D:\a\_work\1\s\external\pkg\src\AppInstallerCLICore\Workflows\InstallFlow.cpp:162

It's trying to do an upgrade but it can't?

jedieaston avatar Mar 01 '22 16:03 jedieaston

Hmm. That's strange. Let me see if I can reproduce those messages.

Jaifroid avatar Mar 01 '22 16:03 Jaifroid

OK, I'm not getting those upgrade failures. Mine just seems to proceed normally and then bombs out with no further message at Select installer language: as if it were asking for user interaction (see log extract below). However, the msix app installer doesn't ask the user for a language. As a check, I tried to install a previous package that worked with winget install -v 1.8.9.0 kiwix.wikimed. This now exhibits the exact same symptoms. Since that is a known good package, and since both of these packages passed validation (I don't know if they include an installation check), and if the validator is using an older version of winget, then it would point to a breaking change that has happened recently in winget.

2022-03-01 16:20:05.435 [YAML] Detected UTF-8
2022-03-01 16:20:05.436 [CLI ] Manifest fields: Name [WikiMed by Kiwix], Version [1.9.2.0]
2022-03-01 16:20:05.437 [CLI ] Locale Comparator created with Required Locales: [] , Preferred Locales: [en-GB, en-AU, es-MX, es-CO, es-ES, el, fr-FR]
2022-03-01 16:20:05.437 [CLI ] Starting installer selection.
2022-03-01 16:20:05.437 [CLI ] Installer [Neutral,msix,Unknown,] is current best choice
2022-03-01 16:20:05.437 [CLI ] Completed installer selection.
2022-03-01 16:20:05.437 [CLI ] Selected installer Architecture: 0
2022-03-01 16:20:05.437 [CLI ] Selected installer URL: https://github.com/kiwix/kiwix-js-windows/releases/download/v1.9.2-WikiMed/KiwixWebAppWikiMed_1.9.2.0_AnyCPU.appxbundle
2022-03-01 16:20:05.437 [CLI ] Selected installer InstallerType: msix
2022-03-01 16:20:05.437 [CLI ] Selected installer Scope: Unknown
2022-03-01 16:20:05.437 [CLI ] Selected installer Language: 

Jaifroid avatar Mar 01 '22 16:03 Jaifroid

This is what I get on the previous version -

C:\Users\WDAGUtilityAccount>winget install kiwix.wikimed --source winget --verbose-logs
Found WikiMed by Kiwix [Kiwix.WikiMed] Version 1.9.2.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
An unexpected error occurred while executing the command:
0x80072eff : unknown error

C:\Users\WDAGUtilityAccount>winget --info
Windows Package Manager v1.1.12653
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.19041.1526
Package: Microsoft.DesktopAppInstaller v1.16.12653.0

Logs: %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir

Links
---------------------------------------------------------------------------
Privacy Statement   https://aka.ms/winget-privacy
License Agreement   https://aka.ms/winget-license
Third Party Notices https://aka.ms/winget-3rdPartyNotice
Homepage            https://aka.ms/winget
Windows Store Terms https://www.microsoft.com/en-us/storedocs/terms-of-sale
2022-03-01 17:10:08.726 [CLI ] Manifest fields: Name [WikiMed by Kiwix], Version [1.9.2.0]
2022-03-01 17:10:08.727 [CLI ] Locale Comparator created with Required Locales: [] , Preferred Locales: [en-US]
2022-03-01 17:10:08.727 [CLI ] Starting installer selection.
2022-03-01 17:10:08.727 [CLI ] Installer [Neutral,Msix,Unknown,] is current best choice
2022-03-01 17:10:08.727 [CLI ] Completed installer selection.
2022-03-01 17:10:08.727 [CLI ] Selected installer Architecture: 0
2022-03-01 17:10:08.727 [CLI ] Selected installer URL: https://github.com/kiwix/kiwix-js-windows/releases/download/v1.9.2-WikiMed/KiwixWebAppWikiMed_1.9.2.0_AnyCPU.appxbundle
2022-03-01 17:10:08.727 [CLI ] Selected installer InstallerType: Msix
2022-03-01 17:10:08.727 [CLI ] Selected installer Scope: Unknown
2022-03-01 17:10:08.727 [CLI ] Selected installer Language: 
2022-03-01 17:11:10.995 [FAIL] AppInstallerCLI.exe!00007FF6D52B0672: LogHr(1) tid(1714) 80072EFF 
2022-03-01 17:11:10.997 [FAIL] AppInstallerCLI.exe!00007FF6D52C61F2: ReturnHr(1) tid(1588) 80072EFF     Msg:[winrt::hresult_error: The text associated with this error code could not be found.] 

2022-03-01 17:11:11.000 [FAIL] D:\a\_work\1\s\external\pkg\src\AppInstallerCommonCore\MsixInfo.cpp(150)\AppInstallerCLI.exe!00007FF6D5175837: (caller: 00007FF6D5125B49) Exception(1) tid(1588) 80072EFF 
2022-03-01 17:11:11.000 [CLI ] Caught wil::ResultException: D:\a\_work\1\s\external\pkg\src\AppInstallerCommonCore\MsixInfo.cpp(150)\AppInstallerCLI.exe!00007FF6D5175837: (caller: 00007FF6D5125B49) Exception(1) tid(1588) 80072EFF 

Edit: I think it might be an installer type mismatch. Submitted a PR over at pkgs

Trenly avatar Mar 01 '22 23:03 Trenly

Thank you for testing. v1.9.2.0 is the current version in fact, but the same errors are happening on the previous version as well (v1.8.9.0). Since this definitely used to work, and since everyone who is trying it now is getting errors, it would suggest a problem with winget. I wonder if it's related to #1981. This is in fact an example of a neutral package.

I've also just tested winget install -v 1.8.4.0 kiwix.wikimed. Same error. As I'm the developer of this app, and as I've very definitely tested installation of all these past versions at the time they were built, this is looking very much like something is broken with a recent update to winget.

@Trenly Just saw your edit. Are you suggesting that the package manifests need to be changed?

Jaifroid avatar Mar 01 '22 23:03 Jaifroid

Thank you for testing. v1.9.2.0 is the current version in fact, but the same errors are happening on the previous version as well (v1.8.9.0). Since this definitely used to work, and since everyone who is trying it now is getting errors, it would suggest a problem with winget. I wonder if it's related to #1981. This is in fact an example of a neutral package.

I've also just tested winget install -v 1.8.4.0 kiwix.wikimed. Same error. As I'm the developer of this app, and as I've very definitely tested installation of all these past versions at the time they were built, this is looking very much like something is broken with a recent update to winget.

@Trenly Just saw your edit. Are you suggesting that the package manifests need to be changed?

Yes, I think it is a package manifest issue. I changed the InstallerType to appx and got this result -

Found WikiMed by Kiwix [Kiwix.WikiMed] Version 1.9.2.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Successfully verified installer hash
Starting package install...
  ██████████████████████████████  100%
Successfully installed

Trenly avatar Mar 01 '22 23:03 Trenly

OK, interesting, thank you! I wonder why it worked before. The manifests were auto-generated with the manifest publishing tool, so the error could be on that side, or something that has been firmed up recently.

Jaifroid avatar Mar 01 '22 23:03 Jaifroid

@Trenly I've just seen the multiple PRs on the previous and current versions. Thank you very much for submitting these!

Jaifroid avatar Mar 01 '22 23:03 Jaifroid

It seems the pipeline isn't liking them though -

2022-03-01 15:35:33.762 [CLI ] WinGet invoked with arguments: 'install' '--manifest' 'D:\TRANSFER\3b34ff1b-b899-ec11-9501-000d3a9ede8b\Manifest.yaml' '--accept-package-agreements'
2022-03-01 15:35:33.762 [CLI ] Found subcommand: install
2022-03-01 15:35:33.762 [CLI ] Leaf command to execute: root:install
2022-03-01 15:35:33.776 [CLI ] Executing command: install
2022-03-01 15:35:33.784 [CLI ] Manifest fields: Name [WikiMed by Kiwix], Version [1.9.2.0]
2022-03-01 15:35:33.787 [CLI ] Starting installer selection.
2022-03-01 15:35:33.788 [CLI ] Completed installer selection.
2022-03-01 15:36:36.722 [FAIL] AppInstallerCLI.exe!00007FF7BBD60672: LogHr(1) tid(1248) 80072EFF 
2022-03-01 15:36:36.731 [FAIL] AppInstallerCLI.exe!00007FF7BBD761F2: ReturnHr(1) tid(d10) 80072EFF     Msg:[winrt::hresult_error: The text associated with this error code could not be found.] 

2022-03-01 15:36:36.761 [FAIL] D:\a\_work\1\s\external\pkg\src\AppInstallerCommonCore\MsixInfo.cpp(150)\AppInstallerCLI.exe!00007FF7BBC25837: (caller: 00007FF7BBBD5B49) Exception(1) tid(d10) 80072EFF 
2022-03-01 15:36:36.762 [CLI ] Caught wil::ResultException: D:\a\_work\1\s\external\pkg\src\AppInstallerCommonCore\MsixInfo.cpp(150)\AppInstallerCLI.exe!00007FF7BBC25837: (caller: 00007FF7BBBD5B49) Exception(1) tid(d10) 80072EFF 

Trenly avatar Mar 01 '22 23:03 Trenly

Different version of winget running on pipeline? As I mentioned, all these versions were made with wingetcreate and it (originally) set the installer type to msix. They correctly validate (and test install) in the pipeline with msix, and used to install on users' machines. Mismatched winget versions, or mismatch between latest winget and test scripts, seems a possible explanation.

Jaifroid avatar Mar 01 '22 23:03 Jaifroid

Doubtful. I restarted the one that failed and it seems to have made it further this time, so maybe it was just a fluke. I'll keep an eye on it

Trenly avatar Mar 01 '22 23:03 Trenly

@Jaifroid - Can you try running the install now to see if the issue is resolved?

Trenly avatar Mar 02 '22 01:03 Trenly

I just tried again, and it failed. 😯. Tried again with verbose-logs. It's still showing msix as installer (see line Selected installer InstallerType: msix). My winget did do the usual refresh of the database when I launched the terminal and ran the command, so it should be using latest manifest... It seems to stall (for me) on Installer language, but that may be a coincidence.

2022-03-02 07:13:48.887 [YAML] Detected UTF-8
2022-03-02 07:13:48.888 [CLI ] Manifest fields: Name [WikiMed by Kiwix], Version [1.9.2.0]
2022-03-02 07:13:48.888 [CLI ] Locale Comparator created with Required Locales: [] , Preferred Locales: [en-GB, en-AU, es-MX, es-CO, es-ES, el, fr-FR]
2022-03-02 07:13:48.888 [CLI ] Starting installer selection.
2022-03-02 07:13:48.888 [CLI ] Installer [Neutral,msix,Unknown,] is current best choice
2022-03-02 07:13:48.888 [CLI ] Completed installer selection.
2022-03-02 07:13:48.888 [CLI ] Selected installer Architecture: 0
2022-03-02 07:13:48.888 [CLI ] Selected installer URL: https://github.com/kiwix/kiwix-js-windows/releases/download/v1.9.2-WikiMed/KiwixWebAppWikiMed_1.9.2.0_AnyCPU.appxbundle
2022-03-02 07:13:48.888 [CLI ] Selected installer InstallerType: msix
2022-03-02 07:13:48.889 [CLI ] Selected installer Scope: Unknown
2022-03-02 07:13:48.889 [CLI ] Selected installer Language:

Jaifroid avatar Mar 02 '22 07:03 Jaifroid

FYI I have two other appxbundle apps, Kiwix.KiwixJS and Kiwix.Wikivoyage. Both of these install correctly. This is why I initially posted this issue as a problem with the bundle size, given that this is the largest bundle I have ever published. Both of these use InstallerType: msix. However, since previous (smaller) WikiMed bundles don't install either, it is probably not size.

PS C:\Users\geoff\Source\Repos> winget install kiwix.kiwixjs
Found Kiwix JS [Kiwix.KiwixJS] Version 1.9.0.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Successfully verified installer hash
Starting package install...
  ██████████████████████████████  100%
Successfully installed
PS C:\Users\geoff\Source\Repos> winget install kiwix.wikivoyage
Found Wikivoyage by Kiwix [Kiwix.Wikivoyage] Version 1.9.1.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Successfully verified installer hash
Starting package install...
  ██████████████████████████████  100%
Successfully installed

Jaifroid avatar Mar 02 '22 07:03 Jaifroid

Interesting. Since the update to appx installer type, I'm not able to reproduce the bug anymore on either the latest release or the prerelease version of the client -

Microsoft Windows [Version 10.0.19041.1526]
(c) Microsoft Corporation. All rights reserved.
C:\Users\WDAGUtilityAccount>winget install kiwix.wikimed --source winget --verbose-logs
Found WikiMed by Kiwix [Kiwix.WikiMed] Version 1.9.2.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Successfully verified installer hash
Starting package install...
  ██████████████████████████████  100%
Successfully installed
C:\Users\WDAGUtilityAccount>powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6
PS C:\Users\WDAGUtilityAccount> Add-AppxPackage .\Desktop\Temp\Microsoft.UI.Xaml.2.7.appx
PS C:\Users\WDAGUtilityAccount> Add-AppxPackage .\Desktop\Temp\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
PS C:\Users\WDAGUtilityAccount> winget uninstall wikimed --source winget
Found WikiMed by Kiwix [Kiwix.WikiMed]
Starting package uninstall...
  ██████████████████████████████  100%
Successfully uninstalled
PS C:\Users\WDAGUtilityAccount> exit

C:\Users\WDAGUtilityAccount>winget install kiwix.wikimed --source winget --verbose-logs
Found WikiMed by Kiwix [Kiwix.WikiMed] Version 1.9.2.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Successfully verified installer hash
Starting package install...
  ██████████████████████████████  100%
Successfully installed

WinGet-2022-03-02-09-49-39.136.log WinGet-2022-03-02-09-49-18.542.log WinGet-2022-03-02-09-43-24.630.log

Trenly avatar Mar 02 '22 15:03 Trenly

OK, maybe I tried it too soon before servers had fully updated? Will try again when I get back to PC later and report back.

Jaifroid avatar Mar 02 '22 15:03 Jaifroid

OK, maybe I tried it too soon before servers had fully updated? Will try again when I get back to PC later and report back.

Maybe, but it did say that it selected installertype MSIX in the logs I had too

Trenly avatar Mar 02 '22 16:03 Trenly

@Trenly It now works! Thank you very much for resolving this.

What confuses me is that the manifests for Kiwix.KiwixJS and Kiwix.Wikivoyage both have InstallerType: msix, yet both work. Yet for WikiMed some recent change means that only InstallerType: appx now appears to work. This is inconsistent, but when I next update the other two apps I shall certainly try to normalize on using appx.

There is probably some underlying issue in winget that is causing this inconsistent behaviour, but it is very odd.

In any case I'm happy this is now resolved. Thanks once again!

Jaifroid avatar Mar 02 '22 18:03 Jaifroid

@Trenly Unfortunately, this issue is now re-occurring with the 1.3GB msix/appxbundle of WikiMed. https://github.com/microsoft/winget-pkgs/pull/68684 is throwing the same "unknown error" when I attempt to install locally with winget, and I believe this is what is blocking validation. Moreover, previously validated versions of WikiMed are now failing to install locally with the same error, so the issue must be in winget.

I have tried the previous fix that worked, which was to change the InstallerType from msix to appx for the latest manifest, but that now makes no difference.

An unexpected error occurred while executing the command:
0x80072eff : unknown error
image

Verbose logs are showing the exact same symptoms as we had above back in March. I should add that winget-create always seems to change the installer type from appx to msix, and I hadn't noticed, but it was causing no issues between April and now. Now the issue is resurfacing, which suggests an update to winget has broken installation of this type. Log below is produced after changing the intaller type in the manifest to appx. Same log is now produced if installer type in manifest is msix.

2022-08-04 07:32:38.789 [CLI ] Selected installer URL: https://github.com/kiwix/kiwix-js-windows/releases/download/v2.1.0-WikiMed/KiwixWebAppWikiMed_2.1.0.0_AnyCPU.appxbundle
2022-08-04 07:32:38.789 [CLI ] Selected installer InstallerType: msix
2022-08-04 07:32:38.789 [CLI ] Selected installer Scope: Unknown
2022-08-04 07:32:38.789 [CLI ] Selected installer Language: 
2022-08-04 07:33:40.011 [FAIL] WindowsPackageManager.dll!00007FF952555E12: ReturnHr(1) tid(1d74) 80072EFF     Msg:[winrt::hresult_error: The text associated with this error code could not be found.] 

2022-08-04 07:33:40.013 [FAIL] D:\a\_work\1\s\external\pkg\src\AppInstallerCommonCore\MsixInfo.cpp(311)\WindowsPackageManager.dll!00007FF9523E6FB7: (caller: 00007FF95238E5C0) Exception(1) tid(1d74) 80072EFF 
2022-08-04 07:33:40.014 [CLI ] Caught wil::ResultException: D:\a\_work\1\s\external\pkg\src\AppInstallerCommonCore\MsixInfo.cpp(311)\WindowsPackageManager.dll!00007FF9523E6FB7: (caller: 00007FF95238E5C0) Exception(1) tid(1d74) 80072EFF 

For the avoidance of doubt, downloading the exact same URL (for the installer) in a browser and launching it in Explorer allows the app to be successfully installed with no errors:

image

Jaifroid avatar Aug 04 '22 06:08 Jaifroid

I downloaded the merged manifest created by the Validation pipelines, and I got this error -

--> Installing WinGet
Tip: you can type 'Update-EnvironmentVariables' to update your environment variables, such as after installing a new software.

--> Configuring Winget
Admin setting enabled.

--> Installing the Manifest 6354117b-8a5e-46cb-9940-bd390ccb03cd.yaml

Found WikiMed by Kiwix [Kiwix.WikiMed] Version 2.1.0.0
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Successfully verified installer hash
Starting package install...
Installer failed with exit code: 0x800b0110 : The certificate is not valid for the requested usage.

--> Refreshing environment variables

--> Comparing ARP Entries

PS C:\Users\WDAGUtilityAccount\Desktop\winget-pkgs>

Trenly avatar Aug 05 '22 00:08 Trenly

@Trenly As you know from the last time we discussed this that is a known issue with the Azure validation scripts and does not happen when installing winget on a local machine. This is why my packages have had to have a waived-validation-installation-error tag since around mid June. There is nothing wrong with the Certificate. You can easily verify by downloading the appxbundle in a browser, and checking the certificate chain (context menu -> Properties -> Digital Signatures -> Details) - see screenshot below for this package. The issue here is that on recent local winget installations, winget times out during the hash check and doesn't permit installation of the 1.4GB package. It doesn't even get to certificate-checking stage. Plus the download speed continues to be extremely painful with DO, with the workarounds seemingly broken too.

image

Jaifroid avatar Aug 05 '22 06:08 Jaifroid

And above package installs perfectly fine with the app installer on local machine:

WikiMedInstallation

Jaifroid avatar Aug 05 '22 06:08 Jaifroid

@denelon Given the frequency of problems I'm having with UWP msix/appxbundle validation and installation with winget over the last 6-8 weeks, with all three of my UWP apps, I wonder if it would be useful to have some automated testing of winget builds on this type of bundle (and ideally on very large bundles >1GB)? On top of my validation issues with appxbundles, there now seems to be increasingly poor interaction between winget and GitHub download servers. They hiccup with Delivery Optimization far too frequently (I know that's not WinGet's issue, but there could be better fallback to wininet). It also looks like recent releases of winget have introduced really short timeouts for the hash check. It would be better not to have a timeout -- just let the user cancel with Ctrl-C if an operation is taking too long.

FYI I've never had any issues validating and installing any of my UWP apps (Kiwix.KiwixJS, Kiwix.Wikivoyage, Kiwix.WikiMed) from the Microsoft Store, and until recently, winget was pretty smooth. For the last couple of months the experience has become quite frustrating and time-consuming for what should be a quick and simple validation and installation process. It should be as simple as it is with the app installer (gif video above). Don't get me wrong, I really like winget and the concept of a Windows Package Manager, and I really want to get this working smoothly again.

Jaifroid avatar Aug 05 '22 07:08 Jaifroid

I have reproduced the issue with "0x80072eff: unknown error" on another PC in winget v1.4.2011-preview. On my development PC I have winget stable v1.3.2091, but I get the same error on that PC (see screenshot here). Here you can see the issue happening with the current validated package of Kiwix.WikiMed (v2.0.9.0):

image

Exactly same is happening with the (not-yet-validated) package v2.1.0.0.

Jaifroid avatar Aug 05 '22 07:08 Jaifroid

@JohnMcPMS Do you have any ideas here?

denelon avatar Aug 05 '22 15:08 denelon

I tried downgrading to winget to v1.3.1661-preview. Hallelujah, it can install these packages correctly:

image

I subsequently tested v1.3.1681, and it can also install the packages correctly. The first version that bombs out on the hash check is v1.3.1741:

image

@JohnMcPMS, does this help identify where this regression was (re-)introduced?

Jaifroid avatar Aug 06 '22 05:08 Jaifroid

I looked into the difference between these two builds and I don't see anything of consequence. The only files that changed were a mitigation to a crash that should not have affected install. The only difference in configuration is that experimental features are disabled and it is an RC build (does not have -preview). They are built with the same compiler version.

The errors that you are seeing (0x80072efd and 0x80072eff) are WININET_E_CANNOT_CONNECT and WININET_E_CONNECTION_RESET, not hash check related. These are likely still github server connection issues.

I tried both the most recent preview version and v1.3.1681; they both failed. They don't fail to download the file though, they fail to verify the signature file before downloading. And this is almost certainly because this large MSIX has a very large number of files within it (55K+ articles and probably many images, etc.). The only public API to read the package is meant for local use, and is not so great when there are a lot of files.

I removed the SignatureSha256 from the manifest and was instantly able to get to downloading the file at a reasonable speed. I would suggest this as a mitigation for now.

@denelon, I sent you a cryptic mail about this, but I think there are multiple reasons for us to deprecate SignatureSha256 and move to a different mechanism. We should discuss further.

PS: There is no difference between appx and msix installer types in our code.

JohnMcPMS avatar Aug 11 '22 18:08 JohnMcPMS

@JohnMcPMS Thank you very much for looking into this. I can remove the SignatureSha256 from my manifest, but will that require a change on the validation side?

Regarding the number of files, it isn't the case that there are thousands of files. All the Wikipedia/MDWiki content is packed into a compressed archive (a ZIM archive), which is not decompressed at installation time. The reader decodes strings from the compressed archive for search and displaying articles and images, i.e. it reads and decodes the archive on the fly. It is never unpacked into local files.

It is definitely SIZE related, however, because the 12MB base software (with a sample archive) installs fine, whereas that 1.2GB package, which has almost exactly the same structure, just with a larger archive, fails.

Jaifroid avatar Aug 11 '22 19:08 Jaifroid