Problémy se zabezpečením, správou verzí a manifestem v nasazeních ClickOnce

Existují různé problémy se zabezpečením ClickOnce, správou verzí aplikací a syntaxí manifestu a sémantikou, které můžou způsobit, že nasazení ClickOnce nebude úspěšné.

ClickOnce a Řízení uživatelských účtů systému Windows

V systému Windows Vista a novějších verzích systému Windows aplikace ve výchozím nastavení běží jako standardní uživatel, i když je aktuální uživatel přihlášen pomocí účtu, který má oprávnění správce. Pokud aplikace musí provést akci, která vyžaduje oprávnění správce, sdělí operačnímu systému, který pak vyzve uživatele k zadání přihlašovacích údajů správce. Tato funkce s názvem Řízení uživatelských účtů (UAC) brání aplikacím v provádění změn, které mohou ovlivnit celý operační systém bez explicitního schválení uživatele. Aplikace systému Windows deklarují, že vyžadují zvýšení oprávnění zadáním atributu requestedExecutionLeveltrustInfo v části manifestu aplikace.

Vzhledem k riziku vystavení aplikací útokům na zvýšení zabezpečení nemůžou aplikace ClickOnce požádat o zvýšení oprávnění, pokud je pro klienta povolený nástroj Řízení uživatelských účtů. Jakákoli aplikace ClickOnce, která se pokusí nastavit jeho requestedExecutionLevel atribut nebo requireAdministratorhighestAvailable nebude nainstalována v systému Windows Vista a novějších verzích.

V některých případech se vaše aplikace ClickOnce může pokusit spustit s oprávněními správce kvůli logice detekce instalačního programu ve Windows. V tomto případě můžete nastavit requestedExecutionLevel atribut v manifestu aplikace na asInvoker. To způsobí, že se aplikace spustí bez zvýšení oprávnění. Visual Studio automaticky přidá tento atribut do všech manifestů aplikace.

Pokud vyvíjíte aplikaci, která vyžaduje oprávnění správce po celou dobu životnosti aplikace, měli byste zvážit nasazení aplikace pomocí technologie Instalační služby systému Windows (MSI). Další informace naleznete v tématu Základy Instalační služby systému Windows.

Online kvóty aplikací a částečné důvěryhodné aplikace

Pokud vaše aplikace ClickOnce běží online místo instalace, musí se vejít do kvóty vyhrazené pro online aplikace. Síťová aplikace, která běží v částečném vztahu důvěryhodnosti, například s omezenou sadou oprávnění zabezpečení, nemůže být větší než polovina velikosti kvóty.

Další informace a pokyny ke změně kvóty online aplikací najdete v tématu Přehled mezipaměti ClickOnce.

Problémy se správou verzí

Pokud k sestavení přiřadíte silné názvy a zvýšíte číslo verze sestavení tak, aby odráželo aktualizaci aplikace, může docházet k problémům. Jakékoli sestavení zkompilované s odkazem na sestavení se silným názvem musí být znovu zkompilováno nebo se sestavení pokusí odkazovat na starší verzi. Sestavení to vyzkouší, protože sestavení používá ve své žádosti o vazbu starou hodnotu verze.

Řekněme například, že máte sestavení se silným názvem ve vlastním projektu s verzí 1.0.0.0. Po kompilaci sestavení ho přidáte jako odkaz na projekt, který obsahuje hlavní aplikaci. Pokud aktualizujete sestavení, zvýšíte verzi na 1.0.0.1 a pokusíte se ho nasadit bez opětovného zkompilování aplikace, aplikace nebude moct za běhu načíst sestavení.

K této chybě může dojít pouze v případě, že upravujete manifesty ClickOnce ručně; Tuto chybu byste neměli zaznamenat, pokud vygenerujete nasazení pomocí sady Visual Studio.

Určení jednotlivých sestavení rozhraní .NET Framework v manifestu

Pokud jste ručně upravili nasazení ClickOnce tak, aby odkazovala na starší verzi sestavení rozhraní .NET Framework, aplikace se nenačte. Pokud jste například přidali odkaz na sestavení System.Net pro verzi rozhraní .NET Framework před verzí zadanou v manifestu, dojde k chybě. Obecně byste se neměli pokoušet zadávat odkazy na jednotlivá sestavení rozhraní .NET Framework, protože verze rozhraní .NET Framework, pro kterou se vaše aplikace spouští, je určena jako závislost v manifestu aplikace.

Problémy s analýzou manifestu

Soubory manifestu používané technologií ClickOnce jsou soubory XML a musí být správně formátované i platné: musí dodržovat pravidla syntaxe XML a používat pouze elementy a atributy definované v příslušném schématu XML.

Něco, co může způsobit problémy v souboru manifestu, je výběr názvu aplikace, který obsahuje speciální znak, například jeden nebo dvojitý uvozovek. Název aplikace je součástí své identity ClickOnce. ClickOnce v současné době neanalybuje identity, které obsahují speciální znaky. Pokud se vaší aplikaci nepodaří aktivovat, ujistěte se, že pro název používáte jenom abecední a číselné znaky, a zkuste ji znovu nasadit.

Pokud jste ručně upravili manifesty nasazení nebo aplikace, je možné, že jste je neúmyslně poškodili. Poškozený manifest zabrání správné instalaci ClickOnce. Tyto chyby můžete ladit v době běhu kliknutím na podrobnosti v dialogovém okně Chyba ClickOnce a přečtením chybové zprávy v protokolu. Protokol zobrazí jednu z následujících zpráv:

  • Popis chyby syntaxe a číslo řádku a umístění znaku, kde došlo k chybě.

  • Název elementu nebo atributu použitého v rozporu se schématem manifestu. Pokud jste do manifestů přidali XML ručně, budete muset porovnat přidání do schémat manifestu. Další informace naleznete v tématu Manifest nasazení ClickOnce a ClickOnce manifest aplikace.

  • Konflikt ID Odkazy na závislosti v manifestech nasazení a aplikací musí být v jejich i publicKeyToken atributech name jedinečné. Pokud se oba atributy shodují mezi libovolnými dvěma prvky v manifestu, analýza manifestu nebude úspěšná.

Bezpečnostní opatření při ruční změně manifestů nebo aplikací

Při aktualizaci manifestu aplikace je nutné znovu podepsat manifest aplikace i manifest nasazení. Manifest nasazení obsahuje odkaz na manifest aplikace, který obsahuje hodnotu hash daného souboru a jeho digitální podpis.

Bezpečnostní opatření s využitím poskytovatele nasazení

Manifest nasazení ClickOnce má deploymentProvider vlastnost, která odkazuje na úplnou cestu k umístění, ze kterého má být aplikace nainstalována a obsluhována:

<deploymentProvider codebase="http://myserver/myapp.application" />

Tato cesta se nastaví, když ClickOnce vytvoří aplikaci a je povinná pro nainstalované aplikace. Cesta odkazuje na standardní umístění, kam instalační program ClickOnce nainstaluje aplikaci a vyhledá aktualizace. Pokud pomocí příkazu xcopy zkopírujete aplikaci ClickOnce do jiného umístění, ale nezměníte deploymentProvider vlastnost, ClickOnce se při pokusu o stažení aplikace vrátí zpět na původní umístění.

Pokud chcete přesunout nebo zkopírovat aplikaci, musíte také aktualizovat deploymentProvider cestu, aby se klient skutečně nainstaloval z nového umístění. Aktualizace této cesty je většinou problém, pokud máte nainstalované aplikace. U online aplikací, které se vždy spouští prostřednictvím původní adresy URL, je nastavení deploymentProvider volitelné. Pokud deploymentProvider je nastavená, bude dodržena. Jinak se adresa URL použitá ke spuštění aplikace použije jako základní adresa URL pro stahování souborů aplikace.

Poznámka:

Pokaždé, když aktualizujete manifest, musíte ho znovu podepsat.

Řešení potíží s nasazenímiClickOnce – Zabezpečené aplikaceClickOnce – Volba strategie nasazení ClickOnce