Sdílet prostřednictvím


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.

  1. Otevřete terminál PowerShellu a přejděte do adresáře s projektem.

  2. 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 nastavit FriendlyName 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}")
    
  3. 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
    
  4. 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:

Installing an untrusted app.

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:

  1. Klikněte pravým tlačítkem myši na soubor .msix a zvolte Vlastnosti.

  2. Vyberte kartu Digitální podpisy.

  3. Zvolte certifikát a stiskněte Podrobnosti.

    Properties pane of an MSIX file with the digital signatures tab selected.

  4. Vyberte Zobrazit certifikát.

  5. Vyberte Nainstalovat certifikát....

  6. 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.

  7. V okně Průvodce importem certifikátu vyberte Umístit všechny certifikáty do následujícího úložiště.

  8. Vyberte Procházet... a pak zvolte důvěryhodné úložiště Lidé. Výběrem možnosti OK zavřete dialogové okno.

    Certificate import wizard window is shown while selecting the Trusted People store.

  9. Vyberte Další a pak Dokončit. Mělo by se zobrazit dialogové okno s informací, že import byl úspěšný.

    Certificate import wizard window with a successful import message.

  10. 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:

Installing a trusted app.

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 .