Spusťte rychlejší nainstalované programy pomocí Ngen.exe

Datum vytvoření stránky :

životní prostředí

Visual Studio
  • Komunita sady Visual Studio 2017
  • Visual Studio Community 2019
WiX Toolset
3.11.2

※ Funguje v jiných verzích, ale je nepotvrzené

Nejprve

Aplikace .NET Framework vytváří a instaluje nativní image pomocí Ngen.exe. Můžete urychlit spouštění a provádění.

Chcete-li však vytvořit nativní image, musíte použít Ngen.exe v prostředí, kde aplikaci spustíte. Obrázek s předobrazem nelze distribuovat. Chcete tedy, aby uživatelé spouštěli Ngen.exe ručně? Musí být spuštěn během instalace.

Tato část popisuje kroky k provedení Ngen.exe na cílovém exe nebo dll v nastavení wiX během instalace.

Všimněte si, že Ngen.exe je platná pouze pro aplikace rozhraní .NET Framework a je původně nativní sestavení. Nemá smysl jej používat pro aplikace .NET Core.

Příprava předem

  • Předpokládejme, že jste vytvořili instalační program s WiX.

Přidat odkaz na knihovnu

Přidejte wixNetFxExtension.dll k vašemu odkazu. Cesta ke složce je C:\Program Files (x86)\WiX Toolset v3.11\bin.

image

image

image

Upravit produkt.wxs

Přidejte nastavení do souborů, které spouštěly Ngen.exe.

Wix/@xmlns

Přidejte obor názvů 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">

Přidání parametrů do komponent (souborů), které vytvářejí nativní obrázky

Přidejte netfx:NativeImage do podřízených prvků cílového souboru.

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

Pokud exe nebo dll odkazují (závisí) na jiných dll kvůli povaze Ngen.exe, můžete zadat pouze exe nebo dll, ze kterých na ni chcete odkazovat. Pokud například A.exe odkazuje na B.dll, nastavení NativeImage na A.exe se automaticky vztahuje pouze na B.dll.

Pokud však A.exe dynamicky načte B.dll pomocí Assembly.Load a podobně po spuštění, B.dll není závislost. Použití Ngen.exe pro A.exe nekompiluje B.dll. V tomto případě nastavte nativeImage na B.dll také.

@Id

Identifikační název nativního obrázku. Nepřekrývávejte ostatní ID.

@Platform

Zadejte buď "32bit", "64bit" nebo "all". Změňte nastavení na 32bit nebo 64bit pro aplikaci, kterou instalujete. Všechny vytvoří obě nativní image, takže určete knihovny, které se přepínají podle stavu spuštění, například "Libovolný procesor".

@Priority

Kdy spustit Ngen.exe během instalace. Můžete zadat 0-3, ale další informace naleznete na oficiálních stránkách.

Shrnutí

Po vytvoření instalačního programu uvidíte, že pokud je instalace úspěšná, vytvoří se a zaregistruje se nativní bitová kopie ve složce sestavy.

image