Запуск програм швидше, інстальованих за допомогою Ngen.exe

Дата створення сторінки :

середовище

Візуальна студія
  • Спільнота візуальної студії 2017
  • Спільнота візуальної студії 2019
Набір інструментів WiX
3.11.2

※ Він працює в інших версіях, але не підтверджений

Спочатку

Застосунок .NET Framework створює та інсталює власні зображення за допомогою Ngen.exe. Ви можете прискорити запуск і виконання.

Однак для того, щоб створити рідне зображення, ви повинні використовувати Ngen.exe в середовищі, де ви запускаєте програму. Не можна розповсюджувати попередньо зображене зображення. Таким чином, ви хочете, щоб користувачі запустіть Ngen.exe вручну? Його потрібно запустити під час установки.

У цьому розділі описано кроки для виконання Ngen.exe на цільовому exe або dll в настройках WiX під час інсталяції.

Зверніть увагу, що Ngen.exe дійсний лише для застосунків .NET Framework і спочатку є рідною збіркою. Немає сенсу використовувати його для додатків .NET Core.

Підготовка заздалегідь

  • Припустімо, що ви створили інсталятор з WiX.

Додавання посилання на бібліотеку

Додайте WixNetFxExtension.dll до посилання. Шлях до папки C:\Program Files (x86)\WiX Toolset v3.11\bin.

image

image

image

Змінити product.wxs

Додайте параметри до файлів, які працюють під управлінням Ngen.exe.

Wix/@xmlns

Додайте простір імен 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">

Додавання параметрів до компонентів (файлів), які створюють власні зображення

Додати netfx:NativeImage дочірні елементи цільового файлу.

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

Якщо exe або dll посилаються на (залежить) від інших dll-бібліотек через характер Ngen.exe, ви можете вказати лише exe або dll, з якого ви хочете посилатися на нього. Наприклад, якщо A.exe посилається на B.dll, встановивши nativeImage значення A.exe автоматично застосовується лише до B.dll.

Однак, якщо A.exe динамічно завантажує B.dll за допомогою Assembly.Load тощо після виконання, B.dll не є залежною. Використання Ngen.exe для A.exe не компілює B.dll. У цьому випадку встановіть nativeImage на B.dll, а також.

@Id

Ідентифікаційне ім'я рідного зображення. Не перекриваються інші ідентифікатори.

@Platform

Вкажіть або "32bit", "64bit" або "все". Змініть налаштування на 32bit або 64bit для програми, яку ви встановлюєте. Все створює обидва власні зображення, тому вкажіть бібліотеки, які перемикаються відповідно до стану виконання, наприклад "Any CPU".

@Priority

Коли запускати Ngen.exe під час установки. Ви можете вказати 0-3, але для отримання додаткової інформації, будь ласка, зверніться на офіційний сайт.

Зведення

Після створення інсталятора можна побачити, що якщо інсталяцію буде виконано успішно, у папці складання створюється і реєструється рідне зображення.

image