Inicie programas mais rápidos instalados usando ngen.exe
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.
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.