Applicazioni con pacchetti non installabili o non reinstallabili: come risolvere usando PowerShell

Di recente mi è capitato di dover gestire un problema banale ma curioso, uno di quelli su cui pensi una volta risolto: “ecco questo per il futuro devo davvero ricordarmelo!”. Siccome è una di quelle cose che può essere utile a tutti nella vita di tutti i giorni ho pensato di condividerlo brevemente.

Il Problema:
In breve questo quanto accaduto. Stavo provando ad aggiornare un’applicazione di tipo universal, basata su pacchetti, fatta con Visual Studio di cui ho pubblicato anche una versione sullo store. In passato avevo provato ad installarla anche in locale sul pc di casa che uso per sviluppare. Poi l’avevo rimossa.
Dopo quest’azione mi era diventato impossibile avviare la versione di sviluppo in locale, che per funzionare deve essere distribuita localmente, proprio come fosse stata installata. Questo con errori anomali come l’errore 1104 che, da visual studio, indica che non è stato possibile accedere al percorso di delivery.
Anche da Microsoft Store la versione dell’app pubblicata era diventata impossibile da installare

La Causa
Per ragioni non ben definite l’applicazione in pratica risultava installata da un’utente diverso dal mio, da cui però era diventato impossibile rimuoverla. Forse si trattava di qualche prova fatta in passato con un’utenza non piu’ disponibile.
I due strumenti quindi (Visual Studio e Microsoft Store) non avevano modo di rimuoverla in modo corretto

La Soluzione
La soluzione piu’ rapida per il problema, una volta capito, è stata quella di forzare la rimozione dell’applicazione installata tramite PowerShell, usando utenza e console amministrative. Il comandi Powershell riportati di seguito in pratica consentono di rimuovere il pacchetto indicato per tutti gli utenti.

Procedura

  1. Aprire una console PowerShell con diritti amministrativi
  2. Trovare il nome del pacchetto da rimuovere. Questo lo si puo recuperare in diversi modi:
    • Dal messaggio di errore ricevuto
    • Cercando il suo nome nella cartella %USERPROFILE%\AppData\Local\Packages
      Ad ogni nome cartella corrisponde un pacchetto con lo stesso nome
    • Tramite la query PowerShell
      Get-AppxPackage -AllUsers
  3. Una volta identificato il nome del pacchetto rimuoverlo semplicemente tramite il comando PowerShell
    Get-AppxPackage -Name "[NOMEPACCHETTO]" -AllUsers |Remove-AppxPackage -AllUsers