Desktop App Converter

Obtenir Desktop App Converter

Desktop App Converter (DAC) est un outil qui vous permet de déployer vos applications de bureau existantes écrites pour .NET 4.6.1 ou Win32 sur la plateforme Windows universelle (UWP). Vous pouvez exécuter vos programmes d’installation de bureau à l’aide du convertisseur en mode sans assistance et obtenir un package AppX que vous pouvez installer en utilisant l’applet de commande PowerShell Add-AppxPackage sur votre ordinateur de développement.

Desktop App Converter est désormais disponible dans le Windows Store.

Le convertisseur exécute le programme d’installation de bureau dans un environnement Windows isolé à l’aide d’une nouvelle image de base, fournie dans le cadre du téléchargement du convertisseur. Il capture toutes les E/S du Registre et du système de fichier effectuées par le programme d’installation du bureau et les met sous forme de package comme partie intégrante de la sortie. Le convertisseur génère un AppX avec une identité de package et la possibilité d’appeler une gamme étendue d’API WinRT.

Nouveautés

La dernière version de DAC est la version v1.0.6.0. Nouveautés dans cette mise à jour :

  • Extraction d’icônes : l’outil DAC utilise des icônes dans votre application de bureau pour générer des ressources visuelles utilisées par votre package de l’application convertie.
  • Nettoyage amélioré des images de base développées, des fichiers temporaires, du réseau de conteneurs et de la fonctionnalité de conteneur.
  • Plusieurs résolutions de bogues.

Configuration système requise

Système d’exploitation

  • Mise à jour anniversaire Windows 10 (10.0.14393.0 et versions ultérieures) Professionnel ou Entreprise.

Configuration matérielle

  • Processeur 64 bits (x64)
  • Assistance matérielle à la virtualisation
  • Traduction d’adresse de second niveau (SLAT, Second Level Address Translation)

Ressources nécessaires

Configurer Desktop App Converter

Desktop App Converter repose sur les dernières fonctionnalités de Windows 10. Assurez-vous que vous utilisez la mise à jour anniversaire de Windows 10 (14393.0 ou versions ultérieures).

  1. Téléchargez DesktopAppConverter à partir du Windows Store et le fichier .wim de l’image de base correspondant à votre build.
  2. Exécutez DesktopAppConverter en tant qu’administrateur. Vous pouvez le faire à partir du menu Démarrer en cliquant avec le bouton droit sur la vignette et en sélectionnant Exécuter en tant qu’administrateur sous Plus, ou à partir de la barre des tâches en cliquant avec le bouton droit sur la vignette, puis en cliquant à nouveau avec le bouton droit sur le nom de l’application qui s’affiche et en sélectionnant Exécuter en tant qu’administrateur.
  3. À partir de la fenêtre de la console de l’application, exécutez Set-ExecutionPolicy bypass.
  4. Configurez le convertisseur en exécutant DesktopAppConverter.exe -Setup -BaseImage .\BaseImage-1XXXX.wim -Verbose à partir de la fenêtre de la console de l’application.
  5. Si l’exécution de la commande précédente vous invite à redémarrer, faites-le.

Exécuter Desktop App Converter

  • Téléchargement à partir du Windows Store : utilisez DesktopAppConverter.exe pour exécuter le convertisseur.

Utilisation

DesktopAppConverter.exe
-Installer <String> [-InstallerArguments <String>] [-InstallerValidExitCodes <Int32>]
-Destination <String>
-PackageName <String>
-Publisher <String>
-Version <Version>
[-ExpandedBaseImage <String>]
[-AppExecutable <String>]
[-AppFileTypes <String>]
[-AppId <String>]
[-AppDisplayName <String>]
[-AppDescription <String>]
[-PackageDisplayName <String>]
[-PackagePublisherDisplayName <String>]
[-MakeAppx]
[-LogFile <String>]
[<CommonParameters>]  

Exemple

L’exemple suivant montre comment convertir une application de bureau nommée MyApp par <publisher_name> en un package UWP (AppX).

DesktopAppConverter.exe -Installer C:\Installer\MyApp.exe 
-InstallerArguments "/S" -Destination C:\Output\MyApp -PackageName "MyApp" 
-Publisher "CN=<publisher_name>" -Version 0.0.0.1 -MakeAppx -Verbose

Déployer votre AppX converti

Utilisez l’applet de commande Add-AppxPackage dans PowerShell pour déployer un package d’application (.appx) signé sur un compte d’utilisateur.

Vous pouvez utiliser l’indicateur -Sign dans Desktop App Converter (v0.1.24) pour signer automatiquement votre application convertie. Vous pouvez également vous reporter à Signer votre application de bureau convertie pour découvrir comment auto-signer des packages AppX.

Vous pouvez également utiliser le paramètre -Register de l’applet de commande PowerShell Add-AppXPackage pour effectuer l’installation à partir d’un dossier de fichiers non empaquetés au cours du processus de développement.

Pour plus d’informations sur le déploiement et le débogage de votre application convertie, voir Déployer et déboguer votre application UWP convertie.

Signer votre package .Appx

L’applet de commande Add-AppxPackage nécessite que le package d’application (.appx) déployé soit signé. Utilisez l’indicateur -Sign dans le cadre de la ligne de commande du convertisseur ou SignTool.exe, fourni dans le SDK Microsoft Windows 10, pour signer le package .appx.

Pour obtenir des détails supplémentaires sur la façon de signer votre package .appx, voir Signer votre application de bureau convertie.

Remarque : Si vous essayez de signer un package à l’aide du certificat généré automatiquement, vous devez utiliser le mot de passe par défaut « 123456 ».

Modifier le dossier VFS et la ruche du Registre (facultatif)

Desktop App Converter utilise une approche très classique pour le filtrage des fichiers et du bruit système dans le conteneur. Après une conversion, vous pouvez effectuer les étapes facultatives suivantes :

  1. Examiner le dossier VFS et supprimer les fichiers dont le programme d’installation n’a pas besoin.
  2. Examiner le contenu de Reg.dat et supprimer les clés qui ne sont pas installées/utilisées par l’application.

Si vous apportez des modifications à votre application convertie (comme celles décrites ci-dessus), vous n’avez pas besoin de réexécuter ensuite le convertisseur. Vous pouvez recréer manuellement le package de votre application à l’aide de l’outil MakeAppx et du fichier appxmanifest.xml que Desktop App Converter génère pour l’application. Pour obtenir de l’aide, consultez Convertir manuellement votre application en application UWP à l’aide de Desktop Bridge.

Avertissements

  1. La build de Windows 10 sur la machine hôte doit correspondre à l’image de base que vous avez obtenue lors du téléchargement de Desktop App Converter.
  2. Assurez-vous que le programme d’installation de bureau est dans un répertoire indépendant, car le convertisseur copie tout le contenu du répertoire sur l’environnement Windows isolé.
  3. Actuellement, le Convertisseur d’applications de bureau prend en charge l’exécution du processus de conversion sur système d’exploitation 64 bits uniquement. Vous pouvez déployer les packages .appx convertis sur système d’exploitation 64 bits (x64) uniquement.
  4. Le Convertisseur d’applications de bureau exige que le programme d’installation de bureau soit exécuté en mode sans assistance. Assurez-vous de transmettre l’indicateur de mode silencieux de votre programme d’installation au convertisseur à l’aide du paramètre -InstallerArguments.
  5. La publication d’assemblys Fusion côte à côte publics ne fonctionne pas. Pendant l’installation, une application peut publier des assemblys Fusion côte à côte publics, accessibles à tout autre processus. Lors de la création de contexte d’activation des processus, ces assemblys sont récupérés par un processus système nommé CSRSS.exe. Dans le cas d’un processus converti, la création de contexte d’activation et le chargement de modules de ces assemblys échouent. Les assemblys de boîte de réception, comme ComCtl, sont livrés avec le système d’exploitation. Ainsi, la prise d’une dépendance sur eux est sûre. Les assemblys Fusion côte à côte sont enregistrés dans les emplacements suivants :
    • Registre : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Winners
    • Système de fichiers : %windir%\SideBySide

Problèmes connus

  • Nous sommes actuellement en train d’examiner les erreurs suivantes qui se produisent avec certaines builds du système d’exploitation :

    • E_CREATTING_ISOLATED_ENV_FAILED
    • 
      Si vous rencontrez l’une de ces erreurs, vérifiez que vous utilisez une image de base valide à partir du [Centre de téléchargement](https://aka.ms/converterimages). Si vous utilisez un fichier .wim valide, veuillez nous envoyer vos fichiers journaux à l’adresse converter@microsoft.com pour nous aider dans nos recherches. 
      
      
  • Si vous obtenez une version d’évaluation Windows Insider sur un ordinateur de développement sur lequel était installé Desktop App Converter, l’erreur New-ContainerNetwork: The object already exists peut s’afficher lorsque vous configurez la nouvelle image de base. Pour contourner ce problème, exécutez la commande Netsh int ipv4 reset à partir d’une invite de commandes avec élévation des privilèges, puis redémarrez votre ordinateur.

  • Une application .NET compilée avec l’option de build « AnyCPU » ne peut être installée si l’exécutable principal ou l’une des dépendances ont été placés sous « Program Files » ou « Windows\System32 ». Pour contourner ce problème, utilisez un programme d’installation spécifique à votre architecture (32 bits ou 64 bits) pour générer correctement un package AppX.

Télémétrie d’un Convertisseur d’applications de bureau

Le Convertisseur d’applications de bureau peut collecter des informations sur vous et votre utilisation du logiciel et les envoyer à Microsoft. Vous pouvez en savoir plus sur la collecte et l’utilisation de données de Microsoft dans la documentation des produits et dans la Déclaration de confidentialité Microsoft. Vous acceptez de respecter toutes les dispositions applicables de la Déclaration de confidentialité de Microsoft.

Par défaut, la télémétrie est activée pour le Convertisseur d’applications de bureau. Ajoutez la clé de Registre suivante pour configurer la télémétrie selon un paramètre de votre choix :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DesktopAppConverter
  • Ajoutez ou modifiez la valeur DisableTelemetry à l’aide d’une valeur DWORD définie sur 1.
  • Pour activer la télémétrie, supprimez la clé ou définissez la valeur sur 0.

Utilisation du Convertisseur d’applications de bureau

Voici une liste de paramètres pour le Convertisseur d’applications de bureau. Vous pouvez également afficher cette liste en exécutant :

Get-Help DesktopAppConverter.exe -detailed

Paramètres d’installation

Paramètre Description
-Setup [<SwitchParameter>] Exécute DesktopAppConverter en mode installation. Le mode d’installation prend en charge le développement d’une image de base fournie.
-BaseImage <String> Chemin d’accès complet vers une image de base non développée. Ce paramètre est obligatoire si -Setup est spécifié.
-LogFile <String> [facultatif] Spécifie un fichier journal. S’il est omis, un emplacement temporaire du fichier journal est créé.
-NatSubnetPrefix <String> [facultatif] La valeur de préfixe à utiliser pour l’instance NAT. En règle générale, vous souhaiterez changer cela uniquement si votre ordinateur hôte est attaché à la même plage de sous-réseau que le NetNat du convertisseur. Vous pouvez interroger la configuration actuelle du convertisseur NetNat à l’aide de l’applet de commande Get-NetNat.
-NoRestart [<SwitchParameter>] N’exécutez pas de commande de redémarrage lors de l’exécution du programme d’installation (le redémarrage est nécessaire pour activer la fonctionnalité de conteneur).

Paramètres de conversion

Paramètre Description
-AppInstallPath <String> [optional] Chemin d’accès complet au dossier racine de votre application pour les fichiers installés en cas d’installation (par exemple, « C:\Program Files (x86)\MyApp »).
-Destination <String> La destination souhaitée pour la sortie d’appx du convertisseur : DesktopAppConverter peut créer cet emplacement s’il n’existe pas déjà.
-Installer <String> Le chemin d’accès du programme d’installation de votre application doit être en mesure de s’exécuter sans assistance/silencieusement
-InstallerArguments <String> [facultatif] Une liste séparée par des virgules ou une chaîne d’arguments pour forcer votre programme d’installation à s’exécuter sans assistance/silencieusement. Ce paramètre est facultatif si votre programme d’installation est un fichier msi. Pour obtenir un fichier journal à partir de votre programme d’installation, indiquez ici l’argument de la journalisation pour le programme d’installation, et utilisez le chemin d’accès <log_folder>, qui est un jeton que le convertisseur remplace par le chemin d’accès approprié.

REMARQUE : les indicateurs de mode sans assistance/silencieux et les arguments de journalisation varient selon les technologies d’installation.

Exemple d’utilisation de ce paramètre : -InstallerArguments "/silent /log <log_folder>\install.log" Un autre exemple qui ne crée pas de fichier journal peut ressembler à ceci : -InstallerArguments "/quiet", "/norestart" là encore, vous devez littéralement diriger tous les journaux sur le chemin d’accès du jeton <log_folder> si vous voulez que le convertisseur les capture et les place dans un dossier des journaux finaux.
-InstallerValidExitCodes <Int32> [facultatif] Une liste séparée par des virgules des codes de sortie qui indiquent que votre programme d’installation a été exécuté correctement (par exemple : 0, 1234, 5678). Par défaut, le code est 0 pour les éléments non msi et 0, 1641, 3010 pour les éléments msi.

Paramètres d’identité Appx

Paramètre Description
-PackageName <String> Le nom de votre package d’application Windows universelle
-Publisher <String> L’éditeur de votre package d’application Windows universelle
-Version <Version> Le numéro de version de votre package d’application Windows universelle

Paramètres facultatifs de manifeste Appx

Paramètre Description
-AppExecutable <String> [optional] [facultatif] Nom de l’exécutable principal de votre application (par exemple, « MyApp.exe »).
-AppFileTypes <String> [facultatif] Une liste séparée par des virgules des types de fichiers auxquels l’application sera associée (p. ex., « .txt, .doc », sans les guillemets).
-AppId <String> [facultatif] Spécifie une valeur sur laquelle définir l’ID d’application dans le manifeste appx. Si elle n’est pas spécifiée, elle sera définie à la valeur transmise pour PackageName.
-AppDisplayName <String> [facultatif] Spécifie une valeur sur laquelle définir le nom complet de l’application dans le manifeste appx. Si elle n’est pas spécifiée, elle sera définie à la valeur transmise pour PackageName.
-AppDescription <String> [facultatif] Spécifie une valeur sur laquelle définir la description de l’application dans le manifeste appx. Si elle n’est pas spécifiée, elle sera définie à la valeur transmise pour PackageName.
-PackageDisplayName <String> [facultatif] Spécifie une valeur sur laquelle définir le nom complet du package dans le manifeste appx. Si elle n’est pas spécifiée, elle sera définie à la valeur transmise pour PackageName.
-PackagePublisherDisplayName <String> [facultatif] Spécifie une valeur sur laquelle définir le nom complet de l’éditeur du package dans le manifeste appx. Si elle n’est pas spécifiée, elle sera définie à la valeur transmise pour Publisher.

Autres paramètres de conversion

Paramètre Description
-ExpandedBaseImage <String> [facultatif] Chemin d’accès complet vers une image de base déjà développée.
-MakeAppx [<SwitchParameter>] [facultatif] Un commutateur qui, lorsqu’il est présent, indique à ce script d’appeler MakeAppx sur la sortie.
-LogFile <String> [facultatif] Spécifie un fichier journal. S’il est omis, un emplacement temporaire du fichier journal est créé.
Sign [<SwitchParameter>] [optional] Indique à ce script de signer l’Appx de sortie. Ce commutateur doit être présent en même temps que le commutateur -MakeAppx.
<Common parameters> Cette applet de commande prend en charge les paramètres courants : Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable et OutVariable. Pour plus d’informations, consultez about_CommonParameters.

Paramètres de nettoyage

Paramètre Description
Cleanup [<Option>] Exécute le nettoyage pour les artefacts DesktopAppConverter. Il existe trois options valides pour le mode de nettoyage.
Cleanup All Supprime toutes les images de base développées, supprime les fichiers de conversion temporaires, supprime le réseau de conteneurs et désactive la fonctionnalité Windows facultative, Conteneurs.
Cleanup WorkDirectory Supprime tous les fichiers de conversion temporaires.
Cleanup ExpandedImage Supprime toutes les images de base développées installées sur votre ordinateur hôte.

Architecture de package

Desktop App Converter prend désormais en charge la création de packages d’applications x64 et x86 que vous pouvez installer et exécuter sur des ordinateurs amd64 et x86. Notez que Desktop App Converter doit toujours s’exécuter sur un ordinateur AMD64 pour effectuer une conversion réussie.

Paramètre Description
-PackageArch <String> Génère un package selon l’architecture spécifiée. Les options valides sont « x86 » ou « x64 » ; par exemple, -PackageArch x86. Ce paramètre est facultatif. Si ce paramètre n’est pas spécifié, le Convertisseur d’applications de bureau essaie de détecter automatiquement l’architecture du package. Si la détection automatique échoue, le convertisseur choisit par défaut l’architecture x64.

Exécution de PEHeaderCertFixTool

Au cours du processus de conversion, DesktopAppConverter exécute automatiquement l’outil PEHeaderCertFixTool pour corriger tous les en-têtes PE endommagés. Toutefois, vous pouvez également exécuter PEHeaderCertFixTool sur un appx UWP, des fichiers libres ou un fichier binaire spécifique. Exemple d’utilisation :

PEHeaderCertFixTool.exe <binary file>|<.appx package>|<folder> [/c] [/v]
 /c   -- check for corrupted certificate but do not fix (optional)
 /v   -- verbose (optional)
example1: PEHeaderCertFixTool app.exe
example2: PEHeaderCertFixTool c:\package.appx /c
example3: PEHeaderCertFixTool c:\myapp /c /v

Prise en charge linguistique

Desktop App Converter ne prend pas en charge Unicode. Par conséquent, aucun caractère chinois ou caractères non ASCII ne peut être utilisés avec l’outil.

Voir aussi