Preparar um pacote para um aplicativo de área de trabalhoPrepare to package a desktop application

Este artigo lista o que você precisa saber antes de empacotar o aplicativo da área de trabalho.This article lists the things you need to know before you package your desktop application. Poderá não ser necessário fazer muito para preparar o aplicativo para o processo de empacotamento, mas se qualquer um dos itens abaixo se aplica ao aplicativo, será necessário lidar com isso antes do empacotamento.You might not have to do much to get your application ready for the packaging process, but if any of the items below apply to your application, you need to address it before packaging.

  • Seu aplicativo .NET precisa de uma versão do .NET Framework anterior à 4.6.2.Your .NET application requires a version of the .NET Framework earlier than 4.6.2. Se estiver empacotando um aplicativo .NET, recomendamos que seu aplicativo dê preferência ao .NET Framework 4.6.2 ou posterior.If you are packaging a .NET application, we recommend that your application target .NET Framework 4.6.2 or later. A capacidade de instalar e executar aplicativos da área de trabalho empacotados apareceu pela primeira vez no Windows 10, versão 1607 (também chamada de Atualização de Aniversário) e essa versão do sistema operacional inclui o .NET Framework 4.6.2 por padrão.The ability to install and run packaged desktop applications was first introduced in Windows 10, version 1607 (also called the Anniversary Update), and this OS version includes the .NET Framework 4.6.2 by default. Versões posteriores do sistema operacional incluem versões posteriores do .NET Framework.Later OS versions include later versions of the .NET Framework. Para obter uma lista completa das versões do .NET incluídas nas versões posteriores do Windows 10, confira este artigo.For a full list of what versions of .NET are included in later versions of Windows 10, see this article.

    Espera-se que a preferência por versões do .NET Framework anteriores à 4.6.2 funcione na maioria dos casos.Targeting versions of the .NET Framework earlier than 4.6.2 in packaged desktop applications is expected to work in most cases. No entanto, caso dê preferência a uma versão anterior à 4.6.2, deverá testá-la completamente no aplicativo de área de trabalho empacotado antes da distribuição para os usuários.However, if you target an earlier version than 4.6.2, you should fully test your packaged desktop application before distributing it to users.

    • 4.0 - 4.6.1: Espera-se que esses aplicativos que visam essas versões do .NET Framework funcionem sem problemas na versão 4.6.2 ou posteriores.4.0 - 4.6.1: Applications that target these versions of the .NET Framework are expected to run without issues on 4.6.2 or later. Portanto, esses aplicativos devem ser instalados e executados sem alterações no Windows 10, versão 1607 ou posteriores com a versão do .NET Framework incluída no sistema operacional.Therefore, these applications should install and run without changes on Windows 10, version 1607 or later with the version of the .NET Framework that is included with the OS.

    • 2.0 e 3.5: Em nossos testes, os aplicativos de área de trabalho empacotados que visam essas versões do .NET Framework geralmente funcionam, mas podem apresentar problemas de desempenho em alguns cenários.2.0 and 3.5: In our testing, packaged desktop applications that target these versions of the .NET Framework generally work but may exhibit performance issues in some scenarios. Para que esses aplicativos empacotados sejam instalados e funcionem, o recurso .NET Framework 3.5 precisa estar instalado no computador de destino (esse recurso também inclui o .NET Framework 2.0 e 3.0).In order for these packaged applications to install and run, the .NET Framework 3.5 feature must be installed on the target machine (this feature also includes .NET Framework 2.0 and 3.0). Você também deve testar esses aplicativos totalmente depois de empacotá-los.You should also test these applications thoroughly after you package them.

  • O aplicativo sempre é executado com privilégios de segurança elevados.Your application always runs with elevated security privileges. O aplicativo precisa funcionar sendo executado como o usuário interativo.Your application needs to work while running as the interactive user. Os usuários que instalam o aplicativo poderão não ser administradores de sistema, então exigir privilégios elevados para o aplicativo significa que ele não funcionará corretamente para usuários padrão.Users who install your application may not be system administrators, so requiring your application to run elevated means that it won't run correctly for standard users. Caso planeje publicar o aplicativo na Microsoft Store, aplicativos que precisem de elevação de qualquer parte da funcionalidade não serão aceitos na Store.If you plan on publishing your app to the Microsoft Store, apps that require elevation for any part of their functionality won't be accepted into the Store.

  • O aplicativo precisa de um driver de modo kernel ou de um serviço do Windows.Your application requires a kernel-mode driver or a Windows service. O MSIX não é compatível com um driver de modo kernel ou com um serviço do Windows que precisa funcionar em uma conta do sistema.MSIX does not support a kernel-mode driver or a Windows service that needs to run under a system account. Em vez de um serviço Windows, use uma tarefa em segundo plano.Instead of a Windows service, use a background task.

  • Os módulos do aplicativo são carregados no processo em processos que não estão no pacote do aplicativo do Windows.Your app's modules are loaded in-process to processes that are not in your Windows app package. Isso não é permitido, o que significa que extensões de processo, como extensões do shell, não têm suporte.This isn't permitted, which means that in-process extensions, like shell extensions, aren't supported. Mas se você tiver dois aplicativos no mesmo pacote, será possível fazer comunicação entre processos entre eles.But if you have two apps in the same package, you can do inter-process communication between them.

  • Garanta que todas as extensões instaladas pelo aplicativo serão instaladas no local em que o aplicativo for instalado.Ensure that any extensions installed by the application will install where the application is installed. O Windows permite a usuários e gerentes de TI alterar o local de instalação padrão dos pacotes.Windows allows users and IT managers to change the default install location for packages. Veja "Configurações->Sistema->Armazenamento->Mais Configurações de Armazenamento-> Alterar onde o novo conteúdo é salvo -> Novos aplicativos serão salvos em".See "Settings->System->Storage->More Storage Settings-> Change where new content is saved to -> New Apps will save to". Caso esteja instalando uma extensão com o aplicativo, garanta que ela não tenha restrições adicionais de pasta de instalação.If you are installing an extension with your application, make sure that the extension does not have additional installation folder restrictions. Por exemplo, algumas extensões podem desativar a instalação da extensão em pastas que não sejam do sistema.For example, some extensions may disable installing their extension to non-system drives. Isso resultará em um erro 0x80073D01 (ERROR_DEPLOYMENT_BLOCKED_BY_POLICY) caso o local padrão tenha sido alterado.This will result in an error 0x80073D01 (ERROR_DEPLOYMENT_BLOCKED_BY_POLICY) if the default location has been changed.

  • O aplicativo usa uma AUMID (ID do Modelo do Usuário do Aplicativo) .Your application uses a custom Application User Model ID (AUMID). Se o processo chamar SetCurrentProcessExplicitAppUserModelID para definir sua própria AUMID, ele poderá usar apenas a AUMID gerada para ele pelo ambiente modelo/pacote do aplicativo do Windows.If your process calls SetCurrentProcessExplicitAppUserModelID to set its own AUMID, then it may only use the AUMID generated for it by the application model environment/Windows app package. Não é possível definir AUMIDs personalizadas.You can't define custom AUMIDs.

  • Seu aplicativo modifica o hive do Registro HKEY_LOCAL_MACHINE (HKLM) .Your application modifies the HKEY_LOCAL_MACHINE (HKLM) registry hive. Qualquer tentativa do aplicativo de criar uma chave HKLM, ou de abrir uma para modificação, resultará em uma falha de acesso negado.Any attempt by your application to create an HKLM key, or to open one for modification, will result in an access-denied failure. Lembre-se de que seu aplicativo tem sua própria exibição virtualizada privada do Registro, então a noção de um hive de Registro no âmbito do usuário e do computador (que é do que se trata o HKLM) não se aplica.Remember that your application has its own private virtualized view of the registry, so the notion of a user- and machine-wide registry hive (which is what HKLM is) does not apply. Você precisará encontrar outra maneira de fazer o que o HKLM faz, como, por exemplo, gravar em HKEY_CURRENT_USER (HKCU).You will need to find another way of achieving what you were using HKLM for, like writing to HKEY_CURRENT_USER (HKCU) instead.

  • O aplicativo usa uma subchave de Registro ddeexec como um meio de iniciar outro aplicativo.Your application uses a ddeexec registry subkey as a means of launching another app. Em vez disso, use um dos manipuladores de verbo DelegateExecute conforme configurado pelas várias extensões ativáveis* no manifesto de pacote do aplicativo.Instead, use one of the DelegateExecute verb handlers as configured by the various Activatable* extensions in your app package manifest.

  • O aplicativo grava na pasta AppData ou no Registro com a intenção de compartilhar os dados com outro aplicativo.Your application writes to the AppData folder or to the registry with the intention of sharing data with another app. Após a conversão, a pasta AppData é redirecionada para o armazenamento de dados de aplicativo local, que é um repositório particular para cada aplicativo.After conversion, AppData is redirected to the local app data store, which is a private store for each app.

    Todas as entradas que o aplicativo grava para o hive de Registro HKEY_LOCAL_MACHINE são redirecionadas para um arquivo binário isolado e as possíveis entradas que o aplicativo grava no hive de Registro HKEY_CURRENT_USER são colocadas em um local privado por usuário e por aplicativo.All entries that your application writes to the HKEY_LOCAL_MACHINE registry hive are redirected to an isolated binary file and any entries that your application writes to the HKEY_CURRENT_USER registry hive are placed into a private per-user, per-app location. Para obter mais detalhes sobre o redirecionamento de arquivo e Registro, consulte Bastidores da Ponte de Desktop.For more details about file and registry redirection, see Behind the scenes of the Desktop Bridge.

    Use uma maneira diferente de compartilhamento de dados entre processos.Use a different means of inter-process data sharing. Para saber mais, consulte Armazene e recupere configurações e outros dados de aplicativos.For more info, see Store and retrieve settings and other app data.

  • O aplicativo grava no diretório de instalação do aplicativo.Your application writes to the install directory for your app. Por exemplo, o aplicativo grava para um arquivo de log que você coloca no mesmo diretório do exe.For example, your application writes to a log file that you put in the same directory as your exe. Isso não é aceito, portanto, você precisará encontrar outro local, como o armazenamento de dados de aplicativo local.This isn't supported, so you'll need to find another location, like the local app data store.

  • Seu aplicativo usa o diretório de trabalho atual.Your application uses the current working directory. No tempo de execução, o aplicativo da área de trabalho empacotado não terá o mesmo diretório de trabalho especificado anteriormente no atalho .LNK da área de trabalho.At runtime, your packaged desktop application won't get the same working directory that you previously specified in your desktop .LNK shortcut. Você precisa alterar o CWD no tempo de execução caso ter o diretório correto for importante para que o aplicativo funcione corretamente.You need to change your CWD at runtime if having the correct directory is important for your application to function correctly.

    Observação

    Caso o aplicativo precise ser gravado no diretório de instalação ou usar o diretório de trabalho atual, também será possível considerar adicionar uma correção de tempo de execução usando a Estrutura de Suporte do Pacote do pacote.If your app needs to write to the installation directory or use the current working directory, you can also consider adding a runtime fixup using the Package Support Framework to your package. Para obter mais detalhes, veja este artigo.For more details, see this article.

  • A instalação do aplicativo precisa da interação do usuário.Your application installation requires user interaction. O instalador do aplicativo precisa poder ser executado silenciosamente e precisa instalar todos os pré-requisitos que não estejam por padrão em uma imagem limpa do sistema operacional.Your application installer must be able to run silently, and it must install all of its prerequisites that aren't on by default on a clean OS image.

  • Seu aplicativo requer UIAccess.Your application requires UIAccess. Se o aplicativo especifica UIAccess=true no elemento requestedExecutionLevel do manifesto UAC, a conversão em MSIX é compatível no momento.If your application specifies UIAccess=true in the requestedExecutionLevel element of the UAC manifest, conversion to MSIX isn't supported currently. Para obter mais informações, consulte Visão geral sobre a Automação da Interface do Usuário.For more info, see UI Automation Security Overview.

  • O aplicativo expõe objetos COM.Your application exposes COM objects. Os processos e as extensões no pacote podem registrar e usar servidores COM & OLE, tanto dentro quanto fora do processo (OOP).Processes and extensions from within the package can register and use COM & OLE servers, both in-process and out-of-process (OOP). A Atualização para Criadores adiciona suporte a COM integrados, o que oferece a capacidade de registrar servidores OOP COM & OLE que agora ficam visíveis fora do pacote.The Creators Update adds Packaged COM support which provides the ability to register OOP COM & OLE servers that are now visible outside the package. Veja Suporte ao Servidor COM e ao Documento OLE para Ponte de Desktop.See COM Server and OLE Document support for Desktop Bridge.

    O suporte ao COM Integrado funciona com APIs COM existentes, mas não funcionará em extensões de aplicativo que dependem da leitura direta do Registro, uma vez que a localização do COM Integrado é privada.Packaged COM support works with existing COM APIs, but will not work for application extensions that rely upon directly reading the registry, as the location for Packaged COM is in a private location.

  • O aplicativo expõe assemblies do GAC para serem usados por outros processos.Your application exposes GAC assemblies for use by other processes. O aplicativo não pode expor conjuntos GAC para uso por processos originados de executáveis externos ao pacote do aplicativo do Windows.Your application cannot expose GAC assemblies for use by processes originating from executables external to your Windows app package. Os processos de dentro do pacote podem registrar e usar conjuntos GAC normalmente, mas eles não estarão visíveis externamente.Processes from within the package can register and use GAC assemblies as normal, but they will not be visible externally. Isso significa que cenários de interoperabilidade como OLE não funcionarão se forem invocados por processos externos.This means interop scenarios like OLE will not function if invoked by external processes.

  • O aplicativo está vinculando bibliotecas de runtime C (CRT) de maneira incompatível.Your application is linking C runtime libraries (CRT) in an unsupported manner. A biblioteca de runtime C/C++ da Microsoft oferece rotinas de programação para o sistema operacional Microsoft Windows.The Microsoft C/C++ runtime library provides routines for programming for the Microsoft Windows operating system. Essas rotinas automatizam muitas tarefas comuns de programação que não são fornecidas pelas linguagens C e C++.These routines automate many common programming tasks that are not provided by the C and C++ languages. Caso o aplicativo use a biblioteca de runtime C/C++, você precisará garantir que ela seja vinculada de maneira compatível.If your application utilizes C/C++ runtime library, you need to ensure it is linked in a supported manner.

    O Visual Studio 2017 oferece suporte à vinculação estática e dinâmica para permitir que o código use arquivos DLL comuns, ou a vinculação estática, para vincular a biblioteca diretamente no código, para a versão atual da CRT.Visual Studio 2017 supports both static and dynamic linking, to let your code use common DLL files, or static linking, to link the library directly into your code, to the current version of the CRT. Se possível, recomendamos que o aplicativo use vinculação dinâmica com VS 2017.If possible, we recommend your application use dynamic linking with VS 2017.

    O suporte nas versões anteriores do Visual Studio varia.Support in previous versions of Visual Studio varies. Para obter detalhes, consulte a tabela a seguir:See the following table for details:

    Versão do Visual StudioVisual Studio versionVinculação dinâmicaDynamic linkingVinculação estáticaStatic linking
    2005 (VC 8)2005 (VC 8)Sem suporteNot supportedSuportadoSupported
    2008 (VC 9)2008 (VC 9)Sem suporteNot supportedSuportadoSupported
    2010 (VC 10)2010 (VC 10)SuportadoSupportedSuportadoSupported
    2012 (VC 11)2012 (VC 11)SuportadoSupportedSem suporteNot supported
    2013 (VC 12)2013 (VC 12)SuportadoSupportedSem suporteNot supported
    2015 e 2017 (VC 14)2015 and 2017 (VC 14)SuportadoSupportedSuportadoSupported

    Observação: Em todos os casos, você deve vincular à última CRT publicamente disponível.Note: In all cases, you must link to the latest publicly available CRT.

  • Seu aplicativo instala e carrega os assemblies da pasta lado a lado do Windows.Your application installs and loads assemblies from the Windows side-by-side folder. Por exemplo, o aplicativo usa bibliotecas de runtime C VC8 ou VC9 e as vincula dinamicamente da pasta lado a lado do Windows, ou seja, o código está usando os arquivos DLL comuns de uma pasta compartilhada.For example, your application uses C runtime libraries VC8 or VC9 and is dynamically linking them from Windows side-by-side folder, meaning your code is using the common DLL files from a shared folder. Isso não tem suporte.This is not supported. Você precisará vinculá-las de forma estática vinculando-as aos arquivos da biblioteca redistribuível diretamente no código.You will need to statically link them by linking to the redistributable library files directly into your code.

  • O aplicativo usa uma dependência na pasta System32/SysWOW64.Your application uses a dependency in the System32/SysWOW64 folder. Para fazer essas DLLs funcionarem, você deve incluí-las na parte do sistema de arquivos virtual do pacote de aplicativo do Windows.To get these DLLs to work, you must include them in the virtual file system portion of your Windows app package. Isso garante que o aplicativo se comporte como se as DLLs tivessem sido instaladas na pasta System32/SysWOW64.This ensures that the application behaves as if the DLLs were installed in the System32/SysWOW64 folder. Na raiz do pacote, crie uma pasta chamada VFS.In the root of the package, create a folder called VFS. Dentro dessa pasta, crie uma pasta SystemX64 e uma SystemX86.Inside that folder create a SystemX64 and SystemX86 folder. Em seguida, coloque a versão de 32 bits de sua DLL na pasta SystemX86 e a versão de 64 bits na pasta SystemX64.Then, place the 32-bit version of your DLL in the SystemX86 folder, and place the 64-bit version in the SystemX64 folder.

  • O aplicativo usa um pacote de estrutura VCLibs.Your app uses a VCLibs framework package. Caso esteja convertendo um aplicativo C++ Win32, será necessário lidar com a implantação do Visual C++ Runtime.If you are converting a C++ Win32 app, you must handle the deployment of the Visual C++ Runtime. O SDK do Windows e o Visual Studio 2019 incluem os pacotes de estrutura mais recentes das versões 11.0, 12.0 e 14.0 do Visual C++ Runtime nas seguintes pastas:Visual Studio 2019 and the Windows SDK include the latest framework packages for version 11.0, 12.0 and 14.0 of the Visual C++ Runtime in the following folders:

    • Pacotes de estrutura VC 14.0: C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0VC 14.0 framework packages: C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0

    • Pacotes de estrutura VC 12.0: C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.120\14.0VC 12.0 framework packages: C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.120\14.0

    • Pacotes de estrutura VC 11.0: C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0VC 11.0 framework packages: C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0

    Para usar um desses pacotes, você deve fazer referência a ele como uma dependência no manifesto do pacote.To use one of these packages, you must reference the package as a dependency in your package manifest. Quando os clientes instalam a versão de varejo do aplicativo pela Microsoft Store, o pacote será instalado pela Store juntamente com o aplicativo.When customers install the retail version of your app from the Microsoft Store, the package will be installed from the Store along with your app. As dependências não serão instaladas caso você carregue o aplicativo em outro local.The dependencies will not get installed if you side load your app. Para instalar as dependências manualmente, você precisa instalar o pacote de estrutura correto usando o pacote de aplicativo apropriado para x86, x64 ou ARM localizado nas pastas de instalação listadas acima.To install the dependencies manually, you must install the appropriate framework package using the appropriate .appx package for x86, x64, or ARM located in the installation folders listed above.

    Para fazer referência a um pacote de estrutura Visual C++ Runtime no aplicativo:To reference a Visual C++ Runtime framework package in your app:

    1. Acesse a pasta de instalação do pacote de estrutura listada acima da versão do Visual C++ Runtime usada pelo aplicativo.Go to the framework package install folder listed above for the version of the Visual C++ Runtime used by your app.

    2. Abra o arquivo SDKManifest.xml na pasta, localize o atributo FrameworkIdentity-Debug ou FrameworkIdentity-Retail (dependendo se está usando a versão de depuração ou de varejo do tempo de execução) e copie os valores Name e MinVersion desse atributo.Open the SDKManifest.xml file in that folder, locate the FrameworkIdentity-Debug or FrameworkIdentity-Retail attribute (depending on whether you're using the debug or retail version of the runtime), and copy the Name and MinVersion values from that attribute. Por exemplo, este é o atributo FrameworkIdentity-Retail do pacote de estrutura VC 14.0 atual.For example, here's the FrameworkIdentity-Retail attribute for the current VC 14.0 framework package.

      FrameworkIdentity-Retail = "Name = Microsoft.VCLibs.140.00.UWPDesktop, MinVersion = 14.0.27323.0, Publisher = 'CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US'"
      
    3. No manifesto do pacote do aplicativo, adicione o seguinte elemento <PackageDependency> no nó <Dependencies>.In the package manifest for your app, add the following <PackageDependency> element under the <Dependencies> node. Assegure-se de substituir os valores Name e MinVersion pelos valores copiados na etapa anterior.Make sure you replace the Name and MinVersion values with the values you copied in the previous step. O exemplo a seguir especifica uma dependência da versão atual do pacote de estrutura VC 14.0.The following example specifies a dependency for the current version of the VC 14.0 framework package.

      <PackageDependency Name="Microsoft.VCLibs.140.00.UWPDesktop" MinVersion="14.0.27323.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
      
  • O aplicativo contém uma lista de atalhos personalizada.Your application contains a custom jump list. Ao usar a lista de atalhos, é importante ter em mente vários problemas e limitações.There are several issues and caveats to be aware of when using jump lists.

    • A arquitetura do aplicativo não corresponde ao sistema operacional.Your app's architecture does not match the OS. No momento, as listas de atalhos não funcionam corretamente se as arquiteturas do aplicativo e do sistema operacional não correspondem (por exemplo, um aplicativo x86 em execução no Windows x64).Jump lists currently do not function correctly if the application and OS architectures do not match (e.g., an x86 application running on x64 Windows). Atualmente não há uma solução alternativa diferente da recompilação do aplicativo para a arquitetura correspondente.At this time, there is no workaround other than to recompile your application to the matching architecture.

    • O aplicativo cria entradas da lista de atalhos e chama ICustomDestinationList::SetAppID ou SetCurrentProcessExplicitAppUserModelID .Your application creates jump list entries and calls ICustomDestinationList::SetAppID or SetCurrentProcessExplicitAppUserModelID. Não defina AppID de forma programática no código.Do not programmatically set your AppID in code. Isso fará com que as entradas da lista de atalhos não sejam exibidas.Doing so will cause your jump list entries to not appear. Se o aplicativo precisar de uma ID personalizada, especifique-a usando o arquivo de manifesto.If your application needs a custom Id, specify it using the manifest file. Veja Empacotar manualmente um aplicativo da área de trabalho para obter instruções.Refer to Package a desktop application manually for instructions. A AppID de seu aplicativo é especificada na seção YOUR_PRAID_HERE.The AppID for your application is specified in the YOUR_PRAID_HERE section.

    • O aplicativo adiciona um link de shell de lista de atalhos que faz referência a um executável no pacote.Your application adds a jump list shell link that references an executable in your package. Você não pode iniciar executáveis diretamente em seu pacote a partir de uma lista de atalhos (com a exceção do caminho absoluto do .exe do próprio aplicativo).You cannot directly launch executables in your package from a jump list (with the exception of the absolute path of an app’s own .exe). Registre um alias de execução do aplicativo (que permite que o aplicativo da área de trabalho empacotado seja iniciado por uma palavra-chave como se estivesse no PATH) e, em vez disso, defina o caminho de destino do link para o alias.Instead, register an app execution alias (which allows your packaged desktop application to start via a keyword as though it were on the PATH) and set the link target path to the alias instead. Para obter detalhes sobre como usar a extensão appExecutionAlias, consulte Integrar o aplicativo da área de trabalho com o Windows 10.For details on how to use the appExecutionAlias extension, see Integrate your desktop application with Windows 10. Observe que, se você precisar que os ativos do link na lista de atalhos correspondam ao .exe original, defina os ativos, como o ícone, usando SetIconLocation e o nome de exibição com PKEY_Title como você faria para outras entradas personalizadas.Note that if you require assets of the link in jump list to match the original .exe, you will need to set assets such as the icon using SetIconLocation and the display name with PKEY_Title like you would for other custom entries.

    • O aplicativo adiciona entradas de lista de atalhos que fazem referência a ativos no pacote do aplicativo por caminhos absolutos.Your application adds a jump list entries that references assets in the app's package by absolute paths. O caminho de instalação de um aplicativo pode mudar quando os pacotes dele são atualizados, alterando o local dos ativos (como ícones, documentos, executáveis e assim por diante).The installation path of an application may change when its packages are updated, changing the location of assets (such as icons, documents, executable, and so on). Se as entradas da lista de atalhos fazem referência a esses ativos por caminhos absolutos, o aplicativo deve atualizar sua lista de atalhos periodicamente (por exemplo, na inicialização do aplicativo) para garantir que os caminhos sejam resolvidos corretamente.If jump list entries reference such assets by absolute paths, then the application should refresh its jump list periodically (such as on application launch) to ensure paths resolve correctly. Como alternativa, use as APIs UWP Windows.UI.StartScreen.JumpList, que permitem referenciar ativos de cadeias de caracteres e imagens usando o esquema de URI package-relative ms-resource (que também reconhece linguagem, DPI e alto contraste).Alternatively, use the UWP Windows.UI.StartScreen.JumpList APIs instead, which allow you to reference string and image assets using the package-relative ms-resource URI scheme (which is also language, DPI, and high contrast aware).

  • O aplicativo inicia um utilitário para executar tarefas.Your application starts a utility to perform tasks. Evite iniciar utilitários de comando, como o PowerShell e o Cmd.exe.Avoid starting command utilities such as PowerShell and Cmd.exe. Na verdade, se os usuários instalarem o aplicativo em um sistema com o Windows 10 S, o aplicativo não será capaz de iniciá-los.In fact, if users install your application onto a system that runs the Windows 10 S, then your application won’t be able to start them at all. Isso pode bloquear o envio do aplicativo para a Microsoft Store porque todos os aplicativos enviados para a Microsoft Store devem ser compatíveis com o Windows 10 S.This could block your application from submission to the Microsoft Store because all apps submitted to the Microsoft Store must be compatible with Windows 10 S.

    Com frequência, iniciar um utilitário pode possibilitar uma forma conveniente de obter informações do sistema operacional, acessar o registro ou acessar as funcionalidades do sistema.Starting a utility can often provide a convenient way to obtain information from the operating system, access the registry, or access system capabilities. No entanto, em vez disso, você pode usar APIs UWP para realizar esses tipos de tarefas.However, you can use UWP APIs to accomplish these sorts of tasks instead. Essas APIs são mais eficientes porque não precisam de um executável separado para funcionarem mas, mais importante, elas evitam que o aplicativo saia do pacote.Those APIs are more performant because they don’t need a separate executable to run, but more importantly, they keep the application from reaching outside of the package. O design do aplicativo continua de acordo com o isolamento, a confiança e a segurança derivadas do aplicativo empacotado e o aplicativo vai se comportar como esperado nos sistemas com o Windows 10 S.The app’s design stays consistent with the isolation, trust, and security that comes with an application that you've packaged, and your application will behave as expected on systems running Windows 10 S.

  • O aplicativo tem suplementos, plug-ins ou extensões.Your application hosts add-ins, plug-ins, or extensions. Em muitos casos, as extensões do tipo COM provavelmente continuarão a funcionar desde que a extensão não tenha sido empacotada e seja instalada com confiança total.In many cases, COM-style extensions will likely continue to work as long as the extension has not been packaged, and it installs as full trust. Isso acontece porque esses instaladores podem usar os recursos de confiança total para modificar o Registro e colocar arquivos de extensão no local em que o aplicativo host espera encontrá-los.That's because those installers can use their full-trust capabilities to modify the registry and place extension files wherever your host application expects to find them.

    Entretanto, se essas extensões forem empacotadas e instaladas como um pacote de aplicativo do Windows, elas não funcionarão já que cada pacote (o aplicativo host e a extensão) estará isolado um do outro.However, if those extensions are packaged, and then installed as a Windows app package, they won't work because each package (the host application and the extension) will be isolated from one another. Para saber mais sobre como os aplicativos são isolados do sistema, consulte Bastidores da Ponte de Desktop.To read more about how applications are isolated from the system, see Behind the scenes of the Desktop Bridge.

    Todos os aplicativos e extensões que os usuários instalam em um sistema com o Windows 10 S devem ser instalados como pacotes do Aplicativo do Windows.All applications and extensions that users install to a system running Windows 10 S must be installed as Windows App packages. Portanto, se pretende empacotar suas extensões ou planeja incentivar colaboradores a empacotá-las, considere como você pode facilitar a comunicação entre o pacote do aplicativo host e qualquer outro pacote de extensão.So if you intend to package your extensions, or you plan to encourage your contributors to package them, consider how you might facilitate communication between the host application package and any extension packages. Uma forma de conseguir fazer isso é usar um serviço de aplicativo.One way that you might be able to do this is by using an app service.

  • Seu aplicativo gera código.Your application generates code. O aplicativo pode gerar código que é consumido na memória, mas evita gravar código gerado no disco porque o processo de Certificação de Aplicativos Windows não pode validar o código antes do envio do aplicativo.Your application can generate code that it consumes in memory, but avoid writing generated code to disk because the Windows App Certification process can't validate that code prior to app submission. Além disso, os aplicativos que gravam código no disco não funcionarão corretamente no Windows 10 S. Isso pode impedir que o aplicativo seja enviado para a Microsoft Store, já que todos os aplicativos enviados para a Microsoft Store precisam ser compatíveis com o Windows 10 S.Also, apps that write code to disk won’t run properly on systems running Windows 10 S. This could block your application from submission to the Microsoft Store because all apps submitted to the Microsoft Store must be compatible with Windows 10 S.

Importante

Depois de criar o pacote do aplicativo do Windows, teste o aplicativo para garantir que ele funcione corretamente em sistemas com Windows 10 S. Todos os aplicativos enviados para a Microsoft Store precisam ser compatíveis com o Windows 10 S. Os aplicativos que não são compatíveis não serão aceitos na Microsoft Store.After you've created your Windows app package, please test your application to ensure that it works correctly on systems that run Windows 10 S. All apps submitted to the Microsoft Store must be compatible with Windows 10 S. Apps that aren't compatible won't be accepted in the store. Veja Testar o aplicativo do Windows para o Windows 10 S.See Test your Windows app for Windows 10 S.