Tăng tốc độ khởi động của các chương trình được cài đặt bằng .exe Ngen

Ngày tạo trang :

Môi trường

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

* Nó áp dụng cho các phiên bản khác, nhưng chưa được xác nhận

Bắt đầu

Ứng dụng khung .NET sử dụng .exe Ngen để tạo và cài đặt hình ảnh gốc. Bạn có thể tăng tốc độ khởi động và chạy.

Tuy nhiên, để tạo hình ảnh gốc, bạn phải sử dụng .exe Ngen trong môi trường chạy ứng dụng Nội dung được hình ảnh trước không thể được phân phối. Vì vậy, bạn có muốn người dùng chạy .exe Ngen theo cách thủ công không? Nó phải chạy trong quá trình cài đặt chuyên biệt.

Phần này mô tả quá trình thực hiện .exe Ngen cho exe đích hoặc dll trong cài đặt WiX trong quá trình cài đặt.

Lưu ý rằng .exe Ngen chỉ hợp lệ cho các ứng dụng khung .NET và ban đầu là hội đồng gốc. Điều này không có ý nghĩa đối với ứng dụng cốt lõi .NET.

Chuẩn bị trước

  • Giả sử bạn đã tạo trình cài đặt trong WiX.

Thêm tham chiếu thư viện

Thêm phần mở rộng WixNetFx .dll thêm tham chiếu. Đường dẫn thư mục là "C:\Chương trình Tệp (x86)\WiX Bộ công cụ v3.11_bin".

image

image

image

Chỉnh sửa sản phẩm.wxs

Thêm cài đặt cho tệp chạy .exe Ngen.

Wix/@xmlns

Thêm không gian tên mở rộng NetFx.

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
		 xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">

Thêm tham số vào các thành phần tạo hình ảnh gốc (tệp)

Thêm netfx: Các yếu tố con của hình ảnh gốc vào tệp đích.

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

Nếu exe hoặc dll tham chiếu (phụ thuộc) dll khác do bản chất của .exe Ngen, chỉ cần chỉ định exe hoặc dll được tham chiếu. Ví dụ: nếu A.exe tham chiếu đến .dll B, chỉ đặt hình ảnh gốc thành A.exe sẽ tự động bao gồm .dll B.

Tuy nhiên, nếu A.exe tải .dll B động như hội đồng.load sau khi thực hiện, .dll B không phải là phụ thuộc. Sử dụng .exe Ngen trong .exe A không biên dịch .dll B. Trong trường hợp này, bạn sẽ thiết lập hình ảnh gốc trong .dll B.

@Id

Tên có thể phân biệt của hình ảnh gốc. Không chồng chéo lên các ID khác.

@Platform

Chỉ định "32 bit", "64 bit" hoặc "Tất cả". Thay đổi cài đặt 32-bit hoặc 64 bit của ứng dụng bạn muốn cài đặt. all tạo ra hai hình ảnh gốc, vì vậy hãy chỉ định thư viện được chuyển đổi dựa trên trạng thái thực hiện, chẳng hạn như "CPU tùy ý".

@Priority

Khi nào chạy .exe Ngen khi cài đặt. Bạn có thể chỉ định 0 đến 3, nhưng để biết thêm thông tin, hãy xem trang web chính thức.

Tóm tắt

Sau khi bạn tạo trình cài đặt, bạn có thể xác minh rằng việc cài đặt chuyên biệt đã thành công, cho dù hình ảnh gốc đã được tạo ra và đăng ký nó vào thư mục hội đồng.

image