Dela via


Distribuera din paketerade skrivbordsapp

Om du bestämmer dig för att paketera din skrivbordsapp i ett MSIX-paket (se Skapa ett MSIX-paket från koden) kan du publicera ditt paketerade program till Microsoft Store eller läsa in det separat på en eller flera enheter.

Anmärkning

Har du en plan för hur du kan överföra användare till ditt paketerade program? Innan du distribuerar din app kan du läsa avsnittet Övergångsanvändare till din paketerade app i den här guiden för att få några idéer.

Distribuera ditt program genom att publicera det i Microsoft Store

Microsoft Store är ett bekvämt sätt för kunder att hämta din app.

Publicera ditt program till Microsoft Store för att nå den bredaste målgruppen. Organisationskunder kan också hämta ditt program för att distribuera internt till sina organisationer via Microsoft Store för företag.

Om du planerar att publicera till Microsoft Store får du några extra frågor som en del av inlämningsprocessen. Det beror på att paketmanifestet deklarerar en begränsad funktion med namnet runFullTrust, och vi måste godkänna programmets användning av den funktionen. Du kan läsa mer om det här kravet här: Begränsade funktioner.

Du behöver inte signera din ansökan innan du skickar den till butiken.

Viktigt!

Om du planerar att publicera programmet i Microsoft Store kontrollerar du att programmet fungerar korrekt på enheter som kör Windows 10 S eller Windows 11 S. Detta är ett store-krav. Se Testa din Windows-app för Windows 10 S eller Windows 11 S.

Distribuera ditt program utan att placera det på Microsoft Store

Om du hellre vill distribuera ditt program utan att använda Store kan du distribuera appar manuellt till en eller flera enheter.

Detta kan vara meningsfullt om du vill ha större kontroll över distributionsupplevelsen eller om du inte vill engagera dig i Microsoft Store-certifieringsprocessen.

Om du vill distribuera ditt program till andra enheter utan att placera det i Store måste du skaffa ett certifikat, signera ditt program med hjälp av certifikatet och sedan separat läsa in programmet på dessa enheter.

Du kan skapa ett certifikat eller hämta ett från en populär leverantör, till exempel Verisign.

Om du planerar att distribuera ditt program till enheter som kör Windows 10 S eller Windows 11 S måste programmet signeras av Microsoft Store så att du måste gå igenom processen för att skicka store innan du kan distribuera programmet till dessa enheter.

Om du skapar ett certifikat måste du installera det i certifikatarkivet Betrodd rot eller Betrodda personer på varje enhet som kör din app. Om du får ett certifikat från en populär leverantör behöver du inte installera något på andra system förutom din app.

Viktigt!

Kontrollera att utgivarnamnet på certifikatet matchar appens utgivarnamn.

Information om hur du signerar ditt program med hjälp av ett certifikat finns i Signera ett programpaket med SignTool.

Information om hur du sidladdar programmet till andra enheter finns i Sidladda LOB-appar i Windows.

Överföra användare till din paketerade app

Innan du distribuerar din app bör du överväga att lägga till några tillägg i paketmanifestet för att hjälpa användarna att komma åt vanan att använda din paketerade app. Här är några saker du kan göra.

  • Länka befintliga paneler i Start-menyn och aktivitetsfältets knappar till din paketerade app.
  • Associera ditt paketerade program med en uppsättning filtyper.
  • Gör så att ditt paketerade program öppnar vissa typer av filer som standard.

En fullständig lista över tillägg och vägledningen för hur du använder dem finns i Övergång av användare till din app.

Överväg också att lägga till kod i ditt paketerade program som utför dessa uppgifter:

  • Migrerar användardata som är associerade med ditt skrivbordsprogram till lämpliga mappplatser för din paketerade app.
  • Ger användarna möjlighet att avinstallera skrivbordsversionen av din app.

Låt oss prata om var och en av dessa uppgifter. Vi börjar med migrering av användardata.

Migrera användardata

Om du ska lägga till kod som migrerar användardata är det bäst att köra koden först när programmet startas. Innan du migrerar användardata visar du en dialogruta för användaren som förklarar vad som händer, varför det rekommenderas och vad som kommer att hända med deras befintliga data.

Här är ett exempel på hur du kan göra detta i en . NET-baserad paketerad app.

private void MigrateUserData()
{
    String sourceDir = Environment.GetFolderPath
        (Environment.SpecialFolder.ApplicationData) + "\\AppName";

    if (sourceDir != null)
    {
        DialogResult migrateResult = MessageBox.Show
            ("Would you like to migrate your data from the previous version of this app?",
             "Data Migration", MessageBoxButtons.YesNo);

        if (migrateResult.Equals(DialogResult.Yes))
        {
            String destinationDir =
                Windows.Storage.ApplicationData.Current.LocalFolder.Path + "\\AppName";

            Process process = new Process();
            process.StartInfo.FileName = "robocopy.exe";
            process.StartInfo.Arguments = "%LOCALAPPDATA%\\AppName " + destinationDir + " /move";
            process.StartInfo.CreateNoWindow = true;
            process.Start();
            process.WaitForExit();

            if (process.ExitCode > 1)
            {
                //Migration was unsuccessful -- you can choose to block/retry/other action
            }
        }
    }
}

Avinstallera skrivbordsversionen av din app

Det är bättre att inte avinstallera användarnas skrivbordsprogram utan att först be dem om behörighet. Visa en dialogruta som ber användaren om den behörigheten. Användarna kanske bestämmer sig för att inte avinstallera skrivbordsversionen av din app. Om det händer måste du bestämma om du vill blockera användningen av skrivbordsprogrammet eller stödja användning sida vid sida av båda apparna.

Här är ett exempel på hur du kan göra detta i en . NET-baserad paketerad app.

Om du vill visa hela kontexten för det här kodfragmentet kan du se filen MainWindow.cs i det här WPF-exempelprogrammet för bildvisning med övergång/migrering/avinstallation.

private void RemoveDesktopApp()
{
    //Typically, you can find your uninstall string at this location.
    String uninstallString = (String)Microsoft.Win32.Registry.GetValue
        (@"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion" +
         @"\Uninstall\{7AD02FB8-B85E-44BC-8998-F4803BA5A0E3}\", "UninstallString", null);

    //Detect if the previous version of the Desktop application is installed.
    if (uninstallString != null)
    {
        DialogResult uninstallResult = MessageBox.Show
            ("To have the best experience, consider uninstalling the "
              + " previous version of this app. Would you like to do that now?",
              "Uninstall the previous version", MessageBoxButtons.YesNo);

        if (uninstallResult.Equals(DialogResult.Yes))
        {
                    string[] uninstallArgs = uninstallString.Split(' ');

            Process process = new Process();
            process.StartInfo.FileName = uninstallArgs[0];
            process.StartInfo.Arguments = uninstallArgs[1];
            process.StartInfo.CreateNoWindow = true;

            process.Start();
            process.WaitForExit();

            if (process.ExitCode != 0)
            {
                //Uninstallation was unsuccessful - You can choose to block the application here.
            }
        }
    }

}

Nästa steg

Har du frågor? Fråga oss i vår Tech Community.

Om du stöter på problem med att publicera ditt program i Store innehåller det här blogginlägget några användbara tips.