Share via


Vytváření aplikací ClickOnce k nasazení dalšími osobami

Ne všichni vývojáři, kteří vytvářejí plán nasazení ClickOnce pro nasazení samotných aplikací. Mnoho z nich jednoduše zabalí svou aplikaci pomocí ClickOnce a pak soubory předá zákazníkovi, jako je velká společnost. Zákazník se stane tím, kdo je zodpovědný za hostování aplikace v síti. Toto téma popisuje některé problémy související s takovým nasazením ve verzích rozhraní .NET Framework před verzí 3.5. Potom popisuje nové řešení poskytované pomocí nové funkce "use manifest for trust" v rozhraní .NET Framework 3.5. Nakonec končí doporučenými strategiemi vytváření nasazení ClickOnce pro zákazníky, kteří stále používají starší verze rozhraní .NET Framework.

Problémy související s vytvářením nasazení pro zákazníky

Při plánování nasazení zákazníkovi dojde k několika problémům. První problém se týká podepisování kódu. Aby bylo možné nasadit přes síť, musí být manifest nasazení a manifest aplikace nasazení ClickOnce podepsané digitálním certifikátem. To vyvolává otázku, jestli se má při podepisování manifestů použít certifikát vývojáře nebo certifikát zákazníka.

Otázka, který certifikát použít, je kritický, protože identita aplikace ClickOnce je založená na digitálním podpisu manifestu nasazení. Pokud vývojář podepíše manifest nasazení, může vést ke konfliktům, pokud je zákazník velkou společností a více než jedna divize společnosti nasadí přizpůsobenou verzi aplikace.

Řekněme například, že Adventure Works má finanční oddělení a oddělení lidských zdrojů. Obě oddělení licencují aplikaci ClickOnce od společnosti Microsoft Corporation, která generuje sestavy z dat uložených v databázi SQL. Microsoft dodává každé oddělení s verzí aplikace, která je přizpůsobená pro jejich data. Pokud jsou aplikace podepsané stejným certifikátem Authenticode, uživateli, který se pokusí použít obě aplikace, dojde k chybě, protože ClickOnce považuje druhou aplikaci za stejnou jako první. V takovém případě může zákazník zaznamenat nepředvídatelné a nežádoucí vedlejší účinky, které zahrnují ztrátu jakýchkoli dat uložených místně aplikací.

Dalším problémem souvisejícím s podepisováním kódu je deploymentProvider prvek v manifestu nasazení, který říká ClickOnce, kde hledat aktualizace aplikace. Tento prvek musí být před podepsáním přidán do manifestu nasazení. Pokud se tento prvek přidá později, musí být manifest nasazení znovu podepsán.

Vyžadování podepsání manifestu nasazení zákazníkem

Jedním z řešení tohoto problému ne jedinečných nasazení je podepsání manifestu aplikace vývojářem a podepsání manifestu nasazení zákazníkem. I když tento přístup funguje, přináší další problémy. Vzhledem k tomu, že certifikát Authenticode musí zůstat chráněným assetem, zákazník nemůže certifikát jenom dát vývojáři k podepsání nasazení. I když zákazník může manifest nasazení podepsat sami pomocí nástrojů volně dostupných se sadou .NET Framework SDK, může to vyžadovat více technických znalostí, než je zákazník ochotný nebo schopný poskytnout. V takových případech vývojář obvykle vytvoří aplikaci, web nebo jiný mechanismus, prostřednictvím kterého může zákazník odeslat svoji verzi aplikace k podepisování.

Dopad podepisování zákazníků na zabezpečení aplikace ClickOnce

I když vývojář a zákazník souhlasí s tím, že by zákazník měl podepsat manifest aplikace, vyvolá to další problémy, které obklopují identitu aplikace, zejména v případě, že se vztahuje na nasazení důvěryhodné aplikace. (Další informace o této funkci najdete v tématu Přehled nasazení důvěryhodných aplikací.) Řekněme, že Společnost Adventure Works chce nakonfigurovat své klientské počítače tak, aby všechny aplikace, které jim společnost Microsoft Corporation poskytla, běží s plnou důvěrou. Pokud Adventure Works podepíše manifest nasazení, pak ClickOnce použije podpis zabezpečení společnosti Adventure Work k určení úrovně důvěryhodnosti aplikace.

