Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MSIX support on Windows #17

Open
maxkatz6 opened this issue May 8, 2023 · 4 comments
Open

MSIX support on Windows #17

maxkatz6 opened this issue May 8, 2023 · 4 comments
Labels
enhancement New feature or request

Comments

@maxkatz6
Copy link

maxkatz6 commented May 8, 2023

MSIX/MSIXInstaller is a newer alternative to package windows applications. Which is also supported by MS Store and winget.
As a technology it has quite some noticiable benefits:

  • App is packaged from the start to end, providing easy install and uninstall
  • By default, app installation is sandboxed and shared between windows users, making it safer to reuse app installation. Unlikely hacks with installation inside of multiple AppData to do the same before.
  • Windows automatically creates AppData folder for the application with full access (and deletes on uninstall)
  • It has autoupdate support using appinstaller file scheme. Partially explained here https://learn.microsoft.com/en-us/windows/msix/non-store-developer-updates, but it doesn't necessary needs any special code, as Windows updates apps automatically.
  • It is used by default in MAUI
  • It provides app identity to the packages, which means apps can use wider range of WinAPIs, including app notifications
  • Provides package signing build in, similar to dmg in macos

Still, it has some drawbacks:

  • It's not commonly used even today after years being available.
  • As mentioned above, app installation folder has restricted read only access, so apps should be changed to respect that (and use AppData folder for writeable data per user)
  • Build-in automatic autoupdate feature was broken between 2018 and 2021 windows versions, so it's not really an option. Still it's pretty easy to do manual update feature with windows APIs with additional code. Also, there is no partial update (whole package to be redownloaded)
  • On some OS installations this whole feature can be disabled by trimmed down unofficial Windows builds (aka, "no-trash no-ms-store clear lightweight windows").
@maxkatz6
Copy link
Author

maxkatz6 commented May 8, 2023

Personally, I previously preferred to use MSIX as a packaging/installation tool with manual autoupdate functionality implemented on top of it.
I won't have much time implementing it here in near future, and I understand it won't be in priority by maintainers either.

But still wanted to open this issue to see if there is any interest from the community.

@maxkatz6
Copy link
Author

maxkatz6 commented May 8, 2023

Technically, MSIX also supports app add-ins which can be installed once for whole system. Like, WebView2 package as part of MSIX installation. But I never tried that so not sure how it works.
In general, MSIX format is richer that just package and install.

@kuiperzone kuiperzone added the enhancement New feature or request label May 8, 2023
@kuiperzone
Copy link
Owner

kuiperzone commented May 8, 2023

Dear @maxkatz6,

Thank you very much for your suggestion and for providing a detailed explanation.

There are a couple of package kinds I would like to see supported in PupNet in the future and MSIX would be one of those, although I think it would need some thought. For example, as you say, "It's not commonly used even today after years being available." However, I also note that it is used by MAUI and may gain traction. Whereas, InnoSetup is old, but has remained popular.

In a couple of weeks, however, I start a new full time job so I'm not sure how much time I will have available either. In the short-term, I am very keen to fix bugs and ensure that PupNet is robust.

I would be keen, also, to see if there is interest from the community, as you suggest. While I think it would be a mistake for PupNet to attempt to support every deployment kind on the planet, I would be willing to support such efforts in principle.

Thanks again

Andy

PS. I think the following note you made is applicable to most deployment kinds, and should be present in the README. Thanks again.

As mentioned above, app installation folder has restricted read only access, so apps should be changed to respect that (and use AppData folder for writeable data per user)

@mysteryx93
Copy link

I got to say @maxkatz6, we're in similar situations. Over-saturated with things to do, lack of time to work on open source projects. And very very few people stepping up to contribute to those projects.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants