Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Discussion options

Recently the announcement was made (https://devblogs.microsoft.com/powershell/powershell-msi-deprecation) that Powershell 7.7 would move away from both MSI and EXE installers instead to purely ZIP and MSIX. I'll refrain from commenting on the public reception, but there have been a number of valid concerns raised in the comments of that article that seem better suited to be raised here. So making this discussion as a place to share those.

As for my own environment we install onto airgapped golden images and use Server Core for our automation on premise with similar setup on Azure Automation Agents in the cloud. From what I've been able to find MSIX is not supported on Server Core, so in my situation is creating a deployment via the zip file the only alternative?

You must be logged in to vote

Replies: 13 comments · 28 replies

Comment options

My first few concerns, Microsoft/Powershell team need to provide clarifications on

  1. Windows server installs, and more directly Windows Server Core
  2. based on the above, what does a zip based install look like
  3. enable session configuration endpoints (i.e. Get/Set-PSSessionConfiguration)
  4. All user/systems installs how does that work
  5. how does an enterprise (assuming per user installs) maintain having to remediate 50 version on a machine (multi user machines)
  6. Related to that enterprise deployment?
  7. What does this do for updating ? what does this do to windows update?

Thanks

You must be logged in to vote
4 replies
@jborean93
Comment options

Will first say that I don't agree with the changes being made here but using a zip can achieve the same status quo of using an MSI, it's just a bit more manual work.

  1. based on the above, what does a zip based install look like

For a ZIP install you would extract the zip into a directory and add it to the PATH. This can replicate how the MSI works today by extracting it into C:\Program Files\PowerShell\7\ but it can be any path you choose.

  1. enable session configuration endpoints (i.e. Get/Set-PSSessionConfiguration)

AFAIK you just need to run Enable-PSRemoting on the pwsh instance that's been extracted. This will copy the pwrshplugin.dll and other config files to the correct locations and register the session configuration data as expected. The tickbox in the MSI is essentially just calling Enable-PSRemoting after it has been installed.

  1. What does this do for updating ? what does this do to windows update?

This is where I'm less certain but it should be a matter of setting the same reg keys as what the MSI does to register the product with Microsoft Update.

@BlackV
Comment options

Agree these are all solvable

We now have an entire manual process (talking zip file method) to go through that the installed did previously, so this effects Org and end-users a like, but for Orgs automation/packaging/deployments needs to change, or have a per user install with its limitations (current limitations, that may change)

windows update will be looking for a install guid that the zip file is not creating

I think these are things the they should be thinking about and providing clear direction on before making the change

additionally some clarity on why now?

@JAK1047
Comment options

Same sentiment here. When I get a chance I plan to pop open the 7.6.0 MSI in Orca to see if any regkeys are getting set beyond the obvious for things like the Right Click context menu "Run with Powershell 7" if that option is chosen, the shell .ps1 file associations, etc. I don't think automating what the MSI does with the ZIP contents is a large ask it's just why move off a working solution to a solution that is non-working in multiple areas so suddenly and with no discussion to understand the challenges this will pose.

@jborean93
Comment options

I don't think automating what the MSI does with the ZIP contents is a large ask it's just why move off a working solution to a solution that is non-working in multiple areas so suddenly and with no discussion to understand the challenges this will pose.

Welcome to corporate policies :) I think it sucks and I'm sure there's probably people in the pwsh team who also think it sucks but cannot say so.

Comment options

I suspect this is something that the bigger Microsoft org is pushing down on the PS team. The team investment blog published 2 months ago said nothing about changing the installation experience or fixing accessibility issues.
Why would the PS team randomly decide to also make a drastic change like this right after they've just had a very delayed release? There's no way they expect all of the MSIX issues to be sorted out before November and yet they are moving unusually fast with the deprecation of the older (and actually functional) technology.

Perhaps we'll hear about some new vision for MSIX and Windows that explains this at the Build conference.

You must be logged in to vote
2 replies
@JAK1047
Comment options

I had similar suspicions honestly. Normally you see a dialogue here first for feedback and even then modifications are treated with some pretty impressive care with concerns to breaking existing processes for the user base. The sudden announcement and lack of dialogue so far has been a bit jarring and not indicative of how the working group\committee broached these kinds of changes up to this point.

@BlackV
Comment options