Vytvoření nasazení zákazníků pomocí manifestu aplikace pro vztah důvěryhodnosti

ClickOnce v rozhraní .NET Framework 3.5 obsahuje novou funkci, která vývojářům a zákazníkům poskytuje nové řešení scénáře podepsání manifestů. Manifest aplikace ClickOnce podporuje nový prvek s názvem <useManifestForTrust> , který umožňuje vývojáři podepsat, že digitální podpis manifestu aplikace je to, co by se mělo použít k rozhodování o důvěryhodnosti. Vývojář používá nástroje pro balení ClickOnce, jako jsou Mage.exe, MageUI.exe a Visual Studio, k zahrnutí tohoto prvku do manifestu aplikace a také k vložení názvu aplikace a názvu aplikace do manifestu.

Při použití <useManifestForTrust>nemusí být manifest nasazení podepsaný certifikátem Authenticode vystaveným certifikační autoritou. Místo toho se může podepsat pomocí certifikátu podepsaného svým držitelem. Certifikát podepsaný svým držitelem vygeneruje zákazník nebo vývojář pomocí standardních nástrojů sady .NET Framework SDK a pak se použije na manifest nasazení pomocí standardních nástrojů pro nasazení ClickOnce. Další informace naleznete v tématu MakeCert.

Použití certifikátu podepsaného svým držitelem pro manifest nasazení představuje několik výhod. Odstraněním potřeby zákazníka získat nebo vytvořit vlastní certifikát Authenticode, <useManifestForTrust> zjednodušuje nasazení zákazníka a zároveň umožňuje vývojáři udržovat v aplikaci vlastní identitu brandingu. Výsledkem je sada podepsaných nasazení, která jsou bezpečnější a mají jedinečné identity aplikací. Tím se eliminuje potenciální konflikt, ke kterému může dojít při nasazování stejné aplikace více zákazníkům.

Podrobné informace o tom, jak vytvořit nasazení ClickOnce s <useManifestForTrust> povolenou funkcí, najdete v tématu Návod: Ruční nasazení aplikace ClickOnce, která nevyžaduje opětovné podepisování a zachovává informace o značce.

Jak funguje manifest aplikace pro vztah důvěryhodnosti za běhu

Pokud chcete lépe pochopit, jak funguje manifest aplikace pro vztah důvěryhodnosti za běhu, podívejte se na následující příklad. Aplikace ClickOnce, která cílí na rozhraní .NET Framework 3.5, je vytvořena Společností Microsoft. Manifest aplikace používá <useManifestForTrust> element a je podepsán Microsoftem. Adventure Works podepíše manifest nasazení pomocí certifikátu podepsaného svým držitelem. Klienti Adventure Works jsou nakonfigurováni tak, aby důvěřovali všem aplikacím podepsaným Microsoftem.

Když uživatel klikne na odkaz na manifest nasazení, ClickOnce nainstaluje aplikaci do počítače uživatele. Informace o certifikátu a nasazení identifikují aplikaci jedinečně pro ClickOnce v klientském počítači. Pokud se uživatel pokusí znovu nainstalovat stejnou aplikaci z jiného umístění, clickOnce může tuto identitu použít k určení, že aplikace již v klientovi existuje.

Dále ClickOnce prozkoumá certifikát Authenticode, který se používá k podepsání manifestu aplikace, který určuje úroveň důvěryhodnosti, kterou ClickOnce udělí. Vzhledem k tomu, že společnost Adventure Works nakonfigurovala své klienty tak, aby důvěřovala všem aplikacím podepsaným Microsoftem, má tato aplikace ClickOnce úplný vztah důvěryhodnosti. Další informace naleznete v tématu Přehled nasazení důvěryhodné aplikace.

Vytvoření zákaznických nasazení pro starší verze

Co když vývojář nasazuje aplikace ClickOnce zákazníkům, kteří používají starší verze rozhraní .NET Framework? Následující části shrnuje několik doporučených řešení společně s výhodami a nevýhodami jednotlivých řešení.

Podepsání nasazení jménem zákazníka

