Запуск програм швидше, інстальованих за допомогою 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.
Змінити 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, але для отримання додаткової інформації, будь ласка, зверніться на офіційний сайт.
Зведення
Після створення інсталятора можна побачити, що якщо інсталяцію буде виконано успішно, у папці складання створюється і реєструється рідне зображення.