Yeah, sounds like there might be edicts from elsewhere, November is a short time frame, hopefully this thread sticks to the , "these are things I see that will be broken" vs "Microsoft you are clowns" and in fairness short time frames are a reasonable way to force change (better or worse) in a very large org

clarification and goals would be nice for powershell team

Comment options

Another concern a coworker of mine has raised. To stay within best practice for automation in an on premise environment we, as well as using Server Core, also use Group Managed Service Accounts to run all our Powershell tasks. Can a gMSA run a MSIX install? Since it's in a user context and a gMSA does not have a traditional user profile. I cannot find any documentation pointing one way or the other.

You must be logged in to vote
1 reply
@mcdonamw-ews
Comment options

MSIX does not support gMSA or execution using System context, nor does it support powershell remoting.

https://powershellisfun.com/2026/05/01/powershell-preview-v7-7-0-preview-1-release/

Comment options

I would suggest posting all your questions and concerns about this in #26903 then it Will be discussed by the PowerShell team in the next community call. If possible you could also attend the call and ask questions there directly to the team.

You must be logged in to vote
4 replies
@JAK1047
Comment options

Were you able to find any outline for the next community call showing this will be a topic discussed? As is I haven't been able to find anything showing the team will go into further details on the decision or open it for feedback. Would certainly assuage some concerns if discussions were on the table.

@theJasonHelmick
Comment options

@JAK1047 - Yes — MSI deprecation is on the agenda for the May 21st Community Call. You can follow along and add any additional questions here: #26903

@doctordns
Comment options

Wouldn't it have been better to gave had the conversion BEFORE nuking a well known, reliable, and simple way to install powershell. The MSIX option is not a perfect replacement.

As an open source project, consulting users first tends to be a good idea. This removal does nothing to improve my trust with PowerShell management and Microsoft. This is a very sad move. Count me very dissapointed.

Ms should reinstall MSI as an option till MSIX works for every installation.

N sumnary, The community needs better stewardship for PowerShell.

@MichelZ
Comment options

Also, if accessibility is an issue, then just offer the .msix as an accesible alternative to the .MSI

Comment options

Horribly dump decision. MSIX is blocked in our org. So it's back to PS 5.1

You must be logged in to vote
0 replies
Comment options

Thanks everyone for the feedback — we're reading all of it and taking it seriously. We understand that MSI has been a reliable and well-understood deployment model for many environments, especially in enterprise scenarios, and we don't take changes like this lightly.

PowerShell 7.6 is an LTS release and we will continue to include MSI support for its supported lifecycle, providing time for environments to plan and adapt.

Our direction toward MSIX is based on long-term goals around reliability, accessibility, and alignment with the Windows platform. At the same time, we recognize that MSIX doesn't yet cover all of the scenarios that MSI enabled today.

This transition will take time. We are actively investing in closing those gaps. This is why we're starting this in the 7.7 preview cycle. This gives us time to make the necessary improvements and get your feedback. Please keep sharing specific scenarios and blockers. Please share your feedback in this discussion.

For more information on your installation options, see Install PowerShell 7 on Windows.

You must be logged in to vote
6 replies
@JAK1047
Comment options

From the information that has been provided the through-line appears to be a focus on accessibility, but I'm having trouble understanding how MSIX can assist with this. From the concerns collected so far it's, in fact, measurably less accessible to most enterprise environments where Powershell is used in restricted setups using non-standard user accounts. And it may be may own bias as an engineer speaking, but I'd assume this would be the primary user base for Powershell Core.

Could any examples be provided showing what accessibility gaps MSIX for Powershell will help bridge? The only thing I've found myself so far (that was also mentioned in the original blog post) was interaction with screen readers which I'm not sure has been a concern to begin with. If there's a use case being solved that would certainly help assuage the unease in the community a bit . Or at least lessen the sting slightly.

@ckrueger1979
Comment options

How do you want to close the gap? MSIx doesn't magically will get fixed.
The timeline with 7.7 isn't make any sense. Did you mean 17.7?
We need installation and patching via SCCM and machine wide installations.

@brichan
Comment options

Before removing MSI, we need to ensure that MSIX is compatible with Server Core, SCCM and other systems first.
Microsoft’s decisions sometimes lead to odd situations like this.

@HStry
Comment options

"we're reading all of it and taking it seriously"....

I'm not convinced.

@DarwinJS
Comment options

