Uruchamianie szybszych programów zainstalowanych za pomocą narzędzia Ngen.exe

Data utworzenia strony :

środowisko

Visual Studio
  • Społeczność programu Visual Studio 2017
  • Społeczność programu Visual Studio 2019
Zestaw narzędzi WiX
3.11.2

※ Działa w innych wersjach, ale jest niepotwierdzony

Na początku

Aplikacja .NET Framework tworzy i instaluje obrazy natywne przy użyciu Ngen.exe. Możesz przyspieszyć uruchamianie i wykonywanie.

Jednak aby utworzyć obraz natywny, musisz użyć Ngen.exe w środowisku, w którym uruchamiasz aplikację. Nie można rozpowszechniać wstępnie zdustrysowanych obrazów. Dlatego czy chcesz, aby użytkownicy uruchamiali Ngen.exe ręcznie? Musi być uruchomiony podczas instalacji.

W tej sekcji opisano kroki, które należy wykonać Ngen.exe na docelowym exe lub dll w ustawieniach wiX podczas instalacji.

Należy zauważyć, że Ngen.exe jest prawidłowy tylko dla aplikacji .NET Framework i jest pierwotnie zestawem natywnym. Nie ma sensu używać go do aplikacji .NET Core.

Przygotowanie z wyprzedzeniem

  • Załóżmy, że utworzono instalator za pomocą WiX.

Dodawanie odwołania do biblioteki

Dodaj WixNetFxExtension.dll do swojego odwołania. Ścieżka folderu to C:\Program Files (x86)\WiX Toolset v3.11\bin.

image

image

image

Edytuj Product.wxs

Dodaj ustawienia do plików, w których działa Ngen.exe.

Wix/@xmlns

Dodaj przestrzeń nazw 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">

Dodawanie parametrów do komponentów (plików), które tworzą obrazy natywne

Dodaj netfx:NativeImage do elementów podrzędnych pliku docelowego.

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

Jeśli exe lub dll odnoszą się do (zależy) od innych bibliotek dll ze względu na charakter Ngen.exe, możesz określić tylko exe lub dll, z którego chcesz się do niego odwołać. Na przykład, jeśli A.exe odnosi się do B.dll, ustawienie NativeImage na A.exe automatycznie stosuje się tylko do B.dll.

Jeśli jednak A.exe dynamicznie ładuje B.dll przy użyciu Assembly.Load i tym podobnych po wykonaniu, B.dll nie jest zależnością. Użycie Ngen.exe dla A.exe nie kompiluje B.dll. W takim przypadku ustaw nativeImage na B.dll.

@Id

Nazwa identyfikacyjna obrazu natywnego. Nie nakładaj się na inne identyfikatory.

@Platform

Określ "32bit", "64bit" lub "all". Zmień ustawienia 32-bitowe lub 64-bitowe dla instalowanych aplikacji. Wszystkie tworzą oba obrazy natywne, więc określ biblioteki, które przełączają się zgodnie ze stanem wykonania, takim jak "Dowolny procesor".

@Priority

Kiedy uruchomić Ngen.exe podczas instalacji. Możesz określić 0-3, ale aby uzyskać więcej informacji, zapoznaj się z oficjalną stroną internetową.

Streszczenie

Po utworzeniu instalatora można zobaczyć, że jeśli instalacja zakończy się pomyślnie, obraz natywny zostanie utworzony i zarejestrowany w folderze zestawu.

image