Po středečním výpadku proudu přestala na jednom z počítačů našeho zákazníka fungovat aplikace, instalovaná a aktualizovaná přes ClickOnce.
Při pokusu o spuštění či opětovnou instalaci aplikace se objevil chybový popup s možností zobrazit detailní zprávu, jejíž jádrem byla výjímka:
System.Runtime.InteropServices.COMException
- The referenced assembly is not installed on your system. (Exception from HRESULT: 0x800736B3)
- Source: System.Deployment
- Stack trace:
at System.Deployment.Internal.Isolation.IStore.GetAssemblyInformation(UInt32 Flags, IDefinitionIdentity DefinitionIdentity, Guid& riid)
at System.Deployment.Internal.Isolation.Store.GetAssemblyManifest(UInt32 Flags, IDefinitionIdentity DefinitionIdentity)
at System.Deployment.Application.ComponentStore.GetSubscriptionStateInternal(DefinitionIdentity subId)
at System.Deployment.Application.SubscriptionStore.GetSubscriptionStateInternal(SubscriptionState subState)
at System.Deployment.Application.ApplicationActivator.ProcessOrFollowShortcut(String shortcutFile, TempFile& deployFile)
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut)
at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
Odinstalovat aplikaci nešlo vůbec - v při kliknutí na "Unistall" v AddRemovePrograms něco probliklo, ale pak už se nic nedělo.
Brzy jsem našel skoro použitelné řešení:
V podstatě pomohl návod uvedený v následujícím článku
http://social.msdn.microsoft.com/Forums/en-US/vbide/thread/c868d369-2399-45c7-bc0b-2dd7d5443241
tedy odinstalovat aplikaci ručně a poté již šla regulérně nainstalovat.
Mělo to však jeden háček:
Všechny ClickOnce aplikace sídlí v adresáři "%userprofile%\Local Settings\Apps".
Problém je v tom, že zmíněný článek vyžaduje smazat CELÝ adresář Apps.
To se mi nelíbilo, protože na daném počítači byly dvě ClickOnce aplikace a ta druhá nebyla mnou spravovaná.
Zkusil jsem tedy v Apps promazat jen ČÁSTEČNĚ - jen ty podadresáře, které opticky odpovídaly mojí aplikaci.
Bohužel to nepomohlo.
Tak jsem si udělal zálohu adresáře Apps, pak ho CELÝ promazal, nainstaloval svoji aplikaci a obnovil zálohu.
Moje aplikace nadále fungovala, ale ta druhá aplikace začala házet výše popsanou chybu (přestože ji dříve neházela).
Pomohlo teprve druhé promazání Apps a potom _nainstalování_ obou aplikací znova.
P.S: během svého běsnění jsem také promazal záznamy o odinstalvoané aplikaci v Registry, už si nepmatuji kde - prostě jsem hledal fulltextově. Jeden ze záznamů se určitě týkal sekce uninstallers.
Ani nevím, jestli to k něčemu pomohlo či ne...
Závěr:
Smazat celý adresář "%userprofile%\Local Settings\Apps" je v takovéto situaci účinná pomoc,
jen musíte mít potom možnost nainstalovat všechny ClickOnce aplikace znova (znát jejich URL a případná hesla...).
Částečné promazání nepomůže.