เพิ่มความเร็วในการเริ่มต้นโปรแกรมที่ติดตั้งโดยใช้ Ngen.exe

วันที่สร้างเพจ :

สภาพแวดล้อม

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

* มันสามารถใช้ได้กับรุ่นอื่น ๆ แต่ยังไม่ได้ยืนยัน

เริ่มต้นใช้งาน

โปรแกรมประยุกต์ .NET Framework ใช้ Ngen.exe เพื่อสร้าง และติดตั้งอิมเมจดั้งเดิม คุณสามารถเริ่มต้นและทํางานได้เร็วขึ้น

อย่างไรก็ตาม เมื่อต้องการสร้างอิมเมจดั้งเดิม คุณต้องใช้ Ngen .exeในสภาพแวดล้อมที่โปรแกรมประยุกต์ของคุณกําลังทํางานอยู่ ไม่สามารถแจกจ่ายเนื้อหาของรูปภาพล่วงหน้าได้ ดังนั้นคุณต้องการให้ผู้ใช้เรียกใช้.exe Ngen ด้วยตนเองหรือไม่? ต้องรันในระหว่างการติดตั้ง

ส่วนนี้อธิบายกระบวนการดําเนินการ Ngen .exeเป้าหมาย exse หรือ dll ในการตั้งค่า WiX ในระหว่างการติดตั้ง

โปรดสังเกตว่า Ngen.exe ใช้ได้กับโปรแกรมประยุกต์ .NET Framework เท่านั้น และเริ่มต้นด้วยแอสเซมบลีดั้งเดิม ซึ่งไม่มีความหมายสําหรับโปรแกรมประยุกต์หลัก .NET

เตรียมตัวให้พร้อม

  • สมมติว่าคุณได้สร้างโปรแกรมติดตั้งใน WiX แล้ว

เพิ่มการอ้างอิงไลบรารี

เพิ่มส่วนขยาย WixNetFx .dll ไปยังการอ้างอิง เส้นทางโฟลเดอร์คือ "ไฟล์โปรแกรม C:\(x86)\ชุดเครื่องมือ WiX v3.11_bin"

image

image

image

แก้ไขผลิตภัณฑ์.wxs

เพิ่มการตั้งค่าสําหรับแฟ้มที่รัน Ngen.exe

Wix/@xmlns

เพิ่ม NetFx ขยาย namespace

<?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: องค์ประกอบย่อยของอิมเมจดั้งเดิมลงในแฟ้มเป้าหมาย

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

ถ้า exse หรือ dll อ้างอิง (ขึ้นอยู่กับ) dll อื่น ๆ เนื่องจากลักษณะของ Ngen.exe เพียงระบุ exse หรือ dll ที่อ้างอิง ตัวอย่างเช่น ถ้า A.exe อ้างอิง.dll B เฉพาะการตั้งค่ารูปดั้งเดิมเป็น A .exeจะมี.dll B โดยอัตโนมัติ

อย่างไรก็ตาม ถ้า A.exe โหลด.dll B แบบไดนามิก เช่น แอสเซมบลี.load หลังจากการดําเนินการ B .dll ไม่ใช่การขึ้นต่อกัน การใช้ Ngen .exeใน.exe A จะไม่คอมไพล์.dll B ในกรณีนี้ คุณจะตั้งค่าภาพดั้งเดิมใน.dll B

@Id

ชื่อที่สามารถระบุตัวได้ของภาพพื้นเมือง อย่าทับซ้อนกับ ID อื่น

@Platform

ระบุ "32 บิต" "64 บิต" หรือ "ทั้งหมด" เปลี่ยนการตั้งค่า 32 บิตหรือ 64 บิตสําหรับแอปพลิเคชันที่คุณต้องการติดตั้ง all จะสร้างรูปดั้งเดิมสองรูป ดังนั้นโปรดระบุไลบรารีที่สลับตามสถานะการดําเนินการ เช่น "CPU ใดๆ")

@Priority

เมื่อติดตั้ง Ngen .exe คุณสามารถระบุ 0 ถึง 3 แต่โปรดดูที่เว็บไซต์อย่างเป็นทางการสําหรับข้อมูลเพิ่มเติม

สรุป

หลังจากสร้างโปรแกรมติดตั้งแล้ว คุณสามารถตรวจสอบได้ว่าการติดตั้งสําเร็จหรือไม่ และได้สร้างอิมเมจดั้งเดิมและลงทะเบียนไว้ในโฟลเดอร์แอสเซมบลีหรือไม่

image