Inicie programas mais rápidos instalados usando ngen.exe

Data de criação de página :

ambiente

Estúdio Visual
  • Visual Studio Community 2017
  • Visual Studio Community 2019
WiX Toolset
3.11.2

◗ Funciona em outras versões, mas não é confirmado

Inicialmente

O aplicativo .NET Framework cria e instala imagens nativas usando Ngen.exe. Você pode acelerar a inicialização e a execução.

No entanto, para criar uma imagem nativa, você deve usar Ngen.exe no ambiente onde você executa o aplicativo. Você não pode distribuir uma imagem pré-imagem. Portanto, você quer que os usuários executem Ngen.exe manualmente? Deve ser executado durante a instalação.

Esta seção descreve as etapas para executar Ngen.exe no exe ou dll de destino nas configurações wiX durante a instalação.

Observe que o Ngen.exe é válido apenas para aplicações do .NET Framework e é originalmente originalmente original. Não faz sentido usá-lo para aplicativos .NET Core.

Preparação com antecedência

  • Suponha que você tenha criado um instalador com WiX.

Adicionar referência à biblioteca

Adicione WixNetFxExtension.dll à sua referência. O caminho da pasta é C:\Program Files (x86)\WiX Toolset v3.11\bin.

image

image

image

Editar Product.wxs

Adicione configurações aos arquivos que executam ngen.exe.

Wix/@xmlns

Adicione o namespace 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">

Adicionando parâmetros a componentes (arquivos) que criam imagens nativas

Adicionar netfx:NativeImage aos elementos infantis do arquivo de destino.

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

Se exe ou dll se referir (depende) de outros dlls devido à natureza de Ngen.exe, você pode especificar apenas o ex ou dll do qual você deseja se referir a ele. Por exemplo, se A.exe se refere a B.dll, definir NativeImage para A.exe só se aplica automaticamente a B.dll.

No entanto, se A.exe carrega dinamicamente B.dll usando Assembly.Load e afins após a execução, B.dll não é uma dependência. O uso de Ngen.exe para A.exe não compila o B.dll. Neste caso, defina nativeImage para B.dll também.

@Id

Nome de identificação da imagem nativa. Não se sobreponha a outras IDs.

@Platform

Especifique "32bit", "64bit" ou "all". Altere as configurações em 32bit ou 64bit para o aplicativo que você está instalando. Tudo cria ambas as imagens nativas, então especifique bibliotecas que mudam de acordo com o estado de execução, como "Qualquer CPU".

@Priority

Quando executar ngen.exe durante a instalação. Você pode especificar 0-3, mas para mais informações, consulte o site oficial.

Resumo

Depois de criar o instalador, você pode ver que, se a instalação for bem sucedida, uma imagem nativa será criada e registrada na pasta de montagem.

image