I currently maintain the Chocolatey package for Windows for pwsh 7.
Years ago I did the OpenSSH installer where I made the same installer work inside and outside of chocolatey and made it work all the way from early, jank versions of Nano through PowerShell 2 on Windows. It was literally like reproducing all that I knew about MSI internals into a Script + ZIP installer - I could feel myself going through them one-by-one, but I wanted to service Nano!

A couple years ago an MS PM nicely asked if I could update that package and so you can see a 2024 release. (Follow barebonesinstaller.ps1 here: https://gitlab.com/DarwinJS/ChocoPackages/-/tree/master/openssh/tools?ref_type=heads)

The hardest scenarios are upgrading over a previous version.

But the reasoning here seems to be:

  1. Move to MSIX because MSI is too hard...
  2. But not all the MSI scenarios were ever fully covered...
  3. And, msix does not work on all the platforms where installs are done...
  4. So .zip's are great - but they do even fewer of the scenarios needed than MSIX...
  5. And since all the installation 'bits and pieces' for both human and headless machines are not documented here: https://github.com/PowerShell/PowerShell/tree/master/docs, the MSI is the only documentation of "all the things"

And so you now have to reverse engineer and implement in script code, something that:

  • handles all the implicit things MSI does (like automatically scheduling a reboot if files were locked and we tried an overwrite)
  • and all the special scenarios engineered into that package.

So while MSI may feel over-engineered at times - aren't we now saying - have each person go and do all the legitimate things MSI does for a powershell install by reverse engineering the requirements by trial and error what MSI does automatically?

If MSIX has never been able to achieve the MSI level of install functionality required for installing powershell, why keep going lower on the pole to .ZIP ? Isn't it a case-in-point for making the install framework that 'handles all the things' the single source of truth, rather than abandon it?

I already travelled that path when I built the OpenSSH installer and it is a trail of tears of "painstakingly recapturing all the things engineered into mature installation frameworks through Agile re-discovery of a working framework called MSI"

Comment options

https://learn.microsoft.com/en-us/powershell/scripting/install/install-powershell-on-windows?view=powershell-7.6 lists lots of (at present) wrong things.
The last days I didn't manage to install non-MSIX PowerShell through winget at all. The MSIX gave me a second PS install, which wasn't really desired.
In the end, I uninstalled what I could and just ran a manually downloaded MSI by hand.

You must be logged in to vote
2 replies
@sdwheeler
Comment options

The winget manifest includes both MSIX and MSI installs. You can install the MSI using winget install --id Microsoft.PowerShell --source winget --installer-type wix. This was a change in the 7.6 release that I am only just finding out about. We will either update the docs or update the winget manifest.

@BlackV
Comment options

The winget manifest includes both MSIX and MSI installs. You can install the MSI using winget install --id Microsoft.PowerShell --source winget --installer-type wix. This was a change in the 7.6 release that I am only just finding out about. We will either update the docs or update the winget manifest.

Appreciate the update

Comment options

When I initially read this I leapt to the conclusion that PowerShell 7 was going to be part of base Windows and already populate c:\Program Files\PowerShell\7 so any additional MSI would be a conflict. Otherwise it made no sense.

It sounds like they are putting the cart before the horses. It would be better to make MSIX support the required installation locations and meta-data before announcing that PowerShell was going to use something that was currently not fit for purpose and outside the control of the PowerShell team.

Would PowerShell be published in multiple MSIX/MSIXBUNDLE packages? Those for user scope AppStore, and those for shared installations?

You must be logged in to vote
0 replies
Comment options

Honest question here:

When you make something part of the OS - like the mentioned plan to ship PowerShell 7 with Windows Server vNext, how exactly does shipping with the Operating System work?

Windows Server 2025 in practice: What's new post-GA around 37:00+
image

I understand the accessibility improvements of MSIX over MSI, and I even support them! What is not clear to me, when you want to put something into an OS image: are you using an installer or something else?

And again; scoping the question to integration with the Operating System here: Would accessibility has any chance to matter here the same way it matters when a downloadable installer is produced?

One end-user experience I am familiar with is the Turn Windows Features on or off experience which can be used to install .NET Framework 3.5 which after installation becomes updateable by Windows Update.

The assumption I have is that if you create an OS image with PowerShell 7.6 in it - installed using MSI - you get a Windows Update compatible image and no end user will ever run into any accessibility issues.

How far is my assumption from reality?

Thank you for entertaining my question, I really appreciate it.

You must be logged in to vote
0 replies
Comment options

@theJasonHelmick

I was hopeful the May community call would do more to explain the reasoning behind the decision to roll forward with MSIX before it's in a production ready state. In the short aside however all that was stated was that the team was already aware it was not fully ready, but still made the choice to continue with a replacement with the guarantee that work is being done to try and track\resolve them.

Will June's call touch more on why a deprecation is being done in spite of all the roadblocks vs just having MSIX as an additional installation option until it reaches feature parity?

You must be logged in to vote
0 replies
Comment options

I totally agree with everyone else's concerns about the deprecation of MSI in favour of MSIX and the lack of feature parity for enterprise use, but I wanted to add an important point to the conversation that I haven't really seen anyone else talking about.

As we all know, MSIX in its current form doesn't work well for anything that needs to be installed system-wide and used by RMM/MDM solutions in the SYSTEM context.

However, what I haven't specifically seen anyone discussing is this:

At the moment, winget.exe is officially unsupported for use in the SYSTEM context, and while there are hacky ways to locate and execute the latest installed winget.exe via scripts, they are not recommended:

The CLI is not supported from SYSTEM at all, as one cannot register the MSIX package for the SYSTEM user.

The PS module is supported for SYSTEM use in session 0. When running as system it does not have a dependency on the MSIX package.

As packages can be registered for any user except NT AUTHORITY\SYSTEM (aka LocalSystem, aka System), the WinGet CLI is not supported in the system context. The Microsoft.WinGet.Client PowerShell module can be used in the system context with applications that are installed machine wide.

Now, as stated above, the preferred solution is the Microsoft.WinGet.Client module for PowerShell, which does officially support being used in the SYSTEM context, but only in PowerShell 7 (and only when pwsh.exe is executed with the -MTA switch):

We've published Microsoft.WinGet.Client with the ability to run WinGet in the system context. It does require running in PowerShell 7 with "-MTA".

Therefore, in order to use WinGet in the SYSTEM context in a supported way, we need PowerShell 7 and an additional module.

How do we get PowerShell 7 installed for the SYSTEM context? With the MSI installer!

If you deprecate MSI and only support MSIX for installing PowerShell, then we can't install it for the SYSTEM context, so we can't install the Microsoft.WinGet.Client module, so we can't use WinGet in the SYSTEM context in an officially supported manner.

This change doesn't only affect enterprise use of PowerShell itself, but also enterprise use of WinGet, which is a much bigger problem.

If MSIX is actually going to be enhanced to support SYSTEM context usage, and this will apply to both PowerShell and WinGet, then fantastic!

But we currently have zero visibility on any work being done in this area by the MSIX team, so how are we supposed to feel at ease with any of this?

You must be logged in to vote
8 replies
@Tragen
Comment options

I've been leading the charge to get support for packaged applications in the "system context". We do have work lined up for engineering to provide this ability. It will be coming in two parts. The first addresses having a packaged application registered and the second enables its execution. I feel this pain myself every time I'm attempting to set up a new machine whether it's a VM or a physical device.

Changing the operating system itself takes a lot longer than any of us wishes, and building the business justification to change something that was a fundamental assumption/assertion when the technology was built also took time.

This is another step along the journey of addressing all the "chicken and egg" problems. Something "seemingly" as simple as getting the environment refresh for winget install foo in CMD and subsequently in PowerShell 7 took many years and needed long cycles for each dependent step to be completed and rolled out.

And MS wonders why people move to Linux. Here you have the definitive and final answer.

@rhubarb-geek-nz
Comment options

Changing the operating system itself takes a lot longer than any of us wishes, and building the business justification to change something that was a fundamental assumption/assertion when the technology was built also took time.

Who could have known that customers would expect to install software that could be shared by multiple users?

@nogaff
Comment options

And MS wonders why people move to Linux. Here you have the definitive and final answer.

Who could have known that customers would expect to install software that could be shared by multiple users?

We know there are issues but these comments don't contribute anything to the discussion. There's no need to throw sarcasm at the people trying to improve the situation, especially when we're asking for more transparency.

Changing the operating system itself takes a lot longer than any of us wishes, and building the business justification to change something that was a fundamental assumption/assertion when the technology was built also took time.

I appreciate the insight and I don't doubt any of it, but I'd love to know what more business justification was required than "the product doesn't work for our enterprise customers". 😄

I'd have thought these deficiencies would have been fairly self-evident to the teams involved, well before MSIX was actually released, let alone 8 years later? I mean, to my knowledge, it was an evolution of the AppX format that first debuted in Windows 8 like 14 years ago, so how come nobody wanted to address these issues and have it properly ready for enterprise use at release? Then WinGet and PowerShell presumably wouldn't be having all these problems with it now, and everyone would be much happier.

The cynic in me is imagining another "chicken and egg" scenario, where the business argument is that nothing needs to be enterprise-ready out of the box because enterprise takes forever to adopt anything new, but maybe that's because enterprise has learned that nothing new ever works properly out of the box? 😵‍💫

@rhubarb-geek-nz
Comment options

Who could have known that customers would expect to install software that could be shared by multiple users?

There's no need to throw sarcasm

It wasn't sarcasm, it was disbelief and a question that should be asked of the decision makers in the crisis management meeting or post mortem. In the Agile world you can't commit to something that you have no control over, and it appears that the PowerShell project has no control over the implementation of the installers. So rather than make it a dependency it should be merely a wish list item that could be transitioned to when it becomes fit for purpose. In the mean time revert to the existing tried and tested mechanisms. That completely bypasses the "chicken and egg" problem. I consider myself a PowerShell evangelist and even I can't recommend putting PowerShell 7 in production environments. If you have lost us then who are you doing it for?

@DarwinJS
Comment options

I'd have thought these deficiencies would have been fairly self-evident to the teams involved, well before MSIX was actually released, let alone 8 years later? I mean, to my knowledge, it was an evolution of the AppX format that first debuted in Windows 8 like 14 years ago, so how come nobody wanted to address these issues and have it properly ready for enterprise use at release? Then WinGet and PowerShell presumably wouldn't be having all these problems with it now, and everyone would be much happier.

This is the pure joy of architectureless agile applied to an already well solved problem (a wheel problem). The team builds successive "MVPs" until they get to the hard edge cases or get bored or lose members. Done properly architected works create a Sufficiently Viable Product for wheel problems that forces customer-oriented expectations based on defacto market products that define customers existing expectations of sufficient functionality - regardless of whether those are hard or rare. Agile also over pivots to "User" experiences - and by definition automation and autonomous systems seek to eliminate User experiences. So in this case the less User oriented "System Account" installs are never gotten to.

I've been giving voice to how 'Lean Startup learning iterations" should not be used to "Plan What To Build" when the customer problem is a "Wheel Problem" (well solved in the market one or more times). They can still be used to build - but every early sprint is a spike to get to market defined problem-solution fit. MSI is well-solved "Installing stuff on windows for all the dominant usage scenarios needed in the Enterprise" A new book "How to Get Big Things Done" puts reams of hard-core data behind my assertion. Interestingly The Lean Startup author Eric Ries book "The Startup Way" points indirectly to the concept when it claims that Lean Startup solutions have to STOP using "innovation accounting" (expensive iterations to 'learn what to build' when the problem solution fit renew to the world) to "traditional accounting". By definition "Wheel Problems" have an already mature problem-solution fit in the market even when your team happens to be building a new product for that wheel problem - ie WinGet and MSIX.

See my four square in my 2 year old linkedin post: https://www.linkedin.com/posts/darwinsanoy_the-old-wisdom-dont-reinvent-the-wheel-activity-7160706184130285569-7C3f

Comment options

One of the major advances of MSIX over MSI is that it can use dependencies on other MSIX. Store apps do this to share common runtime.

Will the dotnet runtime and SDK also be published in MSIX format, if not why not?

Can the PowerShell MSIX be split into components where there is a wrapper MSIX that then contains references to separate MSIX for

  1. dotnet runtime
  2. core PowerShell binaries
  3. each individual module from the Modules directory, ( about 12 of them )

This feels consistent with the move to componentize Windows and would allow deployers to only use what they need.

You must be logged in to vote
1 reply
@Tragen
Comment options

Would be a good idea if msix could install machine-wide.
System tools shouldn't be installed per user only.

Comment options

@theJasonHelmick For other MSIX blocker issues not currently listed how can we best get them added to the created tracker? Create a normal Feature\Enhancement request and request the Package-MSIX label be added?

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Morty Proxy This is a proxified and sanitized view of the page, visit original site.