Jednou z možných strategií nasazení je, aby vývojář vytvořil mechanismus pro podepisování nasazení jménem svých zákazníků pomocí vlastního privátního klíče zákazníka. Vývojář tak nebude muset spravovat privátní klíče nebo více balíčků nasazení. Vývojář pouze poskytuje stejné nasazení pro každého zákazníka. Je na zákazníkovi, aby ho přizpůsobil pro své prostředí pomocí podpisové služby.

Jednou z nevýhod této metody je čas a výdaje potřebné k jeho implementaci. I když je možné takovou službu sestavit pomocí nástrojů poskytovaných v sadě .NET Framework SDK, přidá do životního cyklu produktu další dobu vývoje.

Jak jsme si poznamenali dříve v tomto tématu, další nevýhodou je, že verze aplikace každého zákazníka bude mít stejnou identitu aplikace, což může vést ke konfliktům. Pokud se jedná o problém, může vývojář změnit pole Název, které se použije při generování manifestu nasazení, aby každé aplikaci poskytl jedinečný název. Tím se vytvoří samostatná identita pro každou verzi aplikace a odstraní případné konflikty identit. Toto pole odpovídá argumentu -Name mage.exe a pole Název na kartě Název v MageUI.exe.

Řekněme například, že vývojář vytvořil aplikaci s názvem Application1. Místo vytvoření jednoho nasazení s polem Název nastaveným na Application1 může vývojář vytvořit několik nasazení s variantou specifickou pro zákazníka, například Application1-CustomerA, Application1-CustomerB atd.

Nasazení pomocí instalačního balíčku

Druhou možnou strategií nasazení je vygenerovat projekt instalace společnosti Microsoft, který provede počáteční nasazení aplikace ClickOnce. Dá se zadat v jednom z několika různých formátů: jako nasazení MSI, jako spustitelný soubor instalačního souboru (.EXE) nebo jako soubor CAB (.cab) společně s dávkovým skriptem.

Pomocí této techniky by vývojář poskytl zákazníkovi nasazení, které zahrnuje soubory aplikací, manifest aplikace a manifest nasazení, který slouží jako šablona. Zákazník by spustil instalační program, který by ho vyzve k zadání adresy URL nasazení (server nebo umístění sdílené složky, ze kterého budou uživatelé instalovat aplikaci ClickOnce), a také digitální certifikát. Instalační aplikace se může také rozhodnout zobrazit výzvu k zadání dalších možností konfigurace ClickOnce, jako je například interval kontroly aktualizací. Jakmile tyto informace shromáždíte, instalační program vygeneruje skutečný manifest nasazení, podepíše ji a publikuje aplikaci ClickOnce do určeného umístění serveru.

Existují tři způsoby, jak může zákazník v této situaci podepsat manifest nasazení:

  1. Zákazník může použít platný certifikát vydaný certifikační autoritou (CA).

  2. Jako variantu tohoto přístupu se zákazník může rozhodnout podepsat manifest nasazení certifikátem podepsaným svým držitelem. Nevýhodou je, že aplikace zobrazí slova "Neznámý vydavatel", když se uživateli zobrazí dotaz, zda jej má nainstalovat. Výhodou však je, že zabrání menším zákazníkům v tom, aby museli trávit čas a peníze vyžadované pro certifikát vydaný certifikační autoritou.

  3. Vývojář může nakonec do instalačního balíčku zahrnout vlastní certifikát podepsaný svým držitelem. To představuje potenciální problémy s identitou aplikace popsané dříve v tomto tématu.

    Nevýhodou metody projektu nasazení instalace je čas a výdaje potřebné k vytvoření vlastní aplikace nasazení.

Požádejte zákazníka, aby vygeneroval manifest nasazení.

Třetí možnou strategií nasazení je předání pouze souborů aplikací a manifestu aplikace zákazníkovi. V tomto scénáři zodpovídá zákazník za generování a podepsání manifestu nasazení pomocí sady .NET Framework SDK.

Nevýhodou této metody je, že vyžaduje, aby zákazník nainstaloval nástroje sady .NET Framework SDK a aby měl vývojáře nebo správce systému, který je zkušený při jejich používání. Někteří zákazníci mohou požadovat řešení, které vyžaduje malé nebo žádné technické úsilí na jejich straně.