Publikování zabalené aplikace .NET MAUI pro Windows pomocí rozhraní příkazového řádku
Při distribuci aplikace .NET Pro víceplatformní aplikace (.NET MAUI) pro Windows můžete aplikaci a její závislosti publikovat do složky pro nasazení do jiného systému. Aplikaci můžete také zabalit do balíčku MSIX, který má mnoho výhod pro uživatele, kteří si aplikaci instalují. Další informace o výhodách MSIX najdete v tématu Co je MSIX?
Vytvoření podpisového certifikátu
Pro publikování aplikace musíte použít podpisový certifikát. Tento certifikát slouží k podepsání balíčku MSIX. Následující kroky ukazují, jak vytvořit a nainstalovat certifikát podepsaný svým držitelem pomocí PowerShellu:
Poznámka:
Při vytváření a používání certifikátu podepsaného svým držitelem můžou aplikaci spouštět jenom uživatelé, kteří nainstalují a důvěřují vašemu certifikátu. To je snadné implementovat pro testování, ale může zabránit dalším uživatelům v instalaci vaší aplikace. Až budete připraveni publikovat aplikaci, doporučujeme použít certifikát vystavený důvěryhodným zdrojem. Tento systém centralizované důvěryhodnosti pomáhá zajistit, aby ekosystém aplikací byl na úrovni ověřování, aby chránil uživatele před škodlivými aktéry.
Otevřete terminál PowerShellu a přejděte do adresáře s projektem.
New-SelfSignedCertificate
Pomocí příkazu vygenerujte certifikát podepsaný svým držitelem.Tato
<PublisherName>
hodnota se uživateli zobrazí při instalaci aplikace, zadá vlastní hodnotu a vynechá< >
znaky. Parametr můžete nastavitFriendlyName
na libovolný řetězec textu, který chcete.New-SelfSignedCertificate -Type Custom ` -Subject "CN=<PublisherName>" ` -KeyUsage DigitalSignature ` -FriendlyName "My temp dev cert" ` -CertStoreLocation "Cert:\CurrentUser\My" ` -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
K dotazování úložiště certifikátů pro vytvořený certifikát použijte následující příkaz PowerShellu:
Get-ChildItem "Cert:\CurrentUser\My" | Format-Table Thumbprint, Subject, FriendlyName
Měly by se zobrazit výsledky podobné následujícímu výstupu:
Thumbprint Subject FriendlyName ---------- ------- ------------ DE8B962E7BF797CB48CCF66C8BCACE65C6585E2F CN=1f23fa36-2a2f-475e-a69e-3a14fe56ed4 A6CA34FD0BA6B439787391F51C87B1AD0C9E7FAE CN=someone@microsoft.com 94D93DBC97D4F7E4364A215F15C6ACFEFC71E569 CN=localhost ASP.NET Core HTTPS development certificate F14211566DACE867DA0BF9C2F9C47C01E3CF1D9B CN=john 568027317BE8EE5E6AACDE5079D2DE76EC46EB88 CN=e1f823e2-4674-03d2-aaad-21ab23ad84ae DC602EE83C95FEDF280835980E22306067EFCA96 CN=John Smith, OU=MSE, OU=Users, DC=com 07AD38F3B646F5AAC16F2F2570CAE40F4842BBE0 CN=Contoso My temp dev cert
Kryptografický otisk certifikátu se použije později, proto ho zkopírujte do schránky. Je to hodnota kryptografického otisku, jejíž položka odpovídá předmětu a FriendlyName vašeho certifikátu.
Další informace najdete v tématu Vytvoření certifikátu pro podepisování balíčků.
Konfigurace nastavení sestavení projektu
Soubor projektu je dobrým místem pro nastavení sestavení specifického pro Windows. Možná nebudete chtít do souboru projektu vložit některá nastavení, například hesla. Nastavení popsaná v této části lze předat na příkazovém řádku s formátem -p:name=value
. Pokud je nastavení již definováno v souboru projektu, přepíše nastavení předané na příkazovém řádku nastavení projektu.
Do souboru projektu přidejte následující <PropertyGroup>
uzel. Tato skupina vlastností je zpracována pouze v případě, že cílová architektura je Windows a konfigurace je nastavena na Release
. Tato konfigurační část se spustí při každém sestavení nebo publikování v Release
režimu.
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(Configuration)' == 'Release'">
<AppxPackageSigningEnabled>true</AppxPackageSigningEnabled>
<PackageCertificateThumbprint>A10612AF095FD8F8255F4C6691D88F79EF2B135E</PackageCertificateThumbprint>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(RuntimeIdentifierOverride)' != ''">
<RuntimeIdentifier>$(RuntimeIdentifierOverride)</RuntimeIdentifier>
</PropertyGroup>
<PackageCertificateThumbprint>
Hodnotu vlastnosti nahraďte kryptografickým otiskem certifikátu, který jste předtím vygenerovali. Toto nastavení můžete také odebrat ze souboru projektu a zadat ho na příkazovém řádku. Například: -p:PackageCertificateThumbprint=A10612AF095FD8F8255F4C6691D88F79EF2B135E
.
Druhá <PropertyGroup>
v příkladu je nutná k vyřešení chyby v sadě Windows SDK. Další informace o chybě najdete v tématu Problém s WindowsAppSDK č. 3337.
Publikování
Aplikaci publikujete tak, že otevřete příkazový řádek pro vývojáře pro terminál VS 2022 a přejdete do složky projektu aplikace .NET MAUI. dotnet publish
Spusťte příkaz a zadejte následující parametry:
Parametr | Hodnota |
---|---|
-f |
Cílová architektura, která je net8.0-windows{version} . Tato hodnota je TFM systému Windows, například net8.0-windows10.0.19041.0 . Ujistěte se, že je tato hodnota identická s hodnotou v uzlu v <TargetFrameworks> souboru .csproj . |
-c |
Konfigurace sestavení, což je Release . |
-p:RuntimeIdentifierOverride=win10-x64 - nebo - -p:RuntimeIdentifierOverride=win10-x86 |
Vyhne se chybě popsané v problému s WindowsAppSDK č. 3337. -x64 Zvolte nebo -x86 verzi parametru na základě cílové platformy. |
Upozorňující
Pokus o publikování řešení .NET MAUI způsobí dotnet publish
, že se příkaz pokusí publikovat každý projekt v řešení jednotlivě, což může způsobit problémy při přidání dalších typů projektů do řešení. dotnet publish
Proto by měl být příkaz vymezený na váš projekt aplikace .NET MAUI.
Příklad:
dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64
Poznámka:
V .NET 8 se příkaz dotnet publish
ve výchozím nastavení nastaví na Release
konfiguraci. Proto je možné konfiguraci sestavení z příkazového řádku vynechat.
Publikování sestavení a balíčků aplikace, zkopírování podepsaného balíčku do složky bin\Release\net8.0-windows10.0.19041.0\win10-x64\AppPackages\<appname>\ <appname> je složka pojmenovaná jak za projektem, tak i verzí. V této složce je soubor msix a to je balíček aplikace.
Další informace o dotnet publish
příkazu naleznete v tématu dotnet publish.
Instalace aplikace
Pokud chcete aplikaci nainstalovat, musí být podepsaná certifikátem, kterému už důvěřujete. Pokud tomu tak není, Windows vám nedovolí aplikaci nainstalovat. Zobrazí se dialogové okno podobné následujícímu, kde je zakázané tlačítko Instalovat:
Všimněte si, že na předchozím obrázku byl Publisher neznámý.
Pokud chcete důvěřovat certifikátu balíčku aplikace, proveďte následující kroky:
Klikněte pravým tlačítkem myši na soubor .msix a zvolte Vlastnosti.
Vyberte kartu Digitální podpisy.
Zvolte certifikát a stiskněte Podrobnosti.
Vyberte Zobrazit certifikát.
Vyberte Nainstalovat certifikát....
Zvolte Místní počítač a pak vyberte Další.
Pokud vás nástroj Řízení uživatelských účtů vyzve k tomu, abyste této aplikaci povolili provádění změn v zařízení?, vyberte Ano.
V okně Průvodce importem certifikátu vyberte Umístit všechny certifikáty do následujícího úložiště.
Vyberte Procházet... a pak zvolte důvěryhodné úložiště Lidé. Výběrem možnosti OK zavřete dialogové okno.
Vyberte Další a pak Dokončit. Mělo by se zobrazit dialogové okno s informací, že import byl úspěšný.
Pokud chcete zavřít všechny okno, vyberte ok v libovolném okně otevřeném v rámci tohoto procesu.
Teď zkuste znovu otevřít soubor balíčku a nainstalujte aplikaci. Mělo by se zobrazit dialogové okno podobné následujícímu, se správně zobrazeným vydavatelem:
Pokud chcete aplikaci nainstalovat, vyberte tlačítko Nainstalovat.
Aktuální omezení
Následující seznam popisuje aktuální omezení při publikování a balení:
- Publikovaná aplikace nefunguje, pokud se ji pokusíte spustit přímo se spustitelným souborem mimo složku publikování.
- Způsob, jak aplikaci spustit, je nejprve ji nainstalovat prostřednictvím zabaleného souboru MSIX .