شروع برنامه های سریع تر نصب شده با استفاده از Ngen.exe

تاریخ ایجاد صفحه :

محیط

ویژوال استودیو
  • ویژوال استودیو جامعه 2017
  • ویژوال استودیو جامعه 2019
WiX Toolset
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 اشاره به (بستگی دارد) در dlls دیگر با توجه به ماهیت 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 برای برنامه ای که نصب می کنید تغییر دهید. همه هر دو تصویر بومی را ایجاد می کنند، بنابراین کتابخانه هایی را مشخص کنید که با توجه به حالت اجرا مانند "هر CPU" سوئیچ می کنند.

@Priority

چه زمانی برای اجرای Ngen.exe هنگام نصب. شما می توانید 0-3 را مشخص کنید، اما برای کسب اطلاعات بیشتر به وب سایت رسمی مراجعه کنید.

خلاصه

پس از ایجاد نصب کننده، می بینید که در صورت موفقیت نصب، یک تصویر بومی ایجاد شده و در پوشه اسمبلی ثبت شده است.

image