Start snellere programma's die zijn geïnstalleerd met behulp van Ngen.exe

Aanmaakdatum van pagina :

milieu

Visual Studio
  • Visual Studio-community 2017
  • Visual Studio-community 2019
WiX-toolset
3.11.2

※ Het werkt in andere versies, maar het is onbevestigd

Eerst

De .NET Framework-toepassing maakt en installeert systeemeigen installatiekopieën met behulp van Ngen.exe. U kunt het opstarten en uitvoeren versnellen.

Als u echter een native installatiekopie wilt maken, moet u Ngen.exe gebruiken in de omgeving waarin u de toepassing uitvoert. U kunt een vooraf afgebeelde afbeelding niet distribueren. Wilt u daarom dat gebruikers Ngen.exe handmatig uitvoeren? Het moet tijdens de installatie worden uitgevoerd.

In deze sectie worden de stappen beschreven voor het uitvoeren van Ngen.exe op het doel exe of dll in wiX-instellingen tijdens de installatie.

Ngen.exe is alleen geldig voor .NET Framework-toepassingen en is oorspronkelijk native assembly. Het heeft geen zin om het te gebruiken voor .NET Core-toepassingen.

Voorbereiding vooraf

  • Stel dat u een installatieprogramma hebt gemaakt met WiX.

Bibliotheekreferentie toevoegen

Voeg WixNetFxExtension.dll toe aan uw referentie. Het mappad is C:\Program Files (x86)\WiX Toolset v3.11\bin.

image

image

image

Product.wxs bewerken

Voeg instellingen toe aan bestanden waarop Ngen.exe wordt uitgevoerd.

Wix/@xmlns

Voeg de NetFxExtension-naamruimte toe.

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

Parameters toevoegen aan componenten (bestanden) waarmee native afbeeldingen worden gemaakt

Voeg netfx:NativeImage toe aan de onderliggende elementen van het doelbestand.

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

Als exe of dll verwijst naar (afhankelijk van) andere dll's vanwege de aard van Ngen.exe, kunt u alleen de exe of dll opgeven van waaruit u ernaar wilt verwijzen. Als A.exe bijvoorbeeld verwijst naar B.dll, wordt nativeimage instellen op A.exe alleen automatisch van toepassing op B.dll.

Als A.exe B.dll echter dynamisch laadt met Assembly.Load en dergelijke na uitvoering, is B.dll geen afhankelijkheid. Het gebruik van Ngen.exe voor A.exe compileert de B.dll niet. Stel in dit geval nativeImage ook in op B.dll.

@Id

Identificatienaam van de oorspronkelijke afbeelding. Overlap andere ids niet.

@Platform

Geef "32bit", "64bit" of "all" op. Wijzig de instellingen op 32bit of 64bit voor de applicatie die u installeert. All maakt beide native images, dus geef bibliotheken op die schakelen volgens de uitvoeringsstatus, zoals "Elke CPU".

@Priority

Wanneer moet U Ngen.exe uitvoeren tijdens de installatie. U kunt 0-3 opgeven, maar voor meer informatie verwijzen wij u naar de officiële website.

Samenvatting

Nadat u het installatieprogramma hebt gemaakt, kunt u zien dat als de installatie slaagt, een native installatiekopie wordt gemaakt en geregistreerd in de assemblymap.

image