Start snellere programma's die zijn geïnstalleerd met behulp van Ngen.exe
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.
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.