Zabezpečení, Správa verzí a problémy s manifesty v ClickOnce nasazeních
Existuje mnoho různých problémů se zabezpečením ClickOnce, správu verzí aplikace, syntaxí manifestu a sémantikou, které mohou způsobit, že nasazení ClickOnce nejsou úspěšné.
ClickOnce a řízení uživatelských účtů systému Windows Vista
V Windows Vista jsou ve výchozím nastavení aplikace spuštěny jako standardním uživatelem, i když je aktuální uživatel přihlášen pomocí účtu, který má oprávnění správce.Pokud musí aplikace provést akci, která vyžaduje oprávnění správce, oznámí toto operačnímu systému, který poté vyzve uživatele k zadání svých pověření správce.Tato funkce, která se nazývá nástroj Řízení uživatelských účtů (UAC), zabrání aplikacím ve změnách, které mohou bez výslovného souhlasu uživatele ovlivnit celý operační systém.Aplikace systému Windows deklarují, že vyžadují toto zvýšení oprávnění zadáním atributu requestedExecutionLevel v části trustInfo jejich manifestu aplikace.
Vzhledem k riziku vystavení aplikací zvýšeným útokům aplikace ClickOnce nemůže požadovat zvýšení úrovně oprávnění, pokud je nástroj Řízení uživatelských účtů povolen pro klienta.Jakákoli aplikace ClickOnce, která se pokusí nastavit tento atribut requestedExecutionLevel na requireAdministrator nebo highestAvailable nebude instalována na Windows Vista.
V některých případech se mohou vaše aplikace ClickOnce pokusit o spuštění s oprávněními správce z důvodu zjišťování instalační logiky na Windows Vista.V tomto případě můžete nastavit atribut requestedExecutionLevel v manifestu aplikace na asInvoker.To způsobí, že samotné aplikace se budou spouštět bez zvýšení oprávnění. Visual Studio 2008 automaticky přidává tento atribut do všech manifestů aplikací.
Pokud vyvíjíte aplikaci, která vyžaduje oprávnění správce po celou dobu života aplikace, měli byste zvážit zavedení aplikace pomocí technologie Instalační služby systému Windows (MSI).Další informace naleznete v tématu Instalační služba Windows Installer základy.
Kvóty online aplikací a aplikace s částečnou důvěryhodností
Pokud bude vaše aplikace ClickOnce spuštěna online namísto prostřednictvím instalace, musí být přizpůsobena kvótě vyhrazené pro online aplikace.Také síťové aplikace, které se spustí v částečném vztahu důvěryhodnosti, například s omezenou sadou oprávnění zabezpečení, nesmí být větší než polovina velikosti kvóty.
Další informace a pokyny, jak změnit kvóty online aplikací naleznete v tématu Přehled mezipaměti ClickOnce.
Problémy správy verzí
Můžete se setkat s problémy, pokud přiřadíte silné názvy vašemu sestavení a zvýšíte číslo verze sestavení tak, aby odráželo aktualizace aplikace.Libovolné sestavení zkompilované s odkazem na sestavení se silným názvem musí být samo překompilováno, nebo se sestavení pokusí odkázat na starší verzi.Sestavení se o to pokusí, protože používá starou hodnotu verze ve své žádosti vazby.
Dejme tomu, že máte sestavení se silným názvem v jeho vlastním projektu s verzí 1.0.0.0.Po kompilaci sestavení je přidáte jako odkaz na projekt, který obsahuje hlavní aplikaci.Pokud provedete aktualizaci sestavení, zvýšíte verzi na 1.0.0.1 a pokusíte se jej nasadit bez překompilování aplikace, aplikace nebude mít možnost načíst sestavení v době běhu.
K této chybě může dojít pouze, pokud upravujete vaše manifesty ClickOnce ručně; k této chybě by nemělo dojít pokud generujete nasazení pomocí Visual Studio 2005.
Určení jednotlivých sestavení .NET Framework v manifestu
Aplikace se nebude moct načíst, pokud jste ručně upravili nasazení ClickOnce, aby odkazovalo na starší verzi sestavení .NET Framework.Například pokud jste přidali odkaz na sestavení System.Net pro verzi .NET Framework předchozí verze určené v manifestu, pak dojde k chybě.Obecně byste se neměli pokoušet zadávat odkazy na jednotlivé sestavení .NET Framework, jako verzi .NET Framework, proti které je aplikace spouštěna v závislosti na manifestu aplikace.
Analýzy chyb manifestu
Soubory manifest, které jsou používány ClickOnce jsou soubory XML a musí být platné i ve správném: musí dodržovat pravidla syntaxe jazyka XML a použít pouze prvky a atributy definované v příslušné schéma XML.
Něco co může způsobit problémy v souboru manifestu je výběr názvu aplikace, který obsahuje speciální znaky, jako jsou například jednoduché nebo dvojité uvozovky.Název aplikace je součástí jeho identity ClickOnce.ClickOnce aktuálně neanalyzuje identity, které obsahují speciální znaky.Pokud se Vaší aplikaci nezdaří aktivace, ujistěte se, zda používáte pouze abecední a číselné znaky pro název a pokuste se o nasazení znovu.
Pokud jste ručně upravili vaše manifesty nasazení nebo aplikace, mohli jste je neúmyslně poškodit.Poškozený manifest zabrání správné instalaci ClickOnce.Takovéto chyby můžete ladit za běhu kliknutím na Podrobnosti v dialogovém okně Chyba ClickOnce a číst chybovou zprávu v protokolu.V protokolu se zobrazí jedna z následujících zpráv:
Popis syntaxe chyby, číslo řádku a pozice znaku, kde nastala chyba.
Název prvku nebo atribut používaný při narušení schéma manifestu.Pokud jste přidali kód XML ručně do vašich manifestů, musíte porovnat vaše dodatky se schématem manifestu.Další informace naleznete v tématu Manifest nasazení ClickOnce a Manifest aplikace ClickOnce.
ID konfliktu.Odkazy závislostí v manifestech nasazení a aplikací musí být jedinečné v obou jejich atributech name a publicKeyToken.Pokud oba atributy odpovídají mezi dvěma prvky v rámci manifestu, analýza manifestu se nezdaří.
Bezpečnostní opatření při ručních změnách manifestů nebo aplikací
Při aktualizaci manifestu aplikace musíte znovu podepsat jak manifest aplikace tak i manifest nasazení.Manifest nasazení obsahuje odkaz na manifest aplikace, který obsahuje hodnotu hash tohoto souboru a jeho digitální signaturu.
Bezpečnostní opatření při používání poskytovatele nasazení
Manifest nasazení ClickOnce má vlastnost deploymentProvider, která odkazuje na úplnou cestu k umístění, odkud by měla být aplikace nainstalována a udržována:
<deploymentProvider codebase="http://myserver/myapp.application" />
Tato cesta je nastavena tehdy kdy ClickOnce vytvoří aplikaci a je povinná pro nainstalované aplikace.Cesta odkazuje na standardní umístění, odkud instalační program ClickOnce nainstaluje aplikaci a kde vyhledává aktualizace.Používáte-li příkaz xcopy pro kopírování aplikace ClickOnce do jiného umístění, ale neměníte vlastnost deploymentProvider, ClickOnce bude nadále při pokusu o stážení aplikace odkazovat zpět do původního umístění.
Pokud chcete aplikaci přesunout nebo kopírovat, je nutné také aktualizovat cestu deploymentProvider tak, aby klient ve skutečnosti instaloval z nového umístění.Aktualizace této cesty je většinou zdrojem obav, pokud máte nainstalovány aplikace.Pro online aplikace, které jsou vždy spouštěny prostřednictvím původní adresy URL je nastavení deploymentProvider volitelné.Pokud je deploymentProvider nastaven, bude uplatněn; jinak URL použitá ke spuštění aplikace bude použita jako základní adresa URL pro stažení souborů aplikace.
[!POZNÁMKA]
Pokaždé, kdy aktualizujete manifest, musíte jej také znovu podepsat.
Viz také
Koncepty
Poradce při potížích s ClickOnce nasazeními