Démarrez des programmes plus rapides installés à l’aide de Ngen.exe

Date de création de la page :

environnement

Visual Studio
  • Communauté Visual Studio 2017
  • Communauté Visual Studio 2019
Ensemble d’outils WiX
3.11.2

※ Cela fonctionne dans d’autres versions, mais ce n’est pas confirmé

Au début

L’application .NET Framework crée et installe des images natives à l’aide de Ngen.exe. Vous pouvez accélérer le démarrage et l’exécution.

Toutefois, pour créer une image native, vous devez utiliser Ngen.exe dans l’environnement où vous exécutez l’application. Vous ne pouvez pas distribuer une image pré-imagée. Par conséquent, voulez-vous que les utilisateurs exécutent Ngen.exe manuellement ? Il doit être exécuté pendant l’installation.

Cette section décrit les étapes à suivre pour effectuer Ngen.exe sur l’exe ou la dll cible dans les paramètres wiX pendant l’installation.

Notez que Ngen.exe n’est valide que pour les applications .NET Framework et est à l’origine un assembly natif. Il ne sert à rien de l’utiliser pour les applications .NET Core.

Préparation à l’avance

  • Supposons que vous avez créé un programme d’installation avec WiX.

Ajouter une référence de bibliothèque

Ajoutez WixNetFxExtension.dll à votre référence. Le chemin d’accès au dossier est C:\Program Files (x86)\WiX Toolset v3.11\bin.

image

image

image

Modifier Product.wxs

Ajoutez des paramètres aux fichiers qui exécutent Ngen.exe.

Wix/@xmlns

Ajoutez l’espace de noms NetFxExtension.

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
		 xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">

Ajout de paramètres aux composants (fichiers) qui créent des images natives

Ajoutez netfx:NativeImage aux éléments enfants du fichier cible.

<Component Win64="yes" Id="OGGVORBISPROJECT.DLL" DiskId="1" Guid="6A1D2FD8-9FA7-40D5-A0EA-356268B3C0B4">
  <File Id="OGGVORBISPROJECT.DLL" Name="OggVorbisProject.dll" Source="LittleSaviorTrial\Dll\OggVorbisProject.dll">
    <netfx:NativeImage Id="NGEN_OGGVORBISPROJECT.DLL" Platform="64bit" Priority="0"/>
  </File>
</Component>

Si exe ou dll font référence à (dépend) d’autres dll en raison de la nature de Ngen.exe, vous pouvez spécifier uniquement l’exe ou la dll à partir de laquelle vous souhaitez vous y référer. Par exemple, si A.exe fait référence à B.dll, la définition de NativeImage sur A.exe ne s’applique automatiquement qu’à B.dll.

Toutefois, si A.exe charge dynamiquement B.dll à l’aide de Assembly.Load et autres après l’exécution, B.dll n’est pas une dépendance. L’utilisation de Ngen.exe pour A.exe ne compile pas le B.dll. Dans ce cas, définissez également nativeImage sur B.dll.

@Id

Nom d’identification de l’image native. Ne chevauchez pas d’autres D.I.

@Platform

Spécifiez « 32bit », « 64bit » ou « all ». Modifiez les paramètres à 32 bits ou 64 bits pour l’application que vous installez. Tous créent les deux images natives, donc spécifiez les bibliothèques qui basculent en fonction de l’état d’exécution tel que « Any CPU ».

@Priority

Quand exécuter Ngen.exe pendant l’installation. Vous pouvez spécifier 0-3, mais pour plus d’informations, veuillez vous référer au site officiel.

Résumé

Après avoir créé le programme d’installation, vous pouvez voir que si l’installation réussit, une image native est créée et enregistrée dans le dossier d’assembly